- Labornetzteil AliExpress         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 23

Thema: PWM mit ATMega8 und Timer2

  1. #11
    Erfahrener Benutzer Roboter-Spezialist Avatar von Bernd_Stein
    Registriert seit
    19.09.2008
    Ort
    Deutschland : Nordrhein-Westfalen ( NRW )
    Alter
    53
    Beiträge
    407
    Anzeige

    Powerstation Test
    Hallo,

    ich werde einfach nicht aus deinem Code schlau.
    Du erzeugst ja verschiedene Lichtspiele die nacheinander ablaufen.
    Prog2 => blinken, Prog3 => absteigend, Prog4 => aufsteigend.
    Fading wäre ja Prog5 und dort ist ja erstmal nichts.

    Funktionieren die Programmteile ( Prog2 usw. ) denn für sich alleine ?
    Damit meine ich das z.B. nur immer Prog2 läuft.

    Bernd_Stein

  2. #12
    Neuer Benutzer Öfters hier
    Registriert seit
    19.04.2011
    Ort
    Aachen
    Alter
    34
    Beiträge
    22
    Ja, die funktionieren an und für sich. Das Programm 5 (Fading) in Timer2 leer ist, liegt daran, dass ich erstmal die PWM testen wollte. Wenn die später funktioniert, wollte ich in Timer2 die Helligkeit variieren lassen.
    Solange das da noch leer ist, wird Programm 5 ähnlich Programm 1 (Alle LEDs an => braucht kein Timer) nur im Programmwechseltimer (Timer 1) ausgeführt.
    Ich hab von anderer Stelle einen Tipp bekommen, dass ich WGM21 auf 1 gesetzt habe, was dem CTC-Mode entspricht. Für eine Phasenkorrekte PWM müsste aber WGM21 auf 0 und WGM20 auf 1 gesetzt werden.

    Ich werde das heute abend mal testen und mich dann wieder melden...

    Schönen Nachmittag noch

    EDIT: Das verwirrt mich aber auch wieder. Laut Datenblatt kann Timer2 doch nur eine phasenkorrekte PWM. Warum steht im Datenblatt in Table42 dann, dass ich WGM21 und WGM20 auf 1 setzen muss, um eine FastPWM zu benutzen??

  3. #13
    Erfahrener Benutzer Roboter-Spezialist Avatar von Bernd_Stein
    Registriert seit
    19.09.2008
    Ort
    Deutschland : Nordrhein-Westfalen ( NRW )
    Alter
    53
    Beiträge
    407
    Zitat Zitat von Eroli Beitrag anzeigen
    ...
    > EDIT: Das verwirrt mich aber auch wieder. Laut Datenblatt kann Timer2 doch nur eine
    > phasenkorrekte PWM. Warum steht im
    > Datenblatt in Table42 dann, dass ich WGM21 und WGM20 auf 1 setzen muss, um eine
    > FastPWM zu benutzen??
    Also im dem Datenblatt das ich benutze ( ATmega8A ), fängt ab Seite 106 mit dem Kapitel 17
    der " 8-Bit Timer/Counter2 with PWM and Asynchronous Operation " an.

    Auf Seite 112 Kapitel 17.7 Modes of Operation tauchen die Modes die er kann auf.
    Nämlich Normal, CTC, Fast PWM, Phase Correct PWM und das wo von ich sehr sehr wenig ahnung habe
    " Asynchronous Operation of Timer/Counter2 ".

    Die Table 42 konnte ich leider nicht finden.

    Bernd_Stein

  4. #14
    Neuer Benutzer Öfters hier
    Registriert seit
    19.04.2011
    Ort
    Aachen
    Alter
    34
    Beiträge
    22
    So, habe das nunmal getestet mit dem CTC-Mode, aber es hat nichts gebracht:

    Code:
    	ldi temp, 0x01	; Zur Kontrolle die ersten beiden LEDs einschalten
    	out PORTB, temp
    	out PORTD, temp
    
    	ldi temp, 1<<OCIE2 | 1<<TOIE1 | 1 <<TOIE0	; Timer0-Overflow und Timer1-Overflow und Timer2-Compare "erlauben"
    	out TIMSK, temp
    	ldi temp, 1 << COM20 | 0 << WGM21 | 1 << WGM20 | 0 << CS22 | 1 << CS21 | 0 << CS20	; Phasenkorrekte PWM und Prescaler setzen
    	out TCCR2, temp
    	ldi temp, 0xFF	; Irgendein Startwert fuer OCR2 (Unsere Helligkeit)
    	out OCR2, temp
    Egal, ob ich OCR2 mit 0x00, 0xFF oder 0x99 vorlade, es ist kein Helligkeitsunterschied feststellbar...

    Habe auch nochmal das ganze Programm angehangen. Beachtet dabei bitte, dass es zu Testzwecken so manipuliert ist, dass immer nur das letzte Programm ausgeführt wird...
    Irgendwo ist da der Wurm drin...sieht vielleicht jemand wo?
    Angehängte Dateien Angehängte Dateien

  5. #15
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.703
    Blog-Einträge
    133
    Hallo,
    Code:
    ldi temp, 1 << COM20 | 0 << WGM21 | 1 << WGM20 | 0 << CS22 | 1 << CS21 | 0 << CS20
    mit WGM20 und WGM21 hast Du "pwm, phase correct" eingestellt.
    In dem Mode ist COM20 aber nach Table 45, Seite 118 reserved! (Datenblatt ATmega8 doc2486)

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  6. #16
    Neuer Benutzer Öfters hier
    Registriert seit
    19.04.2011
    Ort
    Aachen
    Alter
    34
    Beiträge
    22
    Stimmt, das ist wirklich nicht erlaubt? Was macht der Microcontroller in so einem Fall? Stürzt der ab? Macht der irgendetwas unkontrollierbares?

    Ich hatte COM20 doch extra auf 1 gesetzt, damit PortB3 bei CompareMatch getoggled wird. Wie soll ich das denn sonst machen?

  7. #17
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.703
    Blog-Einträge
    133
    Wie soll ich das denn sonst machen?
    Vorausgesetzt Du bleibst bei dem Phase Correct Mode und bei der Signalausgabe an OC2, dann bleiben nach der o.g. Tabelle 45 noch zwei Möglichkeiten. Da müßtest Du Dich für eine entscheiden und die beiden Bits COM21 und COM20 entsprechend auf 0 oder 1 setzten.

    Zu dem übrigen Programm kann ich nichts sagen, da nicht Assembler erfahren.

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  8. #18
    Neuer Benutzer Öfters hier
    Registriert seit
    19.04.2011
    Ort
    Aachen
    Alter
    34
    Beiträge
    22
    Gut, ich werde das mal am Dienstag testen. Früher komme ich leider nicht an meine Hardware dran...

    Bis dahin frohe Ostern und ich verspreche auch bis Dienstag nicht mehr zu nerven

  9. #19
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    50
    Beiträge
    2.253
    Habe jetzt das Programm nicht eingehend studiert, aber auf Seite 1 hab ich nur Anmerkung zu einem interrupt für die PWM gefunden.
    Der reicht aber nicht, Du brauchst zwei Ints, einmal den Compare Match und den Overun. Compare Match -> ports an, Overrun -> Ports aus.

    mit nur einem Interrupt gibts immer Tastverhältnis 50:50
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  10. #20
    Neuer Benutzer Öfters hier
    Registriert seit
    19.04.2011
    Ort
    Aachen
    Alter
    34
    Beiträge
    22
    Hi Vitis,

    Danke für den Hinweis, aber ich finde auf der ersten Seite keinen Kommentar zu so einem Overun Compare Match. Meinst du den Overflow?

    Vielleicht noch eine allgemeine Sache zu den Interrupts: Die Reihenfolge in welcher die Labels stehen am Anfang des Codes ist doch relevant, oder?

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Ähnliche Themen

  1. Atmega8 PWM - Timer2 - Pin17 ?
    Von hellraider im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 9
    Letzter Beitrag: 03.07.2011, 16:23
  2. Mit Atmega8 Hardware PWM mit Timer2
    Von hosti im Forum C - Programmierung (GCC u.a.)
    Antworten: 46
    Letzter Beitrag: 12.07.2009, 18:16
  3. Timer2 Atmega8
    Von Brantiko im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 17.03.2009, 07:13
  4. Problem mit dem Timer2 eines ATMega8
    Von sloti im Forum C - Programmierung (GCC u.a.)
    Antworten: 5
    Letzter Beitrag: 01.07.2008, 21:48
  5. Servosteuerung mit Timer2 Atmega8
    Von apfeldieb im Forum Motoren
    Antworten: 0
    Letzter Beitrag: 05.04.2008, 17:29

Berechtigungen

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

Labornetzteil AliExpress