Hallo,
woher weißt du das? Was für ein Verhalten erwartest du, welches zeigt der Controller?Weder den Timer an sich, mit Prescaler etc. bekomme ich hin
Poste mal deinen Code.
Ansonsten, kennst du Counter (Avr)
Gruß
Jens
Hai,
ich bin wohl doch schon zu lang raus. Ich verzweifele gerade an den Timern des Tiny25. Hab Datenblatt (kann man das noch "Blatt" nennen bei 260 Seiten ?), hab die App note 130, krieg die Dinger aber einfach nicht zum laufen. Weder den Timer an sich, mit Prescaler etc. bekomme ich hin, von der einfachen PWM ganz zu schweigen. Kann mir jemand helfen ? Hat jemand vielleicht ein par Codeschnipsel ?
Internette Grüße
Stefan
Hallo,
woher weißt du das? Was für ein Verhalten erwartest du, welches zeigt der Controller?Weder den Timer an sich, mit Prescaler etc. bekomme ich hin
Poste mal deinen Code.
Ansonsten, kennst du Counter (Avr)
Gruß
Jens
Hai Jens,
die Nebel lichten sich so langsam Immerhin hab ich schon mal einen PWM-Kanal hinbekommen. Aber die anderen drei verweigern sich mir noch.
Wo ist da noch der Bug drin ? Ich bin der Meinung es müsste laufen.....
Hier mal der Code
ein kleiner Tip wäre klasse. Als nächstes muss ich dann wohl noch den Modus ändern, damit ich eine PWM hinbekommen, im Moment blinkt nur eine LED schön gleichmäßig mit DutyCycle 50%.Code:int main (void) { GTCCR = 0b10000001; // Timer anhalten TCCR0A = 0b01010010; // Timer 1 und 2 auf Phasecorrect PWM-Mode // und toggle bei erreichen des Werte in OC0A bzw. // OC0B TCCR0B = 0b00001101; // WGM02-Bit setzen (Clear Timer on Compare - CTC) // für toggle OC0A // und Prescaler auf clk/1024 einstellen OCR0A = 0b11111111; // Output-Compare-Register auf 255 stellen OCR1A = 0b11111111; OCR0B = 0b11111111; // Output-Compare-Register auf 255 stellen OCR1B = 0b11111111; DDRB = 0b11111111; // PortB auf Ausgabe stellen GTCCR = 0b00000000; // Timer starten while(1) {}
Internette Grüße
Stefan
Hallo,
die Schreibweise GTCCR = 0b10000001; ist nicht besonders übersichtlich.
Wenn du z.B.
GTCCR = (1<<TSM)|(1<<PSR0);
schreibst ist das deutlich besser zu lesen und es schleichen sich nicht so leicht Fehler ein. Prüfe einmal die Waveform Generation Bit's da scheint was nicht zu passen. Ich hab mir jetzt allerdings auch nicht alle Bit's angetan^w angesehen.
Gruß
Jens
Hai,
danke für die prompte Antwort. Hast Recht, daran lags. Hab den Timer0 inzwischen zum laufen bekommen. Plage mich jetzt mit Timer1 rum. Da sind die Register und die Vorgehensweise anscheind wieder eine andere.
Die binäre Darstellung hab ich genommen, weil ich dann für mich besser die Registereinträge zuordnen kann. Die hier übliche und von dir vorgeschlagene Schreibeweise liegt mir persönlich nicht so.
Aber gleich noch mal eine andere, aktuelle Frage.
Wenn ich mir die Pinbelegung des Käfers so ansehe, frage ich mich grad, ob ich überhaupt vier PWM-Kanäle nutzen kann. Ich nutze im Moment
PB0 - OC0A
PB1 - OC0B
wenn ich das jetzt richtig verstehe liegen auf PB3 und PB4 die B-PWM-Kanäle des Timer1. Die A-Kanäle liegen aber auch aif PB0 und PB1 ?!
Bedeutet das nicht, dass ich vom Timer1 nur den B-Kanal verwenden kann?
Internette Grüße
Stefan
Hallo,
irgendwie habe ich gerade ein dejavue.
Link
Gruß
Jens
Hai Jens,
ein Deja vu ? Das ist bestimmt ein Fehler in der Matrix
War vor lauter Prescalern, Register und Bits wohl etwas abgelenkt.
Hatte nur heute unter http://www.mikrocontroller.net/topic/42166#new ziemlich am Ende gesehen, dass es angeblich doch gehen soll. Aber das ist wohl eher nicht ganz korrekt. Schade, vier PWM-Kanäle rausgeführt wären schon klasse....
Internette Grüße
Stefan
Lesezeichen