- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 7 von 7

Thema: Timer und PWM im Tiny25 initialisieren ?

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    20.07.2007
    Beiträge
    38

    Timer und PWM im Tiny25 initialisieren ?

    Anzeige

    LiFePo4 Akku selber bauen - Video
    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

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    20.05.2006
    Ort
    Lippe
    Alter
    54
    Beiträge
    524
    Hallo,

    Weder den Timer an sich, mit Prescaler etc. bekomme ich hin
    woher weißt du das? Was für ein Verhalten erwartest du, welches zeigt der Controller?
    Poste mal deinen Code.
    Ansonsten, kennst du Counter (Avr)

    Gruß

    Jens

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    20.07.2007
    Beiträge
    38
    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

    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) {}
    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%.

    Internette Grüße
    Stefan

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    20.05.2006
    Ort
    Lippe
    Alter
    54
    Beiträge
    524
    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

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    20.07.2007
    Beiträge
    38
    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

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    20.05.2006
    Ort
    Lippe
    Alter
    54
    Beiträge
    524
    Hallo,

    irgendwie habe ich gerade ein dejavue.
    Link

    Gruß

    Jens

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    20.07.2007
    Beiträge
    38
    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

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen