www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik BASCOM: Interrupt während waitms-Befehl


Autor: marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Morgen,

ich habe eine Uhr mit einem 2313 und einem 8MHz Quarz gebaut.
Der Timer läuft quasi nach einem Minute immer über und führt die Befehle 
in der Int-Routine aus, welche natürlich kürzer als eine Sekunde sind.

Nun eine Verständnisfrage, auch wenn waitms verpönt ist:
Wenn sind ein waitms 5000 Befehl (nur fürs Verständnis!) innerhalb des 
Codes befindet, führt der Timer trotzdem den Interrupt jede Sunde aus 
und somit die Befehle aus der Interruptroutine?? Oder wird das durch das 
waitms unterbunden???

Danke schon mal

marc

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein Interruptroutine wird immer ausgeführt, ausser, der Prozessor führt 
gerade eine andere Interruptroutine aus. DAnn wird die zweite ISR erst 
nach Ende der ertsen ausgeführt. Ob dein waitms (BASCOM?) intern in 
einer ISR läuft, musst du selber rausfinden. Das ist zwar sehr 
unwahrscheinlich, aber ...

Oliver

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
marc wrote:

> Nun eine Verständnisfrage, auch wenn waitms verpönt ist:
> Wenn sind ein waitms 5000 Befehl (nur fürs Verständnis!) innerhalb des
> Codes befindet, führt der Timer trotzdem den Interrupt jede Sunde aus
> und somit die Befehle aus der Interruptroutine?? Oder wird das durch das
> waitms unterbunden???

Ich sach mal, das muß in der Bascom-Hilfe/Doku stehen.

Beim AVR-GCC wird Delay mit Zählschleifen gemacht, d.h. alle Interrupts 
werden ausgeführt und das Delay verlängert sich um diese 
Ausführungszeit.
Ein Delay wird daher immer nur dann benutzt, wenn ein minimales Timing 
einzuhalten ist.


Ein "waitms 5000" ist natürlich der Tod jeglicher Benutzerführung, kein 
Mensch ist bereit, immer 5s lang auf ne Taste zu drücken.
Außer in wenigen Spezialfällen ist daher ein "waitms 5000" vollkommen 
sinnfrei.
Waitms sollte generell sehr sparsam und überlegt verwendet werden, es 
vernichtet ja wertvolle CPU-Zeit.


Peter

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.