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

Problem z przerwaniem USART0_RXC_vect (Atmega162)

sevotharte 05 Lut 2011 11:47 819 2
REKLAMA
  • #1 9106016
    sevotharte
    Poziom 10  
    Witam.

    Mam taki problem. Próbuję się bawić z UARTem. Program (tzw. echo) działa poprawnie - sprawdzam za pomocą Br@y terminala. Natomiast chciałem pójść dalej i wykorzystać przerwanie od odebrania. no i niestety mi niezbyt to działa (w sensie nie wchodzi w to przerwanie).

    A oto kod:
    
    #include <avr/io.h> 
    #include <avr/iom162.h>
    #include <avr/interrupt.h>
    
    #define USART_BAUDRATE 9600 
    #define BAUD_PRESCALE (((F_CPU / (USART_BAUDRATE * 16UL))) - 1) 
    
    //deklaracja zmiennych globalnych
    unsigned char byte;
    
    //załączenie UARTA
    void UART_Init(void)
    {
    	//ustaw prędkość transmisji
    	  /* Set baud rate */ 
      UBRR0H = (BAUD_PRESCALE >> 8); 
      UBRR0L = BAUD_PRESCALE; 
      /* Enable receiver and transmitter */ 
      UCSR0B = (1<<RXEN0)|(1<<TXEN0)|(1<<RXCIE0); 
      /* Set frame format: 8data, 1stop bit */ 
      UCSR0C = (1<<URSEL0)|(3<<UCSZ00);
    	
    }
    
    
    SIGNAL(USART0_RXC_vect) //Przerwanie od odebrania USART0
    {
    	PORTB ^=_BV(0);
    	byte = UDR0;
    }
    
    
    
    int main (void) 
    { 
    	UART_Init();
    	sei();
    	for (;;) // Loop forever 
    	{ 
         
    	}    
    }
    


    Po odebraniu czegokolwiek co wysyłam (np za pomocą tego Br@y terminala) powinna mi się świecić dioda (zmieniać stan po każdym odebraniu)

    co może być przyczyną nie zadziałania przerwania?
  • REKLAMA
  • Pomocny post
    #2 9106076
    dawid512
    Poziom 32  
    A gdzie konfiguracja DDR dla portu B?
  • #3 9106110
    sevotharte
    Poziom 10  
    ... ;) już myślałem, że coś strasznie porąbałem, a tu taki malutki błąd. Dzięki ;)

    Pozdrawiam
REKLAMA