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

[atmega16][c] problem z przerwaniem zewnętrznym

saturnim 11 Lis 2009 18:30 1089 1
REKLAMA
  • #1 7246694
    saturnim
    Poziom 10  
    Witam!
    Robię transmisje na podczerwieni i mam problem z przerwaniem zewnętrznym .
    Chce z pomocą przerwań odbierać dane, ale narzazie mam tylko prosty program reagujący na jakąkolwiek zmianę na INT0 , INT1 , program oczywiście nie działa.
    Proszę o pomoc, oto kod :
    
    int main()
    {
      DDRA = 0x11111111;
     //mam diody na dwóch najstarszych bitach palące się gdy jest stan niski
      PORTA= 0x11111111;//gaszę diody 
    
      DDRD = 0x11111111;//na tym porcie mamy INT0 INT1                
      PORTD =0x00000000;                
     
    
      GICR=GICR|0b11000000;//uruchomienei int0 i int1
      MCUCR=(MCUCR|0b00000101)&0b11110101;//wywołanie obsługi przerwania przy każdej zmianie stanu
      sei();//właczenie przerwań
    
      while(1);                
    } 
    
    SIGNAL(SIG_INTERRUPT0)
    {
    	PORTA=PORTA&0b00111111;//zapalanie led
    	
    }
    SIGNAL(SIG_INTERRUPT1)
    {
    	PORTA=PORTA&0b00111111;//zapalanie led
    }
    
    

    Zmianę stanu na INT0 ,INT1 wywołuje przez zwarcie rezystorem do 5v , albo podłączenie czujnika IR
  • REKLAMA
  • #2 7246780
    Krauser
    Poziom 26  
    1. INT0 i INT1 muszą być skonfigurowane jako wejścia (DDRD). Nie znam schematu, ale można też podciągnąć je wewnętrznie do plusa (PORTD).
    2. Testowanie w takim układzie należy wykonać ściągając wejście do masy, bo taki sygnał jest na wyjściu detektorów TFMS przy odbiorze paczki impulsów.
REKLAMA