Witam.
Opracowałem prosty pilot podczerwieni protokołu RC-5 na ATTiny44, z pięcioma przyciskami (Standby, Vol+/Vol-, Ch+/Ch-). Wszystko działa (nośna generowana z PWM na Timer0, wybudzanie przerwaniami na pinach, kody w pamięci programu, duże oszczędzanie energii), ale chciałbym jeszcze bardziej udoskonalić oprogramowanie.
Mianowicie, niezbędne opóźnienia są na razie wykonane na funkcjach _delay_us(), a chciałbym wykorzystać uśpienie w trybie Idle, z którego "procek" byłby wybudzony przez przerwanie CTC Timera1. Oto kod:
W takiej formie jak powyżej program nie działa. Mam ATMega32 zaprogramowanego do odczytu kodów, i wychodzą komendy kompletnie inne niż zaprogramowane... Co mogłem zrobić źle?
PS. "Button" to nazwa moich klas do obsługi przycisków (wraz z redukcją drgań styków).
Opracowałem prosty pilot podczerwieni protokołu RC-5 na ATTiny44, z pięcioma przyciskami (Standby, Vol+/Vol-, Ch+/Ch-). Wszystko działa (nośna generowana z PWM na Timer0, wybudzanie przerwaniami na pinach, kody w pamięci programu, duże oszczędzanie energii), ale chciałbym jeszcze bardziej udoskonalić oprogramowanie.
Mianowicie, niezbędne opóźnienia są na razie wykonane na funkcjach _delay_us(), a chciałbym wykorzystać uśpienie w trybie Idle, z którego "procek" byłby wybudzony przez przerwanie CTC Timera1. Oto kod:
Kod: text
W takiej formie jak powyżej program nie działa. Mam ATMega32 zaprogramowanego do odczytu kodów, i wychodzą komendy kompletnie inne niż zaprogramowane... Co mogłem zrobić źle?
PS. "Button" to nazwa moich klas do obsługi przycisków (wraz z redukcją drgań styków).