mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 2 Anfängerfragen


Autor: Jürgen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

ich habe vor laaaanger Zeit in der Schule Microcontroller programmiert.
Habe seit dem leider einiges vergessen :..(
Ich muß mich jetzt beruflich wieder damit beschäftigen, und dabei sind
folgende Fragen aufgetaucht:

1. Wofür braucht man den Watchdog-Timer, bzw. wofür kann man ihn 
sinnvoll einsetzen?

2. Wie errechne ich die Zeit, die der Prozessor zum Abarbeiten eines 
Befehls (z.B. des NOP) benötigt? Konkret geht es um ein Unterprogramm, 
das eine definierbare Zeit "wartet".
Danke im voraus für eure Antworten!

Gruß,
Jürgen

Autor: ERDI - Soft (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

1. Der Watchdog ist eigentlich eine Sicherheitsvorkehrung. Sollte das 
Programm aus irgendeinem Grund mal hängenbleiben, sei es nun durch nen 
Programmierfehler oder durch externe Einwirkung, dann bewirkt dieser 
Watchdog nen Reset. (Man stellt den Watchdog auf eine bestimmte Zeit 
ein. Nun muß man den WD im Programm immer wieder rücksetzten. Damit 
"merkt" der WD, dass das Programm noch so läuft, wie es soll. Wird der 
WD nicht zurückgesetzt, dann läuft der WD über (Ist eigentlich ein 
Timer.) und löst nen Reset aus.)

2. Kommt darauf an, was für ein Prozzi du benutzt. Bei den 
8051-kopatiblen mußt du den Takt durch 12 teilen, um einen 
Maschinenzyklus zu bekommen. (Die brauchen 12 Taktzyklen, um einen 
Maschinenzyklus zu durchlaufen.) Während diesem Maschinenzyklus kann ein 
Befehl abgearbeitet werden. (Allerdings nur, wenn der Befehl nicht 2 
oder 3 MZ braucht. Das steht in der Befehlsbeschreibung drin.)
Bei Dallas-Controllern ist das anders. Die wurden beschleunigt. Der 
80320 braucht, glaube ich, nur 4 Taktzyklen für einen Maschinenzyklus, 
der neue DS80C420 480 (weiß nicht mehr genau) ist sogar umschaltbar. 
Entweder 12 TZ für einen MZ oder pro TZ ein MZ.
Der AVR hat, glaube ich, auch nur einen MZ pro TZ. Wie lange ein Befehl 
aber letztendlich dauert, bis er ausgeführt ist, mußt du im Befehlssatz 
des jeweiligen Controllers nachlesen. Auch, wie lange ein MZ dauert.


Bis denn, ERDI - Soft.

Autor: Jürgen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo ERDI - Soft. ,

danke für deine rasche und hilfreiche Antwort!

Eine Frage hätte ich noch:
Ist es eigentlich sinnvoll, "Warteschleifen" über gezieltes Einfügen von 
NOP´s zu programmieren (um zB keinen Timer zu vergeuden)?
Ist das dann auch noch hinreichend genau, wenn damit Wartezeiten
im Sekundenbereich realisiert werden?

Gruß,
Jürgen

Autor: Jonas Diemer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also zum warten von kurzen zeigen (max. einige ms) kann man 
warteschleifen noch rechtfertigen. wenns aber in den sekundenbereich 
geht, ist ein timer eindeutig die bessere lösung.

denn beim warten per schleife kann der µc nix anderes machen, per timer 
kannst du ihn zumindest in den sleep modus schicken (wenn nix anderes 
ansteht) und batterie sparen.

außerdem brauchste zum warten von mehreren sekunden mindestens 4 
register (oder zig zeilen code) - da investier ich besser nen timer :-)

Autor: ERDI - Soft (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Genau meine Meinung.

Kommt immer darauf an, was du machen willst. Wenn du keine Rechenzeit 
verschwenden willst, dann solltest du auf jeden Fall den Timer 
benutzten. Dann kann nämlich das Programm weiterlaufen.
Ist das aber unwichtig und du brauchst alle Timer für was anderes und 
hast genug Register bzw. RAM frei, dann kannst du auch die 
Schleifenmethode wählen.
Allerdings ist die Genauigkeit mit einem Timer wesentlich höher als mit 
ner Schleife.
So, jetzt such dir das aus, was am sinnvollsten für dich bzw. das 
Programm ist.

Viel Spass.


Bis denn, ERDI - Soft.

Autor: Jonas Diemer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
da muss ich widersprechen: die timer methode ist idR ungenauer, denn der 
timer arbeitet mit einem prescaler, d.h. die auflösung des timers ist 
dann nicht 1:1 (d.h. taktgleich), sondern evtl. sogar nur 1:1024!

will heißen: per warte schleife kannst du die wartezeit taktgenau (also 
bei 4mhz mit einer auflösung von 1/4µs) steuern, beim timer zwar auch 
(beim prescaler von 1), aber es geht beim timer auch ungenauer.

Autor: ERDI - Soft (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tja, ich denke mal, wenn man den Prescaler kennt, ist das ja wohl kein 
Thema. Aber der Vorteil vom Timer ist ja wohl, dass der Prozessor frei 
für andere Dinge ist.

Autor: Jonas Diemer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
richtig.

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.