Frage zu Timer/Counter

Gast #1110658
Lesenswert?

Hallo,

hab mal ne Frage zum Betreiben eines Timers als Counter.
Wie kann ich den Triggern, damit der Hochzählt? Ich bin grad am 
Verweifeln ;)

Folgende Aufgabenstellung: EIn Blinklich soll mit einer Freuqenz von 2Hz 
blinken und es sollen Timer benutzt werden.

Meine Idee: Da ich die 2 Hz mit einem 16Bit timer nicht mit einem 
durchlauf erreichen kann, lasse ich Timer0 50.000 mal hochzählen (als 
Timer) und Trigger im Interrupt des Timers den Timer1, der als Counter 
läuft (reload modus) und nach 10 "Triggerings" in die Interruptroutine 
springt und dort das Licht an, bzw ausschaltet. So erreiche ich mein 0,5 
ms.

Der Timer 1 läuft und die Interrupt-Routine wird auch aufgerufen.

Für Hinweise wäre ich dankbar ;)
Gast #1110673
Lesenswert?

> Folgende Aufgabenstellung: EIn Blinklich soll mit einer Freuqenz von 2Hz
> blinken und es sollen Timer benutzt werden.

Die Formulierung dieser Aussage suggeriert mir, dass hier wieder mal 
Jemand einen Dummen sucht, der ihm die Hausaufgaben macht.

Schau in die Dokumentation des zu verwendenden Systems, da gibt es mit 
Sicherheit ein Kapitel über den/die Timer/Counter. Dort erfährst Du z.B. 
was der Zähler (denn mehr ist das erstmal nicht) zählen kann 
(z.B.CPU-Takte, direkt oder über Vorteiler, extern an einem speziellen 
Pin anliegende Pegelwechsel) und welche Interrupts der Zähler unter 
bestimmten Bedingungen auslösen kann (Überlauf, Compare).

~
Gast #1110797
Lesenswert?

Hallo,

nein, ich suche keinen Dummen der mir eine Hausaufgabe macht - weil es 
keine Hausaufgabe ist. Die Aufgabenstellungs war eben, dass wir einen 
Timer benutzen sollen. Die Idee zusätzlich Timer1 als Counter zu 
benutzen ist nicht Teil der Aufgabe. Ich wollte es so lösen, um die 
Timer besser kennenzulernen. Also vollkommen freiwillig ;)

Wg dem was sich beißt, meinte ich, dass der Timer0 läuft ;)

Ok, also kann ich einen Counter nicht manuell takten, indem ich 
irgendein Bit setze. Das ist alles was ich wissen wollte. Dass ich ihn 
extern Triggern kann wusste, habe ich auch gelesen, aber das hat mir bei 
meiner Aufgabenstellung nicht geholfen.

Dann ist es wohl wirklich das einfachste eine 16-Bit Variable anzulegen, 
oder ein Register hochzuzählen und manuell in eine Routine zu springen, 
wenn diese den Wert 10 erreicht.
Gast #1110914
Lesenswert?

> Die Aufgabenstellungs war eben, dass wir einen Timer benutzen sollen.
      ^^^^^^^^^^^^^^^^                                          ^^^^^^

Eben das meine ich, Du machst es weil Du es sollst und nicht, weil Du 
es willst oder möchtest . Dabei ist es irrelevant, ob Du darauf eine 
Note bekommst oder nicht.

Für eine bessere Antwort wäre es vielleicht hilfreich, wenn Du mal das 
System nennen würdest. Deine Frage könnte nämlich viele verschiedene 
Einchip-Mikrocontroller betreffen, vielleicht auch Mehrchip-Systeme mit 
CPU und Peripherie.

Ich vermute zwar, dass Du einen AVR meinst, aber auch da gibt es recht 
große Unterschiede beim Funktionsumfang der Timer. Ich könntwe mir jetzt 
einen Typ aussuchen (z.B. Mega8), doch dann kommt hinterher vermutlich 
sowas wie: "April-April, ich habe aber 8051 (oder PIC)...". Das muss ich 
nicht haben, stelle ordentliche Fragen, dann bekommst Du vielleicht auch 
ordentliche Antworten.

~
#1110949
Lesenswert?

Sascha wrote:

> Dann ist es wohl wirklich das einfachste eine 16-Bit Variable anzulegen,
> oder ein Register hochzuzählen und manuell in eine Routine zu springen,
> wenn diese den Wert 10 erreicht.

Ja das ist der übliche Weg, man nimmt im Timerinterrupt ne weitere 
Zählvariable.
Sie muß aber nicht 16 Bit sein, 8 Bit reicht völlig, um bis 10 zu 
zählen.


Peter
Gast #1111970
Lesenswert?

@SinusGeek

1. Niemand hat mich gezwungen diese Aufgabe zu lösen, ich hoffe das ist 
soweit verständlich - Es ist eine alte Prüfungsaufgabe, die ich 
FREIWILLIG zu Übungszwecken lösen wollte.

2. Es ging nicht darum, dass ich die Aufgabe nicht lösen könnte (mit 
Zählvariable ist es für mich kein Problem), es ging darum zu erfahren, 
ob die alternative Möglichkeit über einen Counter besteht

sorry, ist ein 8051, habe ich vergessen reinzuschreiben

Thema kann geschlossen werden

Danke an alle, die nicht gleich mit nem Holzhammer völlig unnötig auf 
einen losgehen ;)
Gast #1112104
Lesenswert?

> ruhig Blut Sascha, das ist SinusGeek art. :)

Musst mich nicht beschützen, ich kann das ab. Wer (mit Humor) austeilt, 
der muss auch genug Humor haben, das (unbeschadet) einstecken zu können.

~

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren