PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : at mega 8 pwm signal



robin
28.01.2007, 17:15
Hallo,

welche ports weden beim mega 8 für das senden von pwm signalen verwendet, oder ist das egal???

CowZ
28.01.2007, 17:31
OC1A heißen die glaub ich..

Wenn du Software-PWM meinst, kannst du jeden GIO-Pin nehmen.

Gruß, CowZ

Schokohoernl
28.01.2007, 18:47
Ein Blick ins Datenblatt hilft da ungeheuerlich!
Wer lesen kann ist klar im Vorteil! :evil:

vajk
25.02.2007, 15:56
Ein Blick ins Datenblatt hilft da ungeheuerlich!
Wer lesen kann ist klar im Vorteil! :evil:

Sie haben bezüglich PWM immer die selbe Antwort und keine Erklärung parat!
Keine Antwort ist somit besser als ein RTFM !

SIGINT
25.02.2007, 17:06
Aber ab und zu hilft es wirklich mal das Datenblatt zu lesen...
da würden sich mindestens 1/10 aller Fragen von selbst beantworten.

@robin:
Wenn ich das in nem anderen Thread richtig gelesen habe, dann sind alle OutputCompare Pins für PWM einsetzbar... also OC1A/B und OC2
Hab bis jetzt aber nur PWM per Software gemacht und kann nichts genaues dazu sagen.

Gruß,
SIGINT

robocat
25.02.2007, 18:00
datenblatt ist wichtig, ich muss aber gestehen dass ich trotz wiederholtem durchlesen immer noch mühe habe alles so ganz zu verstehen, und wenn ich es paar monate später wieder benötige hab ichs meistens vergessen.

wie SIGINT sagt, gibt es 3 pins, an denen ein hardware-pwm erzeugt werden kann (pins pb1..3). vielleicht hilft folgendes:



; portb als ausgang und auf 0 setzen
ser temp
out DDRB,temp
clr temp
out PORTB,temp

; wgm10 setzen ergibt Phase Correct PWM, 8-bit (mode 1)
; COM1A1 und COM1B1 setzen, dadurch wird OC1A und OC1B beim hochzählen bei einem bestimmten wert LOW, beim runterzählen ab diesem wert HIGH
ldi temp, (1<<COM1A1)|(1<<COM1B1)|(1<<WGM10)
out TCCR1A, temp

; kein prescaling, pwm frequenz ist somit (Taktfrequenz/256)/2
ldi temp, (1<<CS10)
out TCCR1B, temp

; wgm20 setzen ergibt hier ebenfalls Phase Correct PWM
; COM21 setzen ergibt Clear OC2 on Compare Match
; CS20 gesetzt -> ebenfalls kein prescaling
ldi temp, (1<<WGM20)|(1<<COM21)|(1<<CS20)
out TCCR2, temp

; nun OC1A einen pwm wert verpassen (25%):
ldi temp, 63
out OCR1AL,temp

; nun OC1B einen pwm wert verpassen (50%):
ldi temp, 127
out OCR1BL,temp

; nun OC2 einen pwm wert verpassen (75%):
ldi temp, 191
out OCR2L,temp

Main:
nop
rjmp Main


alle angaben ohne versprechen, dass es so klappt. sollte aber.
die pwms laufen dann alle 3 mit gleicher frequenz (*) und unterschiedlichem duty cycle. bei 1MHz taktfrequenz ist PWM-frequenz etwa 2kHz, an OC2 könnten es auch (*) ca 4 sein, da bin ich mir grad nicht ganz sicher.

wenn etwas nicht stimmt, korrigiert mich bitte.

ok, mir fällt auf, dass das eigentlich niemand gefragt hat..
vielleicht ist es trotzdem jemandem nützlich O:)

gruesse von der katz

vajk
25.02.2007, 18:12
... die pwms laufen dann alle 3 mit gleicher frequenz (*) und unterschiedlichem duty cycle. bei 1MHz taktfrequenz ist PWM-frequenz etwa 2kHz, an OC2 könnten es auch (*) ca 4 sein, da bin ich mir grad nicht ganz sicher.

öhm, warum .. in einem anderen Thread hab ich auch die Frage gesellt, wie schnell bei 20 MHz bei einen 2313 die 4 PWMs wären ...

Also ich tue mir bezüglich der PWMs echt schwer mit den Datenblättern .. da steht irgendwie überall das gleiche, durch die Mischung mit den Timern und der vielfältigen Konfiguration, hab ich nocht nicht verstanden.

Nicht PWM generell, sondern das genaue Handling, welche Flags. Die Tutorials labern da auch nur nach, und maximal 1 PWM wird erklärt .. aber schon gar nicht 4 ....
... würde mich freuen, wenn Du mir https://www.roboternetz.de/phpBB2/viewtopic.php?t=28075 auch antworten könntest.
Danke,
Vajk

SIGINT
25.02.2007, 18:41
Ja ich gebe auch zu, daß die Datenblätter nicht ganz leicht zu verstehen sind... manches ist auch doppeldeutig oder falsch.
Ich gehe dann meistens hin und Probiere einfach mal alles aus... irgendwann findet sich dann die richtige Einstellung.
Ich hab bis jetzt nur Soft-PWMs genutzt, da die AVRs relativ wenig Hardware-PWMs haben und dadurch dann die Timer belegt sind.

Gruß,
SIGINT