Потому что так - правильно. Я вот никак не пойму, где в Автокаде кнопка "примотать изолентой по месту" :pСообщение от LazyCamel
Кстати, я недавно экспериментировал с прямым подключением фотодиода к порту процессора. В принципе фотодиод - это конденсатор (~20pF) с параллельным источником тока (обратное смещение), величина которого пропорциональна освещенности. Заряжаем емкость фотодиода от порта (против шерсти) и потом, в плотном цикле, ждем пока он разрядится и вычисляем время разрядки (обратно пропорциональное освещенности).
Получается очень и очень приличная точность. До 9-10бит - я был поражен. Теперь все что будет требовать фотосеноров буду строить на этой основе. Простота железа - фотодиод, подключеный "наоборот" к двунаправленному порту (- на землю) и все!
Идею подсмотрел здесь: http://www.merl.com/publications/TR2003-035/
Дарю код для PICa 16F серии
;
; PORTA.2 ----|<|------ GND (or another port pin that held low throughout this code)
; add port init, startup, RS232, delay code as needed
bsf PORTA,2 ; set pin PORTA.2 high
MainLoop
; LEDcntr = 0
clrf LEDcntr1
clrf LEDcntr2
clrf LEDcntr3
clrf LEDcntr4
bsf STATUS, RP0 ; Select Bank 1
bcf TRISA,2 ; Set PORTA.2 as output
call Delay10us ; charge time - 10uS is enough
bsf TRISA,2 ; Set PORTA.2 as input
bcf STATUS, RP0 ; Select Bank 0
CountLoop
; LEDcntr++
incf LEDcntr4,F ; LSB
skpnz
incf LEDcntr3,F
skpnz
incf LEDcntr2,F
skpnz
incf LEDcntr1,F ; MSB
btfsc PORTA,2 ; has LED discharged?
goto CountLoop ; not yet
; LEDcntr -> RS232
movf LEDcntr1,W
call TxRS232
movf LEDcntr2,W
call TxRS232
movf LEDcntr3,W
call TxRS232
movf LEDcntr4,W
call TxRS232
goto MainLoop




Ответить с цитированием