- LiFePO4 Speicher Test         
Ergebnis 1 bis 5 von 5

Thema: Atmega8 Timer2 PWM Stoppen

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    29.07.2011
    Beiträge
    348

    Atmega8 Timer2 PWM Stoppen

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo zusammen,

    ich möchte an einem Atmega8 am Pin 17 mittels Timer2 ein PWM-Signal ausgeben.
    Das funktioniert soweit auch.

    Nun zu meiner Frage, gibt es eine Möglich das PWM-Signal zu stoppen und wieder aufzunehmen? Das heißt, der Ausgangspin soll dann dauerhaft auf Low bleiben.

    Mein Programm sieht in Auszügen momentan so aus.

    Code:
    Pwm_pin Alias Portb.3
    Config Pwm_pin = Output
    Config Timer2 = Pwm , Pwm = On , Compare Pwm = Clear Up , Prescale = 256
    
    Pwm2 = Sollwert
    Ich habe gelesen, dass wenn man einen Timer als PWM nutzt die Befehle Stop Timer und Enable Timer unwirksam sind. Ist das so?

    Der einzige Weg der mir momentan einfällt wäre den Pwm_compare auf 0 zu setzen, aber wäre das eine saubere Lösung?

    Gruß

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Zitat Zitat von demmy Beitrag anzeigen
    Ich habe gelesen, dass wenn man einen Timer als PWM nutzt die Befehle Stop Timer und Enable Timer unwirksam sind. Ist das so?
    Enable Timer2 gibt den Overflow Interupt des Timer frei, was auch bei PWM funktioniert.
    Stop Timer nimmt dem Timer seine Taktquelle, was den Timer bei seinem aktuellen Wert stoppt. Sollte bei PWM auch gehen.

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.702
    Blog-Einträge
    133
    Zitat Zitat von demmy
    ...gibt es eine Möglich das PWM-Signal zu stoppen und wieder aufzunehmen? Das heißt, der Ausgangspin soll dann dauerhaft auf Low bleiben ...Der einzige Weg der mir momentan einfällt wäre den Pwm_compare auf 0 zu setzen, aber wäre das eine saubere Lösung?
    Ja, ist im Datenblatt auch so beschrieben oder ...

    Code:
    Config Timer2 = Pwm , Pwm = On , Compare Pwm = Clear Up , Prescale = 256
    Ich habe mal im Bascom Simulator geschaut, was das Konfigurationskommando macht.

    Im TCCR2 Register werden gesetzt die Bits: WGM20, COM21, CS22 und CS21
    Bedeutet Phase Correct PWM, OC2 wird low bei Comparematch wenn TCNT hochzählt und high beim Runterzählen ( = non-inverted PWM). Prescaler auf 256.

    Außerdem wird das DDRB Register schon richtig gesetzt. "Config Pwm_pin = Output" ist also nicht nötig.

    Im Datenblatt steht:
    Zitat Zitat von ATMega8, doc2486
    The extreme values for the OCR2 Register represent special cases when generating a PWM
    waveform output in the phase correct PWM mode. If the OCR2 is set equal to BOTTOM, the output
    will be continuously low and if set equal to MAX the output will be continuously high for noninverted
    PWM mode.
    Danach sollte OC2 auf low bleiben, wenn Du OCR2 auf 0 setzt (BOTTOM). Kommt mir etwas komisch vor, da er beim Runterzählen und Comparematch den Pin ja setzt und bei OCR2 = 0 dann plötlich low bleiben soll.

    Wenn es nicht hinhaut, sollte es dann aber mit OCR2 bzw PWM2 = 255 (MAX) klappen.

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

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Um den Pin wieder selbst kontrollieren zu können, gibt's unter Config Timerx den Paramter "Disconnect", Config Timerx erneut damit aufgerufen koppelt die PWM-Einheit vom OCx-Pin ab, wobei der Pin ein Ausgang bleibt. Aber er kann dann mit den üblichen Befehlen auf 1 oder 0 gesetzt werden.

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    29.07.2011
    Beiträge
    348
    Ok vielen Dank zusammen,

    es funktioniert jetzt einwandfrei!

    Ich bin allerdings mit meiner Schaltung noch nicht ganz zufrieden. Ich habe sie jetzt mal testweise so aufgebaut:

    Klicke auf die Grafik für eine größere Ansicht

Name:	Unbenannt.PNG
Hits:	14
Größe:	15,5 KB
ID:	23710

    Was haltet Ihr davon? Wäre es besser den IRFPC40 über einen Optokoppler vom Steuerungsteil zu trennen? Brauche ich evtl. noch einen Pull-Down-Widerstand an G ?

    Gruß

Ähnliche Themen

  1. ATMega8: PWM von Timer2 und ISP
    Von ra.graf1988 im Forum AVR Hardwarethemen
    Antworten: 10
    Letzter Beitrag: 07.08.2012, 21:59
  2. PWM mit ATMega8 und Timer2
    Von Eroli im Forum Assembler-Programmierung
    Antworten: 22
    Letzter Beitrag: 28.04.2011, 19:32
  3. Mit Atmega8 Hardware PWM mit Timer2
    Von hosti im Forum C - Programmierung (GCC u.a.)
    Antworten: 46
    Letzter Beitrag: 12.07.2009, 19:16
  4. Timer2 Atmega8
    Von Brantiko im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 17.03.2009, 08:13
  5. Servosteuerung mit Timer2 Atmega8
    Von apfeldieb im Forum Motoren
    Antworten: 0
    Letzter Beitrag: 05.04.2008, 18:29

Berechtigungen

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

LiFePO4 Speicher Test