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

Jak dekodować sygnał RC5 w C bez użycia timera?

Anderian 12 Paź 2006 13:27 1887 4
REKLAMA
  • #1 3109644
    Anderian
    Poziom 18  
    Posty: 406
    Pomógł: 9
    Ocena: 3
    moze ktos z Was ma dzialajacy dekoder sygnalu rc5 ktory nie wykorzystuje timera ??

    moj niestety po zmianie polecenia:
    #define WAITFORTIMER()  { while ( timerflag == 0); timerflag = 0; }
    
     volatile timerflag;  
    
    SIGNAL(SIG_OVERFLOW0)  //przepelneinie timera2
    {
        timerflag = 1;               // set global variable 
        TCNT0 = 0xF0;         // reset counter to get this interrupt again 
    }


    na
    
    #define WAITFORTIMER() 	{ for(licznik=0; licznik<163; licznik++);}
    


    przestal dzialac a niby opoznienia sa takie same -mierzylem miernikiem z pomiarem czestotliwosci (na wewnetrznym oscylatorze 9,6Mhz)

    moze ktos wie jak dokladnie zamienic albo odmierzyc 111us ?? bez timera
  • REKLAMA
  • #2 3110966
    greatlukas
    Poziom 14  
    Posty: 122
    Pomógł: 3
    Ocena: 7
    a może tak:
    _delay_us(111);

    (z biblioteki delay.h)
  • REKLAMA
  • #3 3110968
    Anderian
    Poziom 18  
    Posty: 406
    Pomógł: 9
    Ocena: 3
    standardowa w winavr ??
  • REKLAMA
  • Pomocny post
    #4 3110993
    greatlukas
    Poziom 14  
    Posty: 122
    Pomógł: 3
    Ocena: 7
    tak, w katalogu WinAVR\avr\include\util
    tylko musisz go wyedytować i ustawić taki kwarc jakiego używasz, standardowo jest # define F_CPU 1000000UL
    no i poczytaj komentarze, bo do różnych kwarców, są rózne maxymalne wartości jakie można podać do tej funkcji i wtedy może być potrzebne np użycie:
    _delay_us(60);
    _delay_us(51);
    żeby uzyskać 111us
  • #5 3111245
    Anderian
    Poziom 18  
    Posty: 406
    Pomógł: 9
    Ocena: 3
    dziala dzieki
REKLAMA