-
+ Antworten
Ergebnis 1 bis 5 von 5

Thema: 4 x PWM mit ATMega88 und BASCOM

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    30.05.2004
    Ort
    Detmold
    Alter
    27
    Beiträge
    557

    4 x PWM mit ATMega88 und BASCOM

    Hallo miteinander!

    Ich bin gerade auf ein kleines Problem gestoßen, bei dem mir weder die BASCOM-Hilfe noch die Forumssuche helfen konnte.
    Laut Datenblatt hat der ATMega88 insgesamt 6 PWM-Kanäle.
    Leider bekomme ich bisher nur 2 davon angesprochen, über Timer1.
    Weiß jemand rat, wie ich noch 2 weitere dazu bewegen könnte, mir ein PWM-Signal zu geben?

    Gruß,
    Trabukh

    REM: Pinbelegung muss hier nicht stimmen, ist von RN-Wissen übernommen...
    Code:
    $regfile = "m88def.dat"
    $crystal = 8000000
    
    Config Pinb.1 = Output
    Config Pinb.2 = Output
    
    
    Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1
    
    Do
     Pwm1a = 128
     Pwm1b = 128
    Loop
    
    End
    EDIT: Hab' gerade nochmal im Forum rumgesucht, im Prinzip will ich genau das gleiche wie hier: http://www.roboternetz.de/phpBB2/viewtopic.php?t=19284
    "Der Mensch wächst am Widerstand" (Werner Kieser)

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.07.2005
    Beiträge
    569

    Re: 4 x PWM mit ATMega88 und BASCOM

    Zitat Zitat von Trabukh
    Hallo miteinander!

    Ich bin gerade auf ein kleines Problem gestoßen, bei dem mir weder die BASCOM-Hilfe noch die Forumssuche helfen konnte.
    In der Bascom Hilfe dürftest du bei Chipspezifischen Dingen nicht fündig werden ...

    Zitat Zitat von Trabukh
    Laut Datenblatt hat der ATMega88 insgesamt 6 PWM-Kanäle.
    Leider bekomme ich bisher nur 2 davon angesprochen, über Timer1.
    Weiß jemand rat, wie ich noch 2 weitere dazu bewegen könnte, mir ein PWM-Signal zu geben?
    Indem du die Bits so setzt wie sie im Datenblatt beschrieben sind ???

    Zitat Zitat von Trabukh
    REM: Pinbelegung muss hier nicht stimmen, ist von RN-Wissen übernommen...
    auch dafür gibt es Datenblätter ...

    Im übrigen, die 4 anderen PWM's könnte man z.B. über die 2 anderen Timer aktivieren ...

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    30.05.2004
    Ort
    Detmold
    Alter
    27
    Beiträge
    557
    Danke für deine Antwort.
    Was die Pinbelegung angeht, da hab ich schon im DB nachgeschaut:
    OC0A - PD6
    OC0B - PD5
    OC1A - PB1
    OC1B - PB2
    OC2A - PB3
    OC2B - PD3

    Nur wie man das jetzt registermäßig mit BASCOM macht, da scheiterts... sprich TCCR1A etc.
    Ich finde diese Datenblätter meist ziemlich verwirrend...

    Gruß,
    Simon alias Trabukh
    "Der Mensch wächst am Widerstand" (Werner Kieser)

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.07.2005
    Beiträge
    569
    Zitat Zitat von Trabukh
    OC0A - PD6
    OC0B - PD5
    OC1A - PB1
    OC1B - PB2
    OC2A - PB3
    OC2B - PD3
    Munja, ist ja mal ein Anfang.

    Wie man aus den Pinbezeichnungen erkennen kann, werden je 2 PWM Kanäle von den Timern 0, 1 und 2 bereitgestellt.

    D.h. du musst dir nur noch ne Pladde machen, wie du die restlichen 2 Timer konfiguriertst.

    Zum Thema Datenblätter:

    Sicherlich mögen diese auf den ersten Blick verwirrend erscheinen, dieses liegt jedoch meist an der ungeheuren Informationsmenge, die so ein Datenblatt enthalten kann.
    Wenn man nich weiss was man eigentlich sucht ist man deshalb mit diesen Teilen recht "verloren".

    Wenn man aber weiss was man will, kann man sich ganz gezielt die entsprechenden Abschnitte zu Gemüte ziehen.

    In deinem Fall geb ich dir mal den Tip: "Register Description Timer 0 / 2" und ggf. die den "Modes of Operation" Abschnitt eines Timers.

    Grüße,
    da Hanni.

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    30.05.2004
    Ort
    Detmold
    Alter
    27
    Beiträge
    557
    Nun gut, nochmals danke.

    Ich habe mich jetzt mal durch die Registereinstellungen gewuselt.
    Ist es nun richtig, wenn ich in BASCOM direkt folgende Register so setze:
    Code:
    $Regfile="m88def.dat"
    $Crystal=16000000
    
    DDRB.1=1              'PB1 bzw. OC1A as Ausgang definieren
    
    TCCR1A=&B10000001     'Laut DB: "Clear OC1A/OC1B on Compare Match when upcounting. Set OC1A/OC1B on Compare Match when downcounting"
                          '"PWM, Phase Correct, 8-bit"
    TCCR1B=&B00000010     'Laut DB: Prescaler = 8
    
    OCR1AL=210            'Da nur 8-bit Auflösung gebraucht werden, benutze ich nur das erste Register
    
    Do
    Loop
    Das ganze geht sicherlich auch eleganter in BASCOM mit den vorgefertigten Befehlen, aber das ist auch alles ein bisschen konfus.
    Da ich momentan nicht zuhause bin, könnte bitte jemand kurz einen Kommentar zum Code abgeben? Testen kann ich momentan nicht...

    Gruß,
    Simon
    "Der Mensch wächst am Widerstand" (Werner Kieser)

+ Antworten

Berechtigungen

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