Külső megszakítási probléma!

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Válasz küldése
Avatar
benzinkutas
DrótVégénSzéndarab
Hozzászólások: 31
Csatlakozott: 2011. április 30. szombat, 6:00

Külső megszakítási probléma!

Hozzászólás Szerző: benzinkutas »

Tisztelt fórumozók!

Van egy kis problémám a külső megszakítással. Ha írok késleltetést (delay) a megszakítási függvénybe akkor mintha nem hajtódna végre. Pl: irok10000ms-t vagy többet a 13-as ledre hogy világítson utána aludjon el csak villan kb. egy másod percnyit. A kapcsolást, programot annyira le egyszerűsítettem, hogy ezekkel nem lehet probléma, úgyhogy valószínűleg ez normális. De nekem kellene késleltetni hogyan lehet ezt megoldani?
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: Külső megszakítási probléma!

Hozzászólás Szerző: kapu48 »

A megszakításba nem teszünk Delayt!!!!

Old meg másképp a (várakozást) késleltetet kikapcsolást. Megszakításon kívül, legyél találékony!
Avatar
benzinkutas
DrótVégénSzéndarab
Hozzászólások: 31
Csatlakozott: 2011. április 30. szombat, 6:00

Re: Külső megszakítási probléma!

Hozzászólás Szerző: benzinkutas »

Próbáltam! A megszakítás függvény csak abból állt, hogy meghívott egy másik függvényt amibe volt már késleltetés. Az eredmény ugyan az volt.
Avatar
benzinkutas
DrótVégénSzéndarab
Hozzászólások: 31
Csatlakozott: 2011. április 30. szombat, 6:00

Re: Külső megszakítási probléma!

Hozzászólás Szerző: benzinkutas »

Egy hirtelen összedobott agylövés de működik!

int led=13;

void setup()
{
attachInterrupt(1,villog,RISING);
pinMode(led, OUTPUT);
}

void loop()
{
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led, LOW);
delay(1000);
}

void myDelay(int x) {
for(int i=0; i<=x; i++)
{
delayMicroseconds(1000);
}

}
void villog()
{
digitalWrite(led, LOW);
myDelay(100);
digitalWrite(led, HIGH);
myDelay(100);

digitalWrite(led, LOW);
myDelay(100);
digitalWrite(led, HIGH);
myDelay(100);

digitalWrite(led, LOW);
myDelay(100);
digitalWrite(led, HIGH);
myDelay(100);
}
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Külső megszakítási probléma!

Hozzászólás Szerző: Robert »

Itt is a megszakításban van. A megszakításból hívsz függvényt - az is megszakításban fut....
Avatar
Daba
Újonc
Újonc
Hozzászólások: 8
Csatlakozott: 2010. február 19. péntek, 7:00

Re: Külső megszakítási probléma!

Hozzászólás Szerző: Daba »

Sziasztok. Nekem is lenne egy megszakitasos problémám.
Nekem gombnyomásra jön egy megszakítás. Viszont mivel prellel a gomb egy megszakítás helyett 2-3 is lesz. Szoftveresen a delay függvény nélkül hogyan lehetne kikuszobolni a prellt?
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: Külső megszakítási probléma!

Hozzászólás Szerző: kapu48 »

Az első megszakításban végrehajtod a feladatod.
És elindítasz valami időzítés számlálót.
Ha a következő INT bizonyos időn belül jön? Nem hajtod végre a feladatot, és 0-zod a számlálót.
….

Időzítésre vagy timert, vagy a főprogramban kör számlálót (minden körben növeled 1-el.) használhatsz.
Válasz küldése