PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : AtMega32 PWM Noob fragen



Testus2K
07.08.2010, 15:59
Hallo, wenn jemand diese Fragen mal nebenbei beantworten könnte, wäre das nett, dass würde mir den Einstieg ziemlich erleichtern.

-Beim nutzen von PWM ist die Länge einer Periode irelevant, solange mein Verbraucher träge genug ist, richtig?

Ein Beispiel war:
"Quarz = 8 MHz ; Prescaler = 8 ; Timer = 10 Bit ergibt: (8000000Hz/8) / (1024*2) = 244,14 Hz "
244 Hz ist eine recht lange Zeit für eine Periode, aber für ein Getriebemotor dürfte das kein Problem sein, oder?

-kann ich beim AtMega32 den Hardware PWM für alle Ausgänge benutzen, bzw. auf welche ist das beschränkt?

-Kann ich 3 Motoren mit einem Timer ansprechen (AtMega32)?
"Beim einem ATMega8 stehen drei Hardware-PWM-Ausgänge verteilt auf zwei Timer zur Verfügung. "

-kann ich dabei einen anderen Timer laufen lassen um meine Lichtschranken abzufragen?

-und gibt es irgendwelche konflikte bei datenübertragungen zum PC via rs232? weil das ja auch immer so eine timing's sache ist, regelt Bascom das von alleine?

Vielen dank schonmal, ich will auch keine ausschweifenden Erklärungen.

Zwerwelfliescher
07.08.2010, 16:56
Hi,

-kann ich beim AtMega32 den Hardware PWM für alle Ausgänge benutzen, bzw. auf welche ist das beschränkt?
Nein, der ATmega32 hat meines Wissens nur 4 PWM Pins. PB3, PD4, PD5, PD7. Mit Software PWM kannst du fast alle Pins verwenden.

Gruß

Kampi
07.08.2010, 17:14
Die Länge der Periode, also die Frequenz ist nur dann wichtig wenn du z.B. ein Schaltnetzteil hast. Wenn du da die Schaltfrequenz erhöhst kannst du die Spule und den Kondensator kleiner machen.
Wenn du Timer1 für die PWM benutzt kannst du ohne weiteres Timer0 als Timer benutzten. Diese beiden Timer sind vollkommen unabhängig.
Die PWM beeinflusst die Datenübertragung nicht, weil die Datenübertragung über die Hardware UART wieder ein anderer Teil des Controllers ist.

Testus2K
07.08.2010, 18:19
Vielen dank schonmal dafür!

dann hätte ich noch ein paar kleinigkeiten, ich dem Programmierbeispiel steht

Do
Compare1a = 205
Compare1b = 51
Loop

muss das "Comparexx = xx" immerwider neu gesetzt werden?

ginge nicht auch:



Compare1a = 205
Compare1b = 51

Do
Loop

?

In dem Beitrag steht, dass man 2 Ausgänge damit timen kann, ich habe mal geguckt und etwas geradten, ist das richtig, dass es ein OC Ausgang sein muss, aber es ist egal welche beiden? und ist auch beim AtMega32 die Zahl auf 2 begrenzt?

denn dann bräuchste ich zwei Hardware timer und einen normalen für die Lichschranken

Kampi
07.08.2010, 18:27
Ja du musst das Register jedesmal neu setzen, weil das nach jedem Durchgang resetet wird.
Egal welcher OC-Ausgang ist relativ. Wenn da steht OC1A dann sagt das OC aus das es ein PWM-Ausgang ist, die 1 sagt dir das der Ausgang des Compare-Registers zu Timer 1 gehört und das A sagt dir aus das es Ausgang A vom Compare-Register des Timer 1 ist. Es gibt beim Mega32 auch OC1B das ist dasselbe nur das das Ausgang B ist.
Dafür steht auch das Compare1a. Das Compare sagt dem Compiler das das Compare-Register beschrieben wird, die 1 sagt ihm von welchem Timer und das A sagt ihm das es Ausgang A ist. Wenn da steht OC0 ist es der PWM-Ausgang von Timer 0. Du kannst ja Timer1 für die Hardwaretimer nehmen, also A und B und Timer0 für die Lichtschranke.

Testus2K
07.08.2010, 18:43
"2 8-bit und 1 16-bit Timer"
Es gibt OC0, OC1A, OC1B und OC2, und ich habe 3 timer,
also könnte ich doch 2 Hardware PWM's laufen lassen und den dritten timer zum auslesen der Lichtschranke nehmen, oder?