mikrocontroller.net

Forum: Compiler & IDEs Timer zählt viel zu wenig


Autor: Erich Meißner (mgbd397)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
 ich versuche an einem Atmega32 mit 16 MHz einen 16-bit-Timer zu 
benutzen, aber irgend etwas ist nicht richtig, nach 100ms gibt es gerade 
mal 97 Counts, wo doch ca 6250 zu erwarten wären.



                // 16-bit-Zähler testen
 TIFR1  |= 1<<TOV1 ;    // Rücksetzen nach vorangegangenem Überlauf
                        // (1 schreiben, keine 0!)
 TCCR1B |= (1<<CS12) ; // Timerstart mit 1/256  CPU

 TCNT1 = 0;            // Timer auf Null

  _delay_ms(100);
 return (TCNT1);
    }
Es soll kein Interrupt ausgelöst, sondern einfach nur gezählt werden, 
demzufolge ist allein TCCR1B gesetzt.

Was kann man tun, daß er funktioniert?

mfg
Erich

Autor: Edi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stand vielleicht vorher schon was im TCCR1B? Mit "TCCR1B |= (1<<CS12)" 
wird ja nur das Bit CS12 zusätzlich gesetzt. Sicherer wäre hier:

TCCR1B = (1<<CS12);

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Was kann man tun,

Den ganzen Code zeigen? Ist vielleicht die Funktion als unsigned char 
definiert?

Oliver

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erich Meißner schrieb:
> mal 97 Counts, wo doch ca 6250 zu erwarten wären.

Scheint, Du gibst nur das Low-Byte aus.


Peter

Autor: Erich Meißner (mgbd397)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
vielen Dank;

ich habe mit Euren Empfehlungen die Sache noch mal durchprobiert, also 
bei
TCCR1B = 5; jetzt ein einfaches = -Zeichen, dann versuchsweise bei TCNT1 
Low- u. Highbyte getrennt und auch die Definitionen getestet.

Bei der Variation der Prescalerwerte und Vergleich mit den gezählten 
Counts bin ich darauf gekommen, das der Prozessor mit nur 1 MHz getaktet 
sein muß.

Es handelt sich hier um Uli Radigs Webservermodul, das um zusätzliche 
Module erweitert werden soll und das, soweit ich das gelesen habe, den 
externen 16-MHz-Quarz nicht nur zur Zierde hat. Aber die Timer scheinen 
davon nichts zu sehen.


Frage nebenbei:
wie schaffen das die Leute, ihre Programmcodes und Textstellen so schön 
zu formatieren? Ich sehe keine passenden Buttons.

Bye
Erich

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erich Meißner schrieb:

> Es handelt sich hier um Uli Radigs Webservermodul, das um zusätzliche
> Module erweitert werden soll und das, soweit ich das gelesen habe, den
> externen 16-MHz-Quarz nicht nur zur Zierde hat. Aber die Timer scheinen
> davon nichts zu sehen.

Der Quarz alleine machts noch nicht.
Man muss dem Prozessor auch per Fuses mitteilen, dass er den benutzen 
soll.


>
> Frage nebenbei:
> wie schaffen das die Leute, ihre Programmcodes und Textstellen so schön
> zu formatieren? Ich sehe keine passenden Buttons.

Schreib am Anfang vom Code [ C ]   (ohne die Leerzeichen) und am Ende 
vom Code [ / C ]  (ebenfalls wieder ohne Leerzeichen)

(Geh mal auf "Antwort mit Zitat", dort siehst du es auch)
int main()
{
}

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn nur der falsche Takt anliegt, würde sich die Anzahl der 
Zählerschritte nicht ändern, weil _delay_ms(100) in diesem Fall im 
gleichen Verhältnis zu langsam "zählt".

Oliver

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Frage nebenbei:
> wie schaffen das die Leute, ihre Programmcodes und Textstellen so schön
> zu formatieren?

Sie lesen den Text direkt über dem Bereich, wo sie ihre Antwort 
eingeben, da wo groß "Formatierung" steht. Gegebenenfalls noch das, was 
sich hinter dem Link daneben mit dem Titel "mehr Informationen..." 
verbirgt.

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.