Go Down

Topic: Interrupt(0) ein und ausschalten (Read 4072 times) previous topic - next topic

Udo Klein

Du musst unterscheiden zwischen der IDE und den Libraries. Die IDE ist im weitesten Sinne ein Editor.
Die Libraries stellen zusätzlichen Code bereit wie z.B. AttachInterrupt. Wenn Du wissen willst wie das zusammenpasst solltest Du in den Quelltext der Libraries schauen. Jede Wette, danach geht Dir ein riesen Licht auf.

Vorgehensweise:
- nachschauen wo die Libraries im Arduino Verzeichnis liegen
- nachschauen in welcher Library wohl AttachInterrupt liegt
- den Quelltext durchschauen

Danach ist Dir mit hoher Wahrscheinlichkeit klar wie das zusammenpasst. Insbesondere, daß da gar nichts gaaanz anders gemacht wird. Im Gegenteil, man kann das beliebig mischen. D.h. man kann auch in nicht Arduino Projekten Arduino Libs einbinden und umgekehrt. Zumindest wenn man weiss was man tut. Das Wissen erlangt man meiner Meinung nach am schnellsten mit der oben beschriebenen Vorgehensweise ;)

Gruß, Udo
Check out my experiments http://blog.blinkenlight.net

derRobert

guuuuute idee mit den libs   das stimmt.


das wir hier nix grundlegend anders machen war mir schon klar   aber bei arduino hat sich ebend einer hingesetzt und uns ne menge arbeit abgenommen indem er libs gebaut hat die alles einfach aussehen lassen ;)

das sich hinter z.B. atacheInterrupt() der ganze kram versteckt den der AVR braucht is klar   aber auf die idee ,da mal in den libs zu suchen, bin i ni gekommen :(

Danke derRobert

Udo Klein

Die Analyse zeigt, daß die eigentliche Arbeit in der AVR LIBC steckt. Arduino liefert dann nur noch eine weitere Verschalung. Manchmal ist die geschickt und manchmal eher suboptimal. Das wirst Du dann aber demnächst selber herausfinden. Die Libs sind nicht so groß. Bevor man 10 Abhandlungen darüber gelesen hat ist es fast immer schneller mal kurz im Code nachzuschauen.

Wie es so schön heisst "Die Wahrheit liegt im Code" ;)

Gruß, Udo
Check out my experiments http://blog.blinkenlight.net

derRobert

fragt mich nicht wie und warum aber EIFR=(1<<INTF0); vor atachInterrupt setzt das Flag zurück.

der Sonntag ist rum und ich hab das Problem gelöst aber ehrlich gesagt hab ich das zusammenspiel noch nicht ganz verstanden. mein heute erworbenes wissen hat geratemal gereicht um google jetzt die richtige frage zu stellen und hier raus zu kommen http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1292970203

schön das dass problem gelöst ist aber verstanden hab ich nur das der befehl ebend die wartenden triggersignale am interrupt(0) mit 1 überschreibt.

aber die schreibweise des Befehls EIFR=(1<<INTF0); passt nun garnicht zu dem was ich heute so alles lesen durfte (GIFR.INTF0 = 1....) :~

Trotzdem danke  :|

derRobert

Udo Klein

Check out my experiments http://blog.blinkenlight.net

Go Up