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

[atmega88][c] Odwolanie do zmiennej w przerwaniu

Toners 07 Lis 2010 13:07 903 1
REKLAMA
  • #1 8713225
    Toners
    Poziom 11  
    Witam, jestem swiezy w temacie i borykam sie z przerwaniami - mam nastepujacy kod:
    
    #ifndef F_CPU
    #define F_CPU 16000000
    #endif
    #include <avr/io.h>
    #include <avr/interrupt.h>
    #include <util/delay.h>
    #include <stdlib.h>
    
    ISR(INT0_vect)
    {
    	index++;
    }
    
    int main(void)
    {
    	EIMSK = _BV(INT0);
    	EICRA = _BV(ISC01)|_BV(ISC11);
    	char index = 50;
    	sei();
    	DDRD = 0xFB;
    	DDRC = 0x00;
    	do{
    		 if(!(PINC & 0x01))
    		 {
    			index++;
    		 }
    
    		 else if(!(PINC & 0x02))
    		 {
    			index--;
    		 }
    
    		if (index>99)
    		index=10;
    
    		if (index<10)
    		index=99;
    		}
    	while(1);
    	return 0;
    }
    


    Aby nie robic zbyt duzego pasta usunalem czesci odpowiadajace za wyswietlenie zmiennej na LCD.

    Gdy kompiluje dostaje info: 'index' undeclared (first use in this function) ze wskazaniem na zmienna index w przerwaniu. Co jest zle? jak zmodyfikowac kod abym mogl w przerwaniu inkrementowac zmienna index?
  • REKLAMA
  • Pomocny post
    #2 8713271
    _Robak_
    Poziom 33  
    Poczytaj o zmiennych globalnych typu volatile.
    Zamykam
REKLAMA