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

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

Miar 11 Lis 2010 14:42 1764 3
REKLAMA
  • #1 8729880
    Miar
    Poziom 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.
    
    //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;
    
    }
    
  • REKLAMA
  • Pomocny post
    #2 8729922
    landy13
    Poziom 31  
    Dopisz "volatile".
  • REKLAMA
  • #4 8730437
    psine.pl

    Poziom 30  
    Moderowany przez inventco.eu:

    Temat zamykam.

REKLAMA