-         
Ergebnis 1 bis 9 von 9

Thema: PWM am Timer2

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    28.05.2007
    Ort
    Mannheim
    Alter
    31
    Beiträge
    270

    PWM am Timer2

    Anzeige

    Hallo Leute,

    ich hab mal wieder eine PWM-frage. Die Suche weder hier noch bei Google hat mich weiter gebracht

    Bisher verwende ich folgenden Code:
    Code:
    Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 8 
    
    Pwm_rechts Alias Compare1a
    Pwm_links Alias Compare1b
    
    Do
    Pwm_rechts = 100
    Pwm_links = 200
    Loop
    
    End
    Hat auch immer ast rein Funktioniert.
    Jetzt brauch ich aber meinen Timer1 anderweitig, weil er einen Eingangs-Pin hat. Timer0 wird bereits verwendet, auch mit Eingangs-Pin.

    Also bleibt mir nur noch übrig das PWM auf dem Timer2 zu generieren.
    Aber: Wie geht das mit dem Timer2? Schon alleine die Zeile

    Config Timer2 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 8

    Bringt mir einen Error. Gut, ich hab gelesen das man dann Pwm = on schreiben sollte. Das funktioniert auch soweit.
    Und ein Compare2a und Compare2b gibt es nicht.
    Dan dieser Stelle hab ich gelesen nimmt man dann OCR2.
    Aber das ist doch dann nur ein einzelner Compare. Wie bekomm ich dann mein zweites PWM-Signal zustande und wie bringe ich die auf 2 verschiedene Ausgangs-Pins?
    Kann man mit dem Timer2 auch irgendwie Compare1a und Compare1b verwenden? Laut Datenblatt hängen die ja auch am internen Bus...

    Hoffe mir kann jemand weiter helfen.

    Gruß Robodriver
    Wer aufhört besser zu werden, hat aufgehört gut zu sein

    Jeder I/O Port kennt drei Zustände: Input, Output, Kaputt

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    28.10.2004
    Ort
    Baoding
    Alter
    38
    Beiträge
    687
    Könntest Du noch sagen was für nen AVR du hast?

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    28.05.2007
    Ort
    Mannheim
    Alter
    31
    Beiträge
    270
    oh, sorry. Hab ich vergessen:

    Ein ATmega8
    Wer aufhört besser zu werden, hat aufgehört gut zu sein

    Jeder I/O Port kennt drei Zustände: Input, Output, Kaputt

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    28.10.2004
    Ort
    Baoding
    Alter
    38
    Beiträge
    687
    Der M8 hat nur 3 Hardware PWMs. 2x16 Bit Timer1 und 1x8 Bit mit Timer2. Also gibts für Timer2 nur einen PWM-Kanal.

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    28.05.2007
    Ort
    Mannheim
    Alter
    31
    Beiträge
    270
    Ja gut, dann habe ich am Pin 17 ein PWM Signal.
    Und wo greife ich dann das zweite PWM-Signal ab?

    Vorher hab ich ja mit Compare1a und Compare1b gearbeitet, weil ich 2 PWM-Signale brauche die sich unabhängig voneinander einstellen lassen. also einer z.B. 100 und der andere 200.

    Wo nehm ich bei Timer2 dann das 2. PWM-Signal her?
    Das war ja meine Frage.
    Wer aufhört besser zu werden, hat aufgehört gut zu sein

    Jeder I/O Port kennt drei Zustände: Input, Output, Kaputt

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    28.10.2004
    Ort
    Baoding
    Alter
    38
    Beiträge
    687
    Niergendwo. Wenn der M8 nur 3 Hardware-Pwms hat und davon 2 auf dem Timer1 liegen bleibt nur noch einer für den Timer2 übrig. Da ist nur ein Ausgang für Timer2 und es gibt keinen 2ten!!!! [-(

  7. #7
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    28.05.2007
    Ort
    Mannheim
    Alter
    31
    Beiträge
    270
    Hm okay.
    Also kann ich mein PWM ganz offensichtlich nicht vom Timer2 erzeugen lassen...
    Und der Timer 2 kann auch nicht die Compares vom Timer1 nutzen...

    Nun gut, dann eine andere Frage:
    Dann lass ich halt das PWM-Signal bei Timer1.
    Aber ist es möglich den Timer2 als Counter zu verwenden und bei statuswechsel eines Pins eins hoch zählen zu lassen? Wobei wichtig ist: OHNE Interrupt bei dem die Software den Counter um eins erhöht.
    Also das der Counter Hardwareseitig immer um eins erhöht wird?

    Aber wenn ich das Datenblstt richtig interpretiere geht auch das nicht. Richtig?
    Wer aufhört besser zu werden, hat aufgehört gut zu sein

    Jeder I/O Port kennt drei Zustände: Input, Output, Kaputt

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    28.10.2004
    Ort
    Baoding
    Alter
    38
    Beiträge
    687
    Habe das Datenblatt jetzt nicht zur Hand aber ich dachte auch das es mit dem Timer2 keinen Counter gibt.

    Lösung 1: Mit Timer2 ne Soft-PWM machen (braucht Interrupt)
    Lösung 2: ATMega88 -> hat 6 Hardware-Pwms

  9. #9
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    28.05.2007
    Ort
    Mannheim
    Alter
    31
    Beiträge
    270
    hey das mit dem Mega88 ist ne klasse Idee. Den kannte ich noch gar nicht. Und der ist sogar Pinkompatibel zum Mega8

    Werd dann aber sicher den Mega168 verwenden, da hab ich dann auch gleich noch mehr Flash zur Verfügung.

    Super und vielen Dank nochmal für den Hinweis
    Wer aufhört besser zu werden, hat aufgehört gut zu sein

    Jeder I/O Port kennt drei Zustände: Input, Output, Kaputt

Berechtigungen

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