 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
Slemi Član

Pridružen-a: Pet 29 Okt 2004 13:29 Prispevkov: 386 Aktiv.: 1.63 Kraj: Hrastnik
|
Objavljeno: Čet Jul 30, 2009 8:04 pm Naslov sporočila: V prekinitvi ne poveča spremenljivke [AVR] |
|
|
Pozdravljeni!
Ima kdo kakšno idejo, zakaj mi v naslednjem programu ne povečuje spremenljivke xx v prekinitvi za INT0? INT0 proži, preverjeno, vendar sprememba spremenljivke ni vidna v ostalem programu, kot da si INT0 naredi svojo notranjo spremenljivko xx.
Koda: |
#include <io.h>
#include <interrupt.h>
#include "macros.h"
unsigned int xx = 0;
void init_devices(void)
{
DDRD = 0xE0;
PORTD = 0xFF;
cli();
MCUCR = 0x02; //enable falling edge INT0
GICR = 0x40; //enable INT0
sei();
}
ISR (INT0_vect)
{
xx++;
}
int main(void)
{
//unsigned int n;
init_devices();
while(1)
{
if(xx > 30000)
{
CBI(PORTD, 7);
}
asm("nop");
//xx++;
}
return 1;
} |
Krmilnik: ATmega8
Okolje: AVRStudio + WinAVR
Hvala za vsako pomoč!
LP
Slemi |
|
Nazaj na vrh |
|
 |
silvo_v Član

Pridružen-a: Pon 11 Jul 2005 22:00 Prispevkov: 146 Aktiv.: 0.62 Kraj: Domžale
|
Objavljeno: Čet Jul 30, 2009 8:30 pm Naslov sporočila: |
|
|
Poskusi takole:
volatile unsigned int xx=0;
Lp |
|
Nazaj na vrh |
|
 |
Slemi Član

Pridružen-a: Pet 29 Okt 2004 13:29 Prispevkov: 386 Aktiv.: 1.63 Kraj: Hrastnik
|
Objavljeno: Čet Jul 30, 2009 9:09 pm Naslov sporočila: |
|
|
Že boljše dela!
Hvala!
Gregor |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 494 dni
Powered by phpBB © 2001, 2005 phpBB Group
|