Forum: Mikrocontroller und Digitale Elektronik 2 Anfängerfragen


von Jürgen (Gast)


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

von ERDI - Soft (Gast)


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.

von Jürgen (Gast)


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

von Jonas Diemer (Gast)


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 :-)

von ERDI - Soft (Gast)


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.

von Jonas Diemer (Gast)


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.

von ERDI - Soft (Gast)


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.

von Jonas Diemer (Gast)


Lesenswert?

richtig.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.