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

ATmega8-wyjscie z przerwania->reset?

5657jz 10 Gru 2010 11:24 1367 3
REKLAMA
  • #1 8849759
    5657jz
    Poziom 14  
    Co może być nie tak, jeśli po wyjściu z przerwania program wraca do poczatku
    funkcji main(). Proszę o podpowiedź.
    Wielkie dzięki JZ


    Kod: Dwa LEDy. LED_1 zapala się i gasnie. LED_2 sterowanie z zewnetrzne
    ZAPAL/ZGAŚ

    ...
    ...
    ISR(USART_RXC_vect )  //SIG_UART_RECV 
    {
          data=UDR;
           if ((data==0x01) && (bit_is_set( PIN(LED_PORT),LED_ZIEL)))  //ZAPAL led
                      PORT(LED_PORT)&=~_BV(LED_ZIEL); //tu przełacza port, kasuje przerwania globalne, przenosi sie do poczatku main()
           if ((data==0x02) && (bit_is_clear( PIN(LED_PORT),LED_ZIEL)))
    	     PORT(LED_PORT)^=_BV(LED_ZIEL);   
           while ( !( UCSRA & (1<<UDRE)) )
                   ;
                   UDR = data;
    }
    
    int main(void)
    {
       DDR(LED_PORT)|=0xC0;  // Po wyjściu startuje z od tej lini          
       PORT(LED_PORT)|=0xC0;
       DDR(MENU_PORT)=0xDE;
       PORT(MENU_PORT)=0xDA;
    
              UART_init(MY_UBRR);		
              SREG|=_BV(I);	    
    
       while(1)
         {
                PORT(LED_PORT)^=_BV(LED_CZER);
                _delay_ms(50);
          } //end while

    Proszę dodać znaczniki code!
    Robak
  • REKLAMA
  • #2 8862240
    rumcajs666
    Poziom 12  
    Nie zamieściłeś istotnych części kodu. Chyba nie masz ograniczenia tutaj?
  • REKLAMA
  • #3 8862288
    _Robak_
    Poziom 33  
    While w przerwaniu i inne takie kwiatki. Proszę się wzorować na dobrych przykładach.
  • #4 14471188
    5657jz
    Poziom 14  
    Zgadzam się z uwagami. Ale takie są poczatki.
REKLAMA