Witam! Mam takowy problem. Pisze sobie program zegarka polaczonego z termometrem oraz wspolpracujacym z komputerkiem (uklad posiada RS oraz kilka wejsc wyjsc). Same zczytywanie z DS'a nie jest dla mnie problemem - jezeli program jest wielka petla typu:
Do
Gosub 1wire
Gosub I2c_read
Gosub Lcd_wys
Loop
to wszystko dziala. Jednak chciałem zrobić to na przerwaniu - układ będze się wymieniał danymi z komputerem i byłoby mi to bardziej przydatne. Przerwanie ustawiłem na co 1s (żeby napewno się DS wyrobił chociaż u mnie spokojnie w 200ms wszystkie te operacje się zdążą wykonać - sprawdziałem ile czasu trwa jedna pętla. I zaczynają się schody bo błędnie zczytuje z DS'a (pokazuje zawsze -0,5'C). Co ciekawe zmienna Err ciągle jest 0 - nawet jak wyjmę DS'a!! Czy ktoś wie żeby przerwanie mogło zakłucać pracę 1wire? Proc to ATMega8, 1wire na Portb.1. Układ napewno się wyrabia bo wpisałem sobie aby migał mi podświetlaniem po każdym pełnym wykonaniu przerwania - więc wszystko się wyrabia ale nie działa... ma ktoś pomysły?
Pozdrawiam
Piotr
Do
Gosub 1wire
Gosub I2c_read
Gosub Lcd_wys
Loop
to wszystko dziala. Jednak chciałem zrobić to na przerwaniu - układ będze się wymieniał danymi z komputerem i byłoby mi to bardziej przydatne. Przerwanie ustawiłem na co 1s (żeby napewno się DS wyrobił chociaż u mnie spokojnie w 200ms wszystkie te operacje się zdążą wykonać - sprawdziałem ile czasu trwa jedna pętla. I zaczynają się schody bo błędnie zczytuje z DS'a (pokazuje zawsze -0,5'C). Co ciekawe zmienna Err ciągle jest 0 - nawet jak wyjmę DS'a!! Czy ktoś wie żeby przerwanie mogło zakłucać pracę 1wire? Proc to ATMega8, 1wire na Portb.1. Układ napewno się wyrabia bo wpisałem sobie aby migał mi podświetlaniem po każdym pełnym wykonaniu przerwania - więc wszystko się wyrabia ale nie działa... ma ktoś pomysły?

Pozdrawiam
Piotr