www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Timer!!!


Autor: Cri Gri (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute...

Habe schon gesehen das es etliche Beiträge zu den Timern bei euch gibt
aber ich find mir nichts passendes.

Mal ne verständnis Frage: Der Timer (z.B:TO und 8BIT) zählt nu bis 256
und dann wird das TF0 gesetzt und der Timer fängt wieder bei 0 an
(automatisch?). Kann man diese Flag nun mit z.B:
if(!TF0){....}abfragen??
Muss ich das TF0 selber rücksetzten (also 0)?

Habe schon öfter so ne Funktion gesehen. void interupt(void) interupt1
!!! was bedeutet die "1" und woher ist die her??

Sorry aber bin nun mal Neuling und braucher jede Hilfe!!!

Danke an diser Stelle!!
mfg Cri

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welcher Controller? Welche Sprache? Welcher Copmiler?

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum brüllst du so?
(Die vielen Ausrufezeichen werden als "Anschreien" empfunden.)

Die Informationen zum 8-Bit-Timer0 findest du im Datenblatt ab Seite
67. Die Registerbeschreibung findest du ab Seite 70. Der Timer0 kennt
nur den Overflow-Interrupt, wenn du einen anderen Zählumfang als 256
möchtest, dann musst du ihn in jeder ISR (Interrupt Service Routine)
auf einen definierten Startwert setzen. Damit der Timer einen Interrupt
auslösen kann, muss das Bit TOIE0 in TIMSK gesetzt werden (Seite 70) und
Interrupts global freigeschaltet werden. Damit der Timer0 überhaupt zum
Laufen kommt, muss in TCCR0 ein passender Vorteiler eingestellt werden
(Seite 70). Damit nun auch die richtige Routine (die ISR) aufgerufen
wird, muss diese Routine geschrieben werden und ein Sprung in die
Interrupt-Sprungtabelle eingetragen werden (Seite 44).

Da du nicht genannt hast, welchen Controller du meinst, habe ich mir
den Mega8 ausgesucht. Die Seitenangaben beziehen sich also auf das
Datenblatt des Mega8. Und da du keine Programmiersprache genannt hast,
habe ich Assembler vorausgesetzt. Falls du nicht den Mega8 unter
Assembler gemeint hast, ist das nicht mein Problem.

...

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Rolf:

Du sein Spielverderber...

;-)

...

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tja, nächstes Mal schreib nen kürzeren Text, dann bist du auch schneller
fertig ;-)

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So sei es...

;-)

...

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wo bist du denn auf ASm eingegangen, Hannes?
Deine Beschreibung isrt ziemlich allgemeingültig.

@Cri Gri: Der 8bit-Timer kann nur bis 255 zählen...256 wäre das
Overflow-Bit.

Autor: Cristian Grigoruta (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich verwende als Progsprache C und den µC 89c52!!

@Rahul
0-255 sind 256 Schritte.

@ALL
Sorry wegen dem Anschreien (!!!!) =)

mfg Cri.

Autor: Cristian Grigoruta (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und?kann mir keiner meine Fragen beantworten??

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>0-255 sind 256 Schritte.
> ... zählt nu bis 256

Der Zähler zält aber trotzdem nur bis 255, erzeugt dann einen Überlauf
und beginnt wieder bei 0. Er macht zwar 256 Schritte, zählt aber nur
bis 255. Das wolte ich einfach nur klarstellen.

>und?kann mir keiner meine Fragen beantworten??
Hat Hannes schon etwas "überschwenglich" getan.
Bei jedem Überlauf wird das TOV0-Flag gesetzt. Man kann es durch
"while (!(TIFR & (1<<TOV0))" abfragen, muß es dann aber durch "TIFR
|= (1<<TOV0);" zurücksetzen.
Das steht wunderbar im Datenblatt(*) auf Seite 109 beschrieben.

(*) ich beziehe mich auf das ATMega64-Complete-Datasheet, weil ich
gerade kein anderes offen habe...

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Deine Beschreibung isrt ziemlich allgemeingültig.

Naja, Hochsprachler brauchen keine Interrupt-Sprungtabelle und BASCOMer
kennen die Bits und Register meist nicht. Da bleibt wohl nur ASM
übrig... ;-(

> und?kann mir keiner meine Fragen beantworten??

Habe ich doch getan! - Nur leider fehlte Deiner Frage die erforderliche
Präzision, worauf die Antwort dir nicht so richtig half. Also nimm das
Datenblatt deines Controllers und schau dir die Register des Timers und
deren Bits genau an, dann siehst du auch dessen Möglichkeiten. Das
verspricht jedenfalls mehr Erfolg als hier Forderungen zu stellen...

...

Autor: Cristian Grigoruta (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry ich wollt euch nicht "beleidigen/verärgern"!
Das mit der Interrupt-Nummer habe ich schon...  Int.Vekt.-Adresse - 3
und dann alles durch 8 teilen.
kommt schon hin...

Ich hätte noch ne Frage und zwar:Kann ich das TF0 (beim 89C52) direkt
abfragen? Also ,wie schon geschrieben, mit if (!TF0){.....} oder kann
man diese Bit nicht abfragen?

mfg Cri

PS: Habe nie Vorderungen gestellt.

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>beim 89C52
Aah! Ein 8051er!

>Ich hätte noch ne Frage und zwar:Kann ich das TF0 (beim 89C52) direkt
abfragen? Also ,wie schon geschrieben, mit if (!TF0){.....} oder kann
man diese Bit nicht abfragen?

Zu dem Thema solltest du dich mit den Special Function Registern deines
Controllers auseinandersetzen. IMHO (ewig nichts mehr mit den 8051ern
mehr gemacht) sollte das möglich sein...
Für den Einstieg in die 8051er-Welt empfehle ich (und andere vermutlich
auch) das Buch von Andreas Roth "Mikrocontroller Kochbuch".

>Vorderungen
"Vogel-F" wie "Pferd"? Nur so am Rande ;)

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.