-
        

Ergebnis 1 bis 5 von 5

Thema: Timer2 beim mega 8 für PWM wer hat ein HowTo?

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    12.01.2009
    Beiträge
    12

    Timer2 beim mega 8 für PWM wer hat ein HowTo?

    Anzeige

    Hallo , hier im Forum ist ja copy und paste nicht so gefragt deswegen stell ich meine bisherigen Ansätze hier mit rein ..
    Irgendwie will der Timer nicht aufdimmen bzw nicht wieder abdimmen.

    Der Timer1 ( 16Bit ) ging prima nur der zweite will nicht . Bin schwer am verweifeln

    Code:
    '======================================================
    'System-Einstellungen
    '======================================================
    'Definition für Mega 8
    $regfile "m8def.dat"
    
    'Angabe der Taktfrequenz (8Mhz)
    $crystal = 8000000
    
    'Konfiguration der Analogeingänge
    
    'Konfiguration Timer 2 für Hardware-PWM an OC2 (B.3)
    Config Timer2 = Pwm , Prescale = 128 , Compare = Clear
    Compare1a = 255
    'Konfiguration der Ports
    Config Portb = Output
    Config Portd = Output
    
    
    '======================================================
    'Initialisierungen
    '======================================================
    
    
    'Start des PWM-Timers
    Enable Timer2
    Timer2 = 0
    Start Timer2
    
    '======================================================
    'Hauptprogramm-Schleife
    '======================================================
    Do
    
              Do
              Compare1a = Compare1a + 1                         ' Dimmvorgang
              Waitms 12
              Loop Until Compare1a = 255
    
              Waitms 12                                         ' LED bleibt an
    
                        Do
              Compare1a = Compare1a - 1                         ' Dimmvorgang
              Waitms 12
              Loop Until Compare1a = 0
    
    
    
    Loop
    End
    Vielleicht kann mir ja jemand von euch den entscheidenen Tip geben . Ach so für den anfang reicht es wenn das Programm erst eimal nur aufdimmt kurz wartet und wieder langsam ausgeht.

    Velen Dank

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    35
    Beiträge
    1.987
    Fehlt da evtl noch die "Enable Interrupts"-Anweisung?
    Kann gut sein, dass man die bei PWM auch braucht.
    #ifndef MfG
    #define MfG

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    14.02.2008
    Beiträge
    252
    Hallo.

    Gehört da nicht "Compare A Pwm = Clear up" rein ? Statt dem Compare = Clear ?

    Dem RN Wissens Artikel über Bascom und PWM , muss man die Timer nicht starten!http://<br /> <br /> http://www.ro...Bascom_und_PWM


    Mfg niki1

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von Michael
    Registriert seit
    17.01.2004
    Ort
    Karlstadt
    Alter
    48
    Beiträge
    1.254
    Hallo t4-torsten,

    Compare1a = Compare1a + 1
    für Timer2 kannst du nicht das Compare-Register für Timer1 benutzen.
    Für Timer2 heißt es OCR2

    Config Timer2 = Pwm , Compare Pwm = Clear Down , Prescale = 64
    OCR2 = 125
    (Port auf Ausgang)

    Gruß, Michael

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    28.03.2004
    Beiträge
    185
    Nur ein Hinweis zu den Timer-Deklarationen in Bascom:
    Ich bin so oft an Compiler-Fehlern hängengeblieben, dass ich die Timer immer nach Atmel-Datenblatt deklariere. Außerdem finde ich die Einstellungen Register transparenter.

    Ein Beispiel für einen Attiny25:
    Code:
    $regfile = "ATtiny25.DAT"                                   'Controllertyp
    $crystal = 8000000                                          'crystal frequency
    
    '*** Timer 0 CTC (read signal from TSOP173x) *******************
    Tccr0a = &B0000_0010                           'OC0A/OC0B disconnected, CTC
    Tccr0b = &B0000_0010                                       'Prescale=8 @8MHz
    Ocr0a = 52                                                 '8Mhz/(8*(52+1))=18867Hz
    
    On Oc0a _isr_t0ovf Nosave                          'Interrupt NOSAVE_ISR!
    Enable Oc0a
    Enable Interrupts
    Ich werfe auch immer einen Blick in die *.DAT (hier ATtiny25.DAT) um zu checken, ob Bascom überhaupt die Registernamen richtig schreibt...

    Eine Ausnahme ist der weit verbreitete Atmega8. Den kann Bascom recht gut. Aber auch beim Atmega8 habe ich schon Bascom-Fehler bei ungewöhnlichen Timerkonfigurationen gefunden.

Berechtigungen

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