Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[C] Atmega32 przerwania. Zmienna nie działa w programie.

Miar 11 Nov 2010 14:42 1692 3
  • #1
    Miar
    Level 12  
    Problem polega na tym , że zmienna nrzn działa poprawnie tylko w ciele funkcji przerwania, w pętli programu już nie. Jej wartość wynosi 0 poza przerwaniem.
    Code:

    //Biblioteki
    #include <avr\io.h>
    #include <util/delay.h>
    #include <avr\pgmspace.h>
    #include <avr/signal.h>   
    #include <avr/interrupt.h>
    //Zmienne
    unsigned char znak [10] PROGMEM = {0x3,0x9f,0x25,0x0D,0x99,0x49,0x41,0x1F,0x1,0x09,};
    unsigned char nrzn ;
    unsigned int licz;
    //Program

    int main(void)
    {

    sei();
    DDRD = 0b1111;
    DDRA = 255;
    PORTD =0XE;
    TCCR1B =4;
    TIMSK =1<<TOIE1;
    TCCR0 = 0x4D;

       
       for(;;)
       {
       _delay_loop_2(0xffff);
       PORTC = ~PORTC;
       
       PORTA = pgm_read_byte(&znak[nrzn]);   
       if(nrzn == 10)
       {
       nrzn = 0;
       }
       
       }
    }

    SIGNAL(SIG_OVERFLOW1)
    {
    DDRC = ~DDRC;
    ++nrzn;

    }
  • Helpful post
    #2
    landy13
    Level 30  
    Dopisz "volatile".
  • #4
    psine.pl

    Level 29  
    Moderated By inventco.eu:

    Temat zamykam.