Forum: Compiler & IDEs Probleme mit PWM Ausgabe. "Signal" nur an PINB


von pg-zonk (Gast)


Lesenswert?

Hi zusammen

Ich probiere gerade meine ersten Gehversuche in GCC. Nach ein wenig üben 
währe ich nun beim ersten Projekt in C

Und zwar geht es um eine Ansteuerung eines DC-Motors. Der Motor wird 
einen Wasserwerfer drehen. Die Grundversion, welche einfach nur einen 
Analogwert eines Potis in einen PWM umwandelt funktioniert schonmal.
Da der DC Motor mit etwa 200W erhebliche Spannungsspitzen erzeugt möchte 
ich nebst entstörung durch Drosseln, Kondensatoren und TVS Diode einen 
Sanftanlauf + abschaltung konzipieren.

Soweit so gut...

Nun ist es leider so dass nicht einmal ein PWM ausgegeben wird. 
Ausgangswerte werden zwar ins OCR2 Register des ATmega8 geschrieben, das 
PWM Signal kommt in der Simulation allerdings nur im PINB Register auf 
PB3 an. PB3 im PortB Register wird nicht getoggelt. DDRB habe ich 
übrigens auf Ausgang gesetzt. Auch der Controller gibt keinen PWM aus. 
Kennt jemand dieses Problem?

Etwas ähnliches habe ich bereits hier gefunden.

http://www.roboternetz.de/phpBB2/viewtopic.php?p=300655

Wenn ihr es wünscht lade ich morgen die Software hoch als Demoprojekt.

Noch einen Schönen Abend

von Karl H. (kbuchegg)


Lesenswert?

pg-zonk schrieb:

> einen Wasserwerfer drehen. Die Grundversion, welche einfach nur einen
> Analogwert eines Potis in einen PWM umwandelt funktioniert schonmal.


> Nun ist es leider so dass nicht einmal ein PWM ausgegeben wird.


Was jetzt?
Kriegst du eine PWM hin oder nicht.

Softanlauf ist ja nichts anderes als dass der OCR Wert einfach nur 
langsam ansteigt. Anstatt dass in deinem ersten Beispiel der OCR Wert 
vom Poti per ADC kommt, wird er jetzt einfach sukzessive erhöht, bis er 
einer Vorgabe (Vollgas) entspricht. Aber das ist ja wieder der PWM egal, 
wie du zu deinem OCR Wert kommst.

von Jörg G. (joergderxte)


Lesenswert?

@OP: Erwartest du, dass die Hardware-PWM das PORTx Register verändert?

Das wird nicht passieren - im Datenblatt gibt's dazu ein Bild (z.B. beim 
Atmega48 heißt das 'Compare Match Output Unit, Schematic') im Kapitel 
'Output compare unit'.

von pg-zonk (Gast)


Lesenswert?

Halleluja es läuft...

Erstmal Danke für eure Antworten!

> @OP: Erwartest du, dass die Hardware-PWM das PORTx Register verändert?

Genau das habe ich erwartet. Aber wie richtig schriebst passiert dies 
nicht weil ja die logische Verknüpfung zwischen PORTBx und OCx drin ist 
und nicht vor PORTx wovon ich zuerst ausgegangen bin.
Der Grund das ich keine PWM bekam lag natürlich an mir und meiner 
Software. Ein & verhängt und schon machts nicht das was man will
Tja... Datenblattlesen täte manchmal nicht schlecht.


> Softanlauf ist ja nichts anderes als dass der OCR Wert einfach nur
> langsam ansteigt. Anstatt dass in deinem ersten Beispiel der OCR Wert
> vom Poti per ADC kommt, wird er jetzt einfach sukzessive erhöht, bis er
> einer Vorgabe (Vollgas) entspricht. Aber das ist ja wieder der PWM egal,
> wie du zu deinem OCR Wert kommst.

Genau so habe ich das auch geplant. Nur ist es halt so eine Sache wenn 
man von Assembler auf GCC umsteigt und die Erfahrung fehlt. Da ist es 
auch am einfachsten die Entwicklugsumgebung zu beschuldigen ;-P

Tja dann

Prost und einen schönen Abend

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.