Forum: Mikrocontroller und Digitale Elektronik AVR+PWM+Verstehen


von Kurt B. (kurt-b)


Lesenswert?

.
.

Mega644P, PWM 16Bit (Timer1), Ausgabe an  OC1A und OC1B

Unter BASCOM läufts, aber ich will die 16Bit haben und ich selber 
verstehen was da abgeht.

  Config Timer1 = Pwm , Prescale = 8 , Pwm = 10 , Compare A Pwm = Clear 
Down , Compare B Pwm = Clear Up


Manual für den Mega644P liegt vor.


Liege ich richtig wenn ich annehme dass:

 Tcnt1  der Zähler ist der hochzählt und dann überläuft.

Ocr1a Ocr1b die 16Bit Register sind die mit denen der Zählerstand 
verglichen wird.

Zum Einstellen der Modi und des Vorteilers und der Taktquelle die 
Register:

TCCR1A, TCCR1B, TCCR1C sind?

 Kurt

von spess53 (Gast)


Lesenswert?

Hi

>Zum Einstellen der Modi und des Vorteilers und der Taktquelle die
>Register:

>TCCR1A, TCCR1B, TCCR1C sind?

Ich denke das Datenblatt liegt dir vor?

Da gibt eine Beschreibung für jedes dieser Register und der Beschreibung 
der einzelnen Bits. Allerdings ist es sinnvoll sich vorher den Abschnitt 
'Modes of Operation' durch zu lesen.

MfG Spess

von Kurt B. (kurt-b)


Lesenswert?

spess53 schrieb:
> Hi

> Da gibt eine Beschreibung für jedes dieser Register und der Beschreibung
> der einzelnen Bits. Allerdings ist es sinnvoll sich vorher den Abschnitt
> 'Modes of Operation' durch zu lesen.
>

Inzwischen hab ich die PWM soweit wie ich sie gerne möchte.

_____________________________________________________________________
  On Timer1 Ausgang_setzen                        ' Interrupt aufsetzen
  On Oc1a Loesch_oc1a
  On Oc1b Loesch_oc1b

  Enable Timer1
  Enable Oc1a
  Enable Oc1b


 '  -------------------  Timer1 setzen 
-----------------------------------
' Timer1 als PWM-Generator verwenden

   Tccr1b = 1             ' Teiler mit Takt versorgen, zählt bis 2h15

     Ausgabewert = 100

' ======================= Hauptprogramm 
==================================

 Do

  Ausgabewert = Ausgabewert + 1000

 Disable Interrupts
  Ocr1a = Ausgabewert
  Ocr1b = Ausgabewert
 Enable Interrupts


  Upperline
   Lcd Tccr1a ; " " ; Tccr1b ; " " ; Tccr1c ; "   "
  Lowerline
   Lcd Ausgabewert ; " " ; Ocr1a ; " " ; Tcnt1 ; "   "

   Waitms 1000


 Loop



' ------------- Interrupteinsprung Timer1--------------

Ausgang_setzen:

  Set Led_rot
  Set Led_gruen

 Return




' ------------- Interrupteinsprung OC1A--------------

Loesch_oc1a:
   Reset Led_gruen
Return


' ------------- Interrupteinsprung OC1B--------------

Loesch_oc1b:
   Reset Led_rot
Return


__________________________________________________________________

Muss ich mich ums Laden der beiden Vergleichsregister kümmern, also 
durch sperren der IR da irgendwas verhindern, oder erledigt das BASCOM 
selber?
Bisher ist mir nichts negatives aufgefallen.


 Kurt

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.