Külső megszakítás
- benzinkutas
- DrótVégénSzéndarab
- Hozzászólások: 31
- Csatlakozott: 2011. április 30. szombat, 6:00
Külső megszakítás
Ha figyelek egy digitális bemenet állapotát és ehhez kötök egy eljárást akkor megszakítással miért lesz gyorsabb mint ha pl. if utasitással oldanám meg?
attachInterrupt (interrupt, funkció, mode)
A leírásban ezt a szintaktikát találtam, kevés angol tudásom miatt sajnos nem tudtam pontosan értelmezni a paramétereit. Interupt ? funkció = gondolom ez a fügvény fut le a megszakításkor, mode?
És jó példát sem találtam még. Ezekben a dolgokban kérek szépen kiigazítást.
Köszönöm!
attachInterrupt (interrupt, funkció, mode)
A leírásban ezt a szintaktikát találtam, kevés angol tudásom miatt sajnos nem tudtam pontosan értelmezni a paramétereit. Interupt ? funkció = gondolom ez a fügvény fut le a megszakításkor, mode?
És jó példát sem találtam még. Ezekben a dolgokban kérek szépen kiigazítást.
Köszönöm!
A programod felépítéstől függ, hogy gyorsabb lesz-e.
A megszakítást kifejezetten arra találták ki, hogy a program (főprg) futása közben bejövő eseményekre minél rövidebb idő alatt tudj reagálni. Ha olyan a főprogram, elméletileg nem is tud róla, hogy jött egy INT (INT után ugyan oda tér vissza a programfutás).
Rövid ideig fennálló esemény lekezelése még a cél (főprogramod nem ér oda időben, mikorra a bejövő jel már változott és vissza is állt pl.) Fontos még az, hogy ha pontosan vársz egy feltételre, akkor ott "beragad" a programod, INTnél meg majd akkor hajtódik végre a kiszolgálás, ha bejött a jelváltozás. Tehát programfüggő, mikor jobb az INT és mikor jobb, ha vársz a jelváltozásra.
Amit írtam, az általános, az említett sor paraméterezésében sajnos nem tudok segíteni...
JAni
A megszakítást kifejezetten arra találták ki, hogy a program (főprg) futása közben bejövő eseményekre minél rövidebb idő alatt tudj reagálni. Ha olyan a főprogram, elméletileg nem is tud róla, hogy jött egy INT (INT után ugyan oda tér vissza a programfutás).
Rövid ideig fennálló esemény lekezelése még a cél (főprogramod nem ér oda időben, mikorra a bejövő jel már változott és vissza is állt pl.) Fontos még az, hogy ha pontosan vársz egy feltételre, akkor ott "beragad" a programod, INTnél meg majd akkor hajtódik végre a kiszolgálás, ha bejött a jelváltozás. Tehát programfüggő, mikor jobb az INT és mikor jobb, ha vársz a jelváltozásra.
Amit írtam, az általános, az említett sor paraméterezésében sajnos nem tudok segíteni...
JAni
Engem ilyenkor arra biztattak, hogy tessék belökni valamely fordítóba a szöveget!:
csatolja megszakítás (interrupt, funkció, mód)
leírás
Megadja a meghívandó funkcióra, amikor egy külső megszakítás történik.
Megszaki minden korábbi funkciót csatlakoztatva volt a megszakítás. A legtöbb Arduino táblák két külső megszakítások: számok 0 (digitális pin 2) és 1 (digitális pin 3). Az Arduino Mega van további négy: a számok 2 (21 pin), 3 (20 pin), 4 (19 pin), és 5 (pin 18).
paraméterek
megszakítás: a megszakítás száma (int)
funkció: a funkció hívni, ha a megszakítás történik, ez a funkció nem vehet át paramétereket és vissza sem ad semmit. Ez a funkció néha nevezik megszakítás kiszolgáló rutin.
mód: határozza meg, amikor a megszakítás kell foganatosítani. Négy előre meghatározott contstants érvényes értékek:
LOW, alacsony amely kiváltja a megszakítást, ha a PIN alacsony,
CHANGE VÁLTOZÁS, amely kiváltja a megszakítást, ha a PIN-értéke megváltozik
RISING Felnőni a kiváltó Ha a PIN megy az alacsonytól a magasig,
FALLING Csökkennek, ha a PIN megy magastól alacsony felé.
visszatérő érték egyik sem
Megjegyzés:
Bent a mellékelt funkció késleltetés () nem fog működni, és a visszaadott érték a Millis () nem fogja növelni. Soros kapott adatok, míg a funkció is elvész. Meg kell nyilvánítania az illékony változókat, hogy módosítsa a csatolt funkciót.
A megszakítások
Megszakítások jól használható dolgok történnek automatikusan mikrokontroller programok, és segíthet megoldani időzítési problémákat. Egy jó feladat segítségével egy megszakítás lehet olvasni egy forgó jeladót, a monitoring felhasználói.
Ha akarta, hogy biztosítsák, hogy a program mindig elkapta az impulzusok egy forgó jeladó, soha nem hiányzik a pulzus, ez teszi nagyon nehéz lenne írni egy programot mást csinálni, mert a program kellene, hogy folyamatosan az érzékelő vonalak lekérésére a jeladó, annak érdekébenelkapni impulzusok, amikor történt. Más érzékelők is hasonló dinamikus felület is, mint például próbál olvasni egy érzékelő, amely hangot próbál elkapni egy kattintással, vagy egy infravörös érzékelő aljzat (foto-megszakító) próbál elkapni egy érmét csepp. Minden ilyen helyzetben, egy megszakítás segítségével lehet felszabadítani a mikrokontroller, hogy valamilyen más munkát, ugyanakkor nem hiányzik a csengőt.
Example
csatolja megszakítás (interrupt, funkció, mód)
leírás
Megadja a meghívandó funkcióra, amikor egy külső megszakítás történik.
Megszaki minden korábbi funkciót csatlakoztatva volt a megszakítás. A legtöbb Arduino táblák két külső megszakítások: számok 0 (digitális pin 2) és 1 (digitális pin 3). Az Arduino Mega van további négy: a számok 2 (21 pin), 3 (20 pin), 4 (19 pin), és 5 (pin 18).
paraméterek
megszakítás: a megszakítás száma (int)
funkció: a funkció hívni, ha a megszakítás történik, ez a funkció nem vehet át paramétereket és vissza sem ad semmit. Ez a funkció néha nevezik megszakítás kiszolgáló rutin.
mód: határozza meg, amikor a megszakítás kell foganatosítani. Négy előre meghatározott contstants érvényes értékek:
LOW, alacsony amely kiváltja a megszakítást, ha a PIN alacsony,
CHANGE VÁLTOZÁS, amely kiváltja a megszakítást, ha a PIN-értéke megváltozik
RISING Felnőni a kiváltó Ha a PIN megy az alacsonytól a magasig,
FALLING Csökkennek, ha a PIN megy magastól alacsony felé.
visszatérő érték egyik sem
Megjegyzés:
Bent a mellékelt funkció késleltetés () nem fog működni, és a visszaadott érték a Millis () nem fogja növelni. Soros kapott adatok, míg a funkció is elvész. Meg kell nyilvánítania az illékony változókat, hogy módosítsa a csatolt funkciót.
A megszakítások
Megszakítások jól használható dolgok történnek automatikusan mikrokontroller programok, és segíthet megoldani időzítési problémákat. Egy jó feladat segítségével egy megszakítás lehet olvasni egy forgó jeladót, a monitoring felhasználói.
Ha akarta, hogy biztosítsák, hogy a program mindig elkapta az impulzusok egy forgó jeladó, soha nem hiányzik a pulzus, ez teszi nagyon nehéz lenne írni egy programot mást csinálni, mert a program kellene, hogy folyamatosan az érzékelő vonalak lekérésére a jeladó, annak érdekébenelkapni impulzusok, amikor történt. Más érzékelők is hasonló dinamikus felület is, mint például próbál olvasni egy érzékelő, amely hangot próbál elkapni egy kattintással, vagy egy infravörös érzékelő aljzat (foto-megszakító) próbál elkapni egy érmét csepp. Minden ilyen helyzetben, egy megszakítás segítségével lehet felszabadítani a mikrokontroller, hogy valamilyen más munkát, ugyanakkor nem hiányzik a csengőt.
Example
Kód: Egész kijelölése
int pin = 13;
volatile int state = LOW;
void setup()
{
pinMode(pin, OUTPUT);
attachInterrupt(0, blink, CHANGE);
}
void loop()
{
digitalWrite(pin, state);
}
void blink()
{
state = !state;
}
A hozzászólást 1 alkalommal szerkesztették, utoljára kapu48 2012. május 27. vasárnap, 14:21-kor.
- benzinkutas
- DrótVégénSzéndarab
- Hozzászólások: 31
- Csatlakozott: 2011. április 30. szombat, 6:00
[quote="kapu48"]Engem ilyenkor arra biztattak, hogy tessék belökni valamely fordítóba a szöveget!:
csatolja megszakítás (interrupt, funkció, mód)
Erre én is képes vagyok, de sajnos kezdő vagyok még így a google által lefordított szövegből még nem tudom kihámozni a lényeget. Ezért bátorkodtam beírni a fórumra. Gondoltam ez mindenkinek szól nem csak a profiknak. Sokszor egy-két mondat ami rávezet a megoldásra többet ér mint sok oldal.
csatolja megszakítás (interrupt, funkció, mód)
Erre én is képes vagyok, de sajnos kezdő vagyok még így a google által lefordított szövegből még nem tudom kihámozni a lényeget. Ezért bátorkodtam beírni a fórumra. Gondoltam ez mindenkinek szól nem csak a profiknak. Sokszor egy-két mondat ami rávezet a megoldásra többet ér mint sok oldal.
Mi nem olvashatunk helyetted!
Ha te elakadsz az első sornál!
Amelynek a további szövegben minden szó értelme el van magyarázva.
(Esetleg próbálkozz többször nekifutni! )
16. Megszakítások Interrupt:
http://avr.tavir.hu/modules.php?name=Co ... age&pid=18
Vagy:
ATMega8 külső megszakítások beállítása
http://www.hobbielektronika.hu/kapcsola ... .html?pg=3
Mindenki másképp csinálja! Csak a HardWer a lényeg!
Azt kel megérteni!
Ha te elakadsz az első sornál!
Amelynek a további szövegben minden szó értelme el van magyarázva.
(Esetleg próbálkozz többször nekifutni! )
16. Megszakítások Interrupt:
http://avr.tavir.hu/modules.php?name=Co ... age&pid=18
Vagy:
ATMega8 külső megszakítások beállítása
http://www.hobbielektronika.hu/kapcsola ... .html?pg=3
Mindenki másképp csinálja! Csak a HardWer a lényeg!
Azt kel megérteni!
Re: Külső megszakítás
Kód: Egész kijelölése
const byte ledPin = 13;
const byte interruptPin = 2;
volatile byte state = LOW;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(interruptPin, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(interruptPin), blink, CHANGE);
}
void loop() {
digitalWrite(ledPin, state);
}
void blink() {
state = !state;
}
Mi lehet a baj?
Re: Külső megszakítás
A C az nem java. Sorban halad minden előre.
Mikor a blinket meghívod még nincs deklarálva, tehát jogos a hiba. Cseréld fel a függvények sorrendjét, vagy deklaráld előre. C programozás.
Mikor a blinket meghívod még nincs deklarálva, tehát jogos a hiba. Cseréld fel a függvények sorrendjét, vagy deklaráld előre. C programozás.