arduino uno verhält sich nicht deterministisch

Gast #4001851
Lesenswert?
• ▲
▼
Hallo,

mein Arduino uno verhält sich ein wenig merkwürdig. In unregelmäßigen 
Abständen Toggelt sich der Pin nicht.

Hier ist der code den ich verwende:
1
#include <avr/io.h>
2
#include <avr/interrupt.h>
3

4

5
void setup() 
6
{
7
  DDRC  |= _BV(DDC0);
8
}
9
 
10
void loop()
11
{
12
 PORTC ^= _BV(PC0);
13
}

Das Oscilloscopebild hab ist im Anhang.

Ich kenne dieses Verhalten eigentlich nur im Zusammenhang mit 
Betriebsystemen...

Viele Grüße!
Angehängte Dateien:
Gast #4001890
Lesenswert?
• ▲
▼
Die integrierten Arduino Librarys haben sicherlich Interrupt-Routinen. 
So wird z.B. ein Timer des Atmegas verbraten nur damit die Funktion 
millis() die Millisekunden seit dem einschalten zurück geben kann.

Dein Arduino ist also schon deterministisch, du kennst nur nicht dem 
gesamten Programmcode :-)

Thomas
Gast #4001964
Lesenswert?
• ▲
▼
okay, hab mal reinen c-code verwendet und jetzt ist der Sprung 
tatsächlich raus. Außerdem toggelt der Pin schneller.

Fazit: mit Arduinos kann man zwar schnell ein Programm zusammen basteln 
aber man weiß nie was da wirklich passiert.
#4001968
Lesenswert?
• ▲
▼
Ajax schrieb:
> Ich kenne dieses Verhalten eigentlich nur im Zusammenhang mit
> Betriebsystemen...

Bei den Arduino-Boards läuft standardmäßig Timer0 mit Interrupts, um die 
Funktionen millis() und micros() zur Verfügung zu stellen.

Wenn Du die Timer0-Interrupts nicht gebrauchen kannst, dann mußt Du 
entweder den Timer0 Interrupt deaktivieren, wenn Du im Programm die 
Funktionen setup() und loop() verwendest.

Oder Du schreibst anstelle von setup() und loop() gleich eine eigene 
main() Funktion.

Falls Dein Sketch eine eigene main() Funktion hat, verwendet die 
Arduino-IDE nicht ihre eigene main() Funktion und Du kannst anfangen, 
einen "nackten" Controller direkt und ohne die Arduino Komfortfunktionen 
zu programmieren.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.