logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

RC5 na ATMega8 i TSOP1736 (nie demoduluje)

Morphix 17 Sie 2010 17:52 1666 1
REKLAMA
  • #1 8408168
    Morphix
    Poziom 10  
    Witam.Postanowiłem zbudować układ dekodujący kod rc5 nadawany z pilota i sterujący podłączonymi urządzeniami.Po przeczytaniu tego:
    http://www.easy-soft.net.pl/zasoby/rc5-dekoder.pdf.

    ,a konkretnie tego fragmentu:
    "w czasie trwania pojedynczego bitu danych (a ściślej półbitu), do odbiornika dotrą 32 impulsy
    nośnej (0,864 ms / 27 μs = 32 impulsy),
    · każda przesyłane słowo ma długość 14 bitów i w związku z tym do odbiornika dotrze 14 x 32
    = 448 impulsów nośnej nadajnika."

    Napisałem programik zliczający pojawienie się stanu niskiego na wyjściu odbiornika.Okazało się że programik po (jednorazowym) nacisnięciu przycisku nalicza liczbę około 5700 (w zależności od tego w którą stronę skieruje pilota).Czyżby TSOP nie demodulował nośnej?A może to mój pilot nie nadaje rc5 tylko coś innego (pilot za 3zł - uniwersalny ale patrzyłem z oryginalnym od Samsunga i jest to samo).Bardzo prosiłbym o pomoc ,ponieważ zależy mi na zbudowaniu tego układu.

    Załączam programik:
    Do sprawdzania ilości użyłem ifa i LEDa ponieważ nie dysponuję wyświetlaczem.
    #include <avr/io.h>
    #include <util/delay.h>
    #include <avr/interrupt.h> 
    
    #define Enable_INT0 GICR |= (1 << INT0); 
    
    volatile int liczba_low;
    
    ISR (INT0_vect)
    {
    liczba_low++;
    }
    
    
    
    int main (void)
    {
    DDRB=0xff;
    Enable_INT0;
    sei();
    while(1)
    {
    
    if(liczba_low>5750)
    {
    PORTB=0xff;
    _delay_ms(1000);
    PORTB=0x00;
    liczba_low=0;
    }
    
    }
    
    }
  • REKLAMA
  • Pomocny post
    #2 8408249
    landy13
    Poziom 31  
    Przyczyna leży zapewne w tym, że nie ustawiasz odpowiednich bitów w rejestrze MCUCR. Te bity to ICS00 i ISC01. Domyślnie są ustawione na wyzwalanie przerwania stanem niskim, więc procesor zlicza całą serię przerwań w czasie trwania stanu niskiego. Przestaw te bity na zbocze (tab 32 str 67 DS)
REKLAMA