Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

konfiguracja timera dla IRDA na atmega8

wojtektorr 15 Lut 2014 11:29 714 3
  • #1 15 Lut 2014 11:29
    wojtektorr
    Poziom 14  

    Potrzebuję pomocy w konfiguracji Timer1 (ten mam wolny) ewentulanie modyfikacja obecnej konfiguracji Timer0. Obecna konfiguracja jest dla odliczania odpowiedniego czasu dla ramek RC5 odbieranych przez odbiornik TSOP322 przy taktowaniu procesora z F_CPU=8MHz, w celu oszczędności energii chcę zrobić odbieranie przy częstotliwości 1MHz. Jak widać z obsługi przerwania należy wygenerować przerwanie co 32us. Ale wydaję mi się jako początkującemu że nie da się tego zrobić przy użyciu Timer0 (1/1MHz)*256=256us a ja potrzebuje odliczyć 32us, trzeba by zastosować rejestr porównania OCR którego w TIMER0 nie ma). Pomocy.

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0 3
  • #2 15 Lut 2014 12:15
    tmf
    Moderator Mikrokontrolery Projektowanie

    Oszczędność energii i ATMega8? Żarty :)
    Jeśli oszczędność energii jest priorytetem to przede wszystkim zmień procesor. Jeśli nie jest, to nie trać czasu na akademickie rozważania. Kodów do RC5 masz w Internecie sporo. Zastanó się też czy jesteż w stanie w ciągu 32 us (to raptem mniej niż 32 instrukcje asemblera) zareagować na zdarzenie - podpowiem ci, że w formie przerwania, jeszcze napisanego w C jest to absolutnie niemożliwe.

    0
  • #3 15 Lut 2014 13:59
    wojtektorr
    Poziom 14  

    Jeżeli miałbym robić układ od początku to zastosowałbym bardziej oszczędny sposób. Jednak zmuszony jestem do modyfikacji programowej tego co jest zrobione. Proszę jedynie o konfiguracje Timera1 z przerwaniem co 32us.

    0
  • #4 15 Lut 2014 14:12
    el2010tmp
    Poziom 25  

    Ustaw w przerwaniu rejestr:
    TCNT0=224;// 256-32
    lub skorzystaj z timer1 i OCR jednak jak pisał tmf

    tmf napisał:
    Zastanó się też czy jesteż w stanie w ciągu 32 us (to raptem mniej niż 32 instrukcje asemblera) zareagować na zdarzenie - podpowiem ci, że w formie przerwania, jeszcze napisanego w C jest to absolutnie niemożliwe.

    Można to obejść jedynie zwiększając częstotliwość taktowania.

    0