Pages: [1]   Go Down
Author Topic: Wiring.c umschreiben, da Timer 0 benötigt wird  (Read 387 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 38
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,

ich habe heute versucht die Funktion ISR(TIMER0_OVF_vect) zu verwenden.
Im Forum habe ich gelesen, dass dies nicht möglich ist, da Timer0 für die delay-Funktionen gebraucht wird. Da ich bereits alle anderen Timer benutze würde ich gerne auch Timer0 verwenden.

In einem weiteren Forumsbeitrag habe ich gelesen, dass man die Funktion wiring.c umschreiben muss um Timer 0 zu verwenden. Mir ist bewusst, dass ich dann Timer 0 so nicht verwenden sollte.

Diesen Link habe ich für die wiring.c gefunden:

https://github.com/arduino/Arduino/blob/master/hardware/arduino/cores/arduino/wiring.c#L43

Allerdings kenne ich mich damit nicht wirklich aus. Es wäre super wenn mir jemand erklären könnte was ich genau machen muss um den Timer 0 als Interruptfkt verwenden kann.


Grüße

Markus
Logged

Switzerland
Offline Offline
Faraday Member
**
Karma: 111
Posts: 5242
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Im Grunde genommen musst Du in wiring.c nichts ändern, Du kannst einfach den Timer0 über die Register neu konfigurieren und eine eigene Interrupt-Routine definieren (Dein Code wird später abgearbeitet als der von wiring.c). Du musst allerdings sicherstellen, dass weder Dein eigener Code, noch irgendeine Bibliothek, die Du einsetzt, delay(), millis() oder micros() verwendet. delayMicroseconds() kann verwendet werden, da das wartet indem NOOPs ausgeführt werden. Mit dieser Einschränkung dürftest Du bei sehr vielen Bibliotheken auf Probleme stossen.
Logged

Pages: [1]   Go Up
Jump to: