Hallo zusammen,
ich versuche gerade den Timer 1 auf einem AATmega ans Laufen zubekommen,
aber irgendwie will er nicht.
Er läuft nicht. Timer 0 habe ich am Laufen, aber mit dem Timer 1 bekomme
ich das nicht hin.
Wäre klasse, wenn mir da einer weiterhelfen könnte.
Gruß
Hier mal die entsprechenden Auszüge aus meinem Code:
1
cli();
2
init_timer1();
3
sei();
4
5
voidinit_timer1(void)
6
{
7
TCCR1B|=(1<<CS10)|(1<<CS12);// Prescaler 1024
8
TCCR1B=(1<<WGM12);// CTC Modus (Clear Timer On Compare)
9
OCR1A=256-1;
10
TIMSK1|=(1<<OCIE1A);// Timer/Counter1 Output Compare Match A Interrupt Enable
Uwe schrieb:> TCCR1B |= (1<<CS10) | (1<<CS12); // Prescaler 1024> TCCR1B = (1<<WGM12); // CTC Modus (Clear Timer On Compare)
Gratulation.
Du hast dir soeben mit dem Zuweisung zum Setzen von WGM12 die
Konfiguration der CS Bits zerschossen :-)
Hi
> TCCR1B |= (1<<CS10) | (1<<CS12); // Prescaler 1024> TCCR1B = (1<<WGM12); // CTC Modus (Clear Timer On Compare)
Mit der 2.Anweisung überschreibst du die erste.
MfG Spess
Uwe schrieb:> Hallo,>> ja, Ich habe mal den Timer0 konfiguerit und den laufen lassen, das> fuktioniert, nur der Timer 1 läuft irgendwie nicht.
Ein komplettes, möglichst simples Programm, in dem nur der Timer 1
vorkommt, könnte viel mehr Klarheit bringen, als die ständige Aussage
'läuft irgendwie nicht'. Solange nicht 100% ausgeschlossen werden kann,
dass du nicht noch irgendwo mindestens 1 Fehler im Programm hast, ist
die Arbeitshypothese 'Der µC hat einen Schaden'. bzw. 'der Compiler hats
vermurkst' als eine zu verwerfende anzusehen. Die Wahrscheinlichkeit,
dass du einen Programmfehler hast, liegt nun mal bei 99%, während die
anderen beiden Alternativen eine Fehlerwahrscheinlichkeit von 1% (wenn
nicht noch weniger) haben.
Und nein: Die Vorgehenswiese "ich schreib mal alles für den Timer 0 und
ändere dann einfach alle 0 auf 1 um" ist nicht zielführend. Willst du
den Timer 1 benutzen, dann geht die ganze Konfiguration mit dem
Datenblatt für den Timer 1 von vorne los. Insofern ist das völlig
irrelevant, dass es mal mit dem Timer 0 funktioniert hat. Allenfalls
kann man daraus die Aussage ableiten "der µC läuft grundsätzlich". Mehr
aber auch nicht.
In diesem Sinne ....
Uwe schrieb:> ich habe hier mal das Programm, mit dem ich im Moment den Timer1 teste.
Also bei mir lässt sich das nicht compilieren. Kein wunder bei den
fehlenden includes.
Uwe schrieb:> ich versuche gerade den Timer 1 auf einem AATmega ans Laufen zubekommen,> aber irgendwie will er nicht.
Welche IDE nutzt du denn eigentlich die diesen Kram compilieren kann?
Uwe schrieb:> Vielleicht wird es dann klarer.
Nein. Mal abgesehen davon, dass du es mit dem Verteilen auf mehrere
Files ein wenig übertreibst und dass die Funktionsprototypen fehlen, die
vollkommen unwichtigen Warnings dafür hast du ja grosszügig ignoriert,
ist doch alles in Ordnung.
Wenn du uns jetzt allerdings noch, wie von dummy schon angemerkt,
erzählst, um welchen Controller es sich handelt, könnte man dir wirklich
helfen.
möööp schrieb:> Also bei mir lässt sich das nicht compilieren. Kein wunder bei den> fehlenden includes.
Natürlich lässt sich das compileren.
Ingo schrieb:> Welche IDE nutzt du denn eigentlich die diesen Kram compilieren kann?
Eine IDE kann überhaupt nicht compilieren.
mfg.
Uwe schrieb:> Hallo,>> läuft im Moment auf einem ATmege88.>> JTAG aus.
Ein Atmega88 hat gar kein JTAG.
Also läuft das? Oder was läuft irgendwie nicht?
Erzähl einfach, was du erwartest und was du bekommst. Dann können wir
dir sagen, ob du das auch erwarten kannst.
mfg.
Ich weiß, daß Dir das in C nicht nützt. Trotzdem ginge es mit Bascom
einfacher:
TCCR1B = Bits(CS10,CS12,WGM12)
OCR1A = 200
TIMSK1.OCIE1A = 1
(Ob die Einstellungen richtig sind, weiß ich nicht aus dem Kopf, ich
habe sie vom TO übernommen)
MfG Paul
Thomas Eckmann schrieb:> Erzähl einfach, was du erwartest und was du bekommst. Dann können wir> dir sagen, ob du das auch erwarten kannst.
Also wenn du immernoch nicht weisst was er will hast du den Text nicht
gelesen. Ich denke damit hast du es schon auf den Punkt gebracht:
> die Funktionsprototypen fehlen, die> vollkommen unwichtigen Warnings dafür hast du ja grosszügig ignoriert
Paul Baumann schrieb:> Ich weiß, daß Dir das in C nicht nützt. Trotzdem ginge es mit Bascom> einfacher:
Doch. Das ist sehr nützlich.
Kann man mit
1
#include<bascom.h>
einbauen.
Ingo schrieb:> Also wenn du immernoch nicht weisst was er will hast du den Text nicht> gelesen.
Das wirst du wohl kaum beurteilen können.
> Ich denke damit hast du es schon auf den Punkt gebracht:
Nein. Es läuft trotzdem.
mfg.
Ingo schrieb:> Uwe schrieb:>> Er läuft nicht.>> Thomas Eckmann schrieb:>> Nein. Es läuft trotzdem.> Das weisst du mehr als er selber :)
Natürlich weiss ich mehr als er.
Was ich allerdings nicht weiss, ist, was er von seinem Programm
erwartet.
mfg.
Thomas Eckmann schrieb:> Was ich allerdings nicht weiss, ist, was er von seinem Programm> erwartet.Uwe schrieb:> ISR (TIMER1_COMPA_vect)> {> PORTC ^= ( 1 << PC5 )> }
Ist dir das hieraus wirklich nicht ersichtlich?
Falls nicht bezweifle ich das:
Thomas Eckmann schrieb:> Natürlich weiss ich mehr als er.
Uwe schrieb:> ISR (TIMER1_COMPA_vect)> {> PORTC ^= ( 1 << PC5 )> }
Hier fehlt im Übrigen ein Semikolon, was bei dir natürlich trotzdem
läuft Thomas weil
Thomas Eckmann schrieb:> Nein. Es läuft trotzdem.
Ingo schrieb:> Thomas Eckmann schrieb:>> Was ich allerdings nicht weiss, ist, was er von seinem Programm>> erwartet.>> Uwe schrieb:>> ISR (TIMER1_COMPA_vect)>> {>> PORTC ^= ( 1 << PC5 )>> }> Ist dir das hieraus wirklich nicht ersichtlich?> Falls nicht bezweifle ich das:>> Thomas Eckmann schrieb:>> Natürlich weiss ich mehr als er.
Würde du dich jetzt mal mit deinen dämlichen Kommentaren zurückhalten
und einen sinnvollen Beitrag schreiben.
Brauchst mir nicht drauf zu antworten. Du stehst jetzt in meinem
Idiotenfilter. Mit Leuten wie dir, sabbel ich mich nicht lange ab.
mfg.
Ingo schrieb:> Thomas Eckmann schrieb:>> einen sinnvollen Beitrag schreiben.>> Hier:>> Ingo schrieb:>> Hier fehlt im Übrigen ein Semikolon
Das ist schon lange Schnee von gestern, seit er das Zip File gepostet
hat.
Der Code im Zipfile hat nach erstem Darüberschauen genau die Probleme,
die Thomas schon angemerkt hat.
Die Frage ist, was der TO erwartet. Wenn der µC wirklich mit 8Mhz läuft,
dann blinkt seine LED mit 20Hz. Die meisten würden wohl das Flackern
gerade noch so sehen können, wenn man allerdings nicht genau schaut,
dann kann man das auch leicht übersehen.
Daher auch die Frage, was der TO eigentlich vom Code erwartet.
Uwe schrieb:> Hallo,>> ich möchte später einmal ein 75 Hz Signal erzeugen.
Schön.
Du hast immer noch nicht gesagt, woraus du schliesst dass dein Timer 1
nicht läuft.