Witam
mamy taki przykładowy kod:
Jest to część sporo większego programu, chciałem tylko zoobrazować o co mnie chodzi.
A więc, jak łatwo sie domyśleć chcę zaczytywać temperaturę z czujnika podłączonego do 1-wire (DS18B20), lecz chcę to robić timerem 'w tle', a następnie podstawiać sobie pod zmienną Temp wartość aby móc później wykonywać pewne akcje w pętli głównej, oczywiście akcje te bedą zależeć od temperatury.
Jeśli chodzi o połączenie DSa z AVRem to jest ono OK, ponieważ jak przeniosę zawartość etykiety do pętli głównej to program działa bdb, ładnie czyta temperature nie ma problemów.
Kod który wkleiłem nie działa, na wyświetlaczu się nic nie pokazuje (nie zostaje podstawiona temperatura do zmiennej Temp, bądz 1-wire sie jakoś zacina i tyle)
Jeśli usunę wszystko z etykiety i np. wstawię tam 'Temp = 8' to działa, timer wykonuje to podstawienie i na wyświetlaczu ukazuje się liczba '8'. Lecz jeśli tylko dodam przez 'Temp = 8' np. 1wreset to już to podstawienie nie działa.
Tak więc, czy ktoś mógłby mnie nieco naprowadzić?
Nie chce czytać 1-wire z poziomu pętli głównej ponieważ nie może mi tam występować opóźnienie (to z 1-wire, 750ms). Tak jak piałem wyżej chce sobie czytać temperaturę w tle pętli głównej.
Dzięki z góry
mamy taki przykładowy kod:
$regfile = "attiny2313.dat"
$crystal = 1000000
Config Lcd = 16 * 1a
Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Porta.1 , Db7 = Porta.0 , E = Portd.2 , Rs = Portd.3
Config 1wire = Portd.0
Config Timer0 = Timer , Prescale = 1
Enable Timer0
Enable Interrupts
On Timer0 Pobierz_temp
Dim wire_read As Integer
Dim Temp As Integer
Do
Cls
Lcd Temp
Waitms 500
Loop
Pobierz_temp:
1wreset
1wwrite &HCC
1wwrite &H44
Waitms 750
1wreset
1wwrite &HCC
1wwrite &HBE
wire_read = 1wread(2)
Temp = wire_read / 16
Return
EndJest to część sporo większego programu, chciałem tylko zoobrazować o co mnie chodzi.
A więc, jak łatwo sie domyśleć chcę zaczytywać temperaturę z czujnika podłączonego do 1-wire (DS18B20), lecz chcę to robić timerem 'w tle', a następnie podstawiać sobie pod zmienną Temp wartość aby móc później wykonywać pewne akcje w pętli głównej, oczywiście akcje te bedą zależeć od temperatury.
Jeśli chodzi o połączenie DSa z AVRem to jest ono OK, ponieważ jak przeniosę zawartość etykiety do pętli głównej to program działa bdb, ładnie czyta temperature nie ma problemów.
Kod który wkleiłem nie działa, na wyświetlaczu się nic nie pokazuje (nie zostaje podstawiona temperatura do zmiennej Temp, bądz 1-wire sie jakoś zacina i tyle)
Jeśli usunę wszystko z etykiety i np. wstawię tam 'Temp = 8' to działa, timer wykonuje to podstawienie i na wyświetlaczu ukazuje się liczba '8'. Lecz jeśli tylko dodam przez 'Temp = 8' np. 1wreset to już to podstawienie nie działa.
Tak więc, czy ktoś mógłby mnie nieco naprowadzić?
Nie chce czytać 1-wire z poziomu pętli głównej ponieważ nie może mi tam występować opóźnienie (to z 1-wire, 750ms). Tak jak piałem wyżej chce sobie czytać temperaturę w tle pętli głównej.
Dzięki z góry