ATMega16 Counter in C zu langsam Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte
Autor |
ATMega16 Counter in C zu langsam Suche nach: atmega16 (131) |
|
|
|
|
BID = 90839
Magni Gelegenheitsposter
Beiträge: 91 Wohnort: Edewecht
|
|
Hi,
ich aktiviere den Timer/Counter0 (8-Bit) mit diesem Code:
Code : |
// Takt / 256
TCCR0 = _BV (CS02);
// Als Interrupt konfiguriert
timer_enable_int (_BV (TOIE0));
|
|
Das Signal wird hier eingefangen:
Code : |
/****** Der 8-Bit Timer/Counter0 Interrupt *****/
SIGNAL (SIG_OVERFLOW0)
{
CounterNull++;
}
|
|
Der ATMega16 läuft mit 4 MHz! Das bedeutet, dass bei einem Teiler von 256 wäre eine Sekunde genau 15625 Hz lang.
Aber bis CounterNull auf 15625 gelangt dauert es eine Ewigkeit. Damits in etwa eine Sekunde dauert, muss CounterNull etwa 61.035... zählen.
Wieso ist der Counter soo laaam???
gr
Magni |
|
BID = 90846
Benedikt Inventar
Beiträge: 6241
|
|
Zitat :
Magni hat am 11 Aug 2004 13:16 geschrieben :
|
Hi,
ich aktiviere den Timer/Counter0 (8-Bit) mit diesem Code:
// Takt / 256
TCCR0 = _BV (CS02);
// Als Interrupt konfiguriert
timer_enable_int (_BV (TOIE0));
|
Ist OK
Zitat :
|
Das Signal wird hier eingefangen:
/****** Der 8-Bit Timer/Counter0 Interrupt *****/
SIGNAL (SIG_OVERFLOW0)
{
CounterNull++;
}
Der ATMega16 läuft mit 4 MHz!
|
Bist du da sicher ? Standartmäßig sind 1MHz aktiviert.
Zitat :
|
Das bedeutet, dass bei einem Teiler von 256 wäre eine Sekunde genau 15625 Hz lang.
Aber bis CounterNull auf 15625 gelangt dauert es eine Ewigkeit.
|
Soweit alles klar
Zitat :
|
Damits in etwa eine Sekunde dauert, muss CounterNull etwa 61.035... zählen.
|
Wie kommst du auf diese Zahl ?
|
|
BID = 90851
Magni Gelegenheitsposter
Beiträge: 91 Wohnort: Edewecht
|
@ Benedikt, danke für die Hilfe.
Zitat :
|
Zitat :
|
Das Signal wird hier eingefangen:
/****** Der 8-Bit Timer/Counter0 Interrupt *****/
SIGNAL (SIG_OVERFLOW0)
{
CounterNull++;
}
Der ATMega16 läuft mit 4 MHz!
|
Bist du da sicher ? Standartmäßig sind 1MHz aktiviert.
|
Ziemlich, da ich einen 4 Mhz Oszillator an XTal 1 angeschlossen hab und wenn ich das ding abzieh, dann läuft er nicht mehr. Deswegen geh ich davon aus, dass er nicht auf die Idee kommt mit internen 1 Mhz zu laufen.
Zitat :
|
Zitat :
|
Damits in etwa eine Sekunde dauert, muss CounterNull etwa 61.035... zählen.
|
Wie kommst du auf diese Zahl ?
|
\fed\mixon((4000000Hz/256)/256) ~= 61.03515625
Irgendwie schauts so aus, als ob er schon mit nem 256 Teiler läuft, oder der µC läuft mit einem 4Mhz/256 Clock. Aber wieso und warum?
|
BID = 91080
Magni Gelegenheitsposter
Beiträge: 91 Wohnort: Edewecht
|
Ach, ich weiß nun wo der Hund begraben liegt. Es war ein Logikfehler meinerseits. Denn das ist ja ein Overflow-Interrupt, d.h. er löst einen Interrupt aus wenn er bis 256 gezählt hat.
Das bedeutet, dass ein Overflow-Interrupt bei einem Vorteiler von 256 sich (4000000/256Vorteiler)/256Zählen ~ ca.62 Mal in der Sekunde melden würde.
Ich habe einfach vergessen, dass der Overflow Interrupt erst zählt und dann unterbricht.
@Benedikt: Trotzdem Danke für die Fehlersuche
Gr
Magni
|
|
Zum Ersatzteileshop
Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum
Datenschutz
Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland
gerechnet auf die letzten 30 Tage haben wir 20 Beiträge im Durchschnitt pro Tag heute wurden bisher 0 Beiträge verfasst © x sparkkelsputz Besucher : 182400769 Heute : 543 Gestern : 7426 Online : 346 26.11.2024 4:31 3 Besucher in den letzten 60 Sekunden alle 20.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
|
xcvb
ycvb
0.0473630428314
|