Külső megszakítási probléma!
- 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!
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?
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?
Re: Külső megszakítási probléma!
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!
Old meg másképp a (várakozást) késleltetet kikapcsolást. Megszakításon kívül, legyél találékony!
- 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!
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.
- 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!
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);
}
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);
}
Re: Külső megszakítási probléma!
Itt is a megszakításban van. A megszakításból hívsz függvényt - az is megszakításban fut....
Re: Külső megszakítási probléma!
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?
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?
Re: Külső megszakítási probléma!
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.
É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.
