Aus aktuellem Anlass nochmal die Frage: Gibt es in C auf dem Raspberry Pi die Möglichkeit, Timer Interrupts zu nutzen? Ich möchte nur sehr ungern Delay Schleifen nutzen...
Aus aktuellem Anlass nochmal die Frage: Gibt es in C auf dem Raspberry Pi die Möglichkeit, Timer Interrupts zu nutzen? Ich möchte nur sehr ungern Delay Schleifen nutzen...
Hallo,
das wird so vermutlich auch nicht gehen. Allerdings gibt es unter sys/time.h einige sehr nützliche Tools zum Thema Timer.
Außerdem bekommst Du drei Timer, die Du mit getitimer() und setitimer() kontrollieren kannst. Diese lösen verschiedene Signale aus, auf die Du reagieren kannst.
Das ist zwar nicht ganz so toll wie das direkte Benutzen von Interrupts, aber sicherlich ein interessanter Ansatz.
Das ist normale C Programmierung. Timer werden in der Regel über separate Threads gelöst welche diese Zeit eben im sleep sind. Persönlich mache ich sowas mit boost in C++, aber unter C geht das prinzipiell genauso. Direkte Interrupts wie du sie auf den AVRs kennst werden in Linux auf PCs anderst gelöst.... eben mit Threads. Siehe dazu auch [1] [2]
Ereignisgesteuert auf UART zu reagieren geht auch mittels select [5] . Unter C++ würde ich das mit boost::asio [3] [4] lösen
Gruß
Georg
[1] http://en.wikipedia.org/wiki/POSIX_Threads
[2] https://computing.llnl.gov/tutorials/pthreads/
[3] http://www.boost.org/doc/libs/1_53_0...oost_asio.html
[4] http://www.boost.org/doc/libs/1_53_0...rial_port.html
[5] http://stackoverflow.com/questions/1...to-work-on-tty
Geändert von schorsch_76 (27.06.2013 um 11:48 Uhr)
C Programmierung am Pi ist normale Linuxprogrammierung -> ergo ganz normale C/C++ Programme möglich, Schnittstellen können einfach wie Dateien gelesen werden, ohne Probleme. Interrupts gibt es generell nicht, außer man programmiert ein Kernelmodul. Dafür gibt es aber Threads und Prozesse.
Kultuverein Metal Resurrection, für mehr Bands und Konzerte in Österreich (:
Lesezeichen