Forum: Mikrocontroller und Digitale Elektronik PWM aus int. 4MHz => 250Hz


von Bernd (Gast)


Lesenswert?

Hi!

Ich habe eine Frage und zwar wie mache ich aus einem 4MHz internen Takt
ein 250 Hz moduliertes Signal??
Ich glaube eine 9bit PWM wäre hier am besten, aber was weiß schon ich
=)

Hat vielleicht jemand zufällig solch einen, zumindest ähnlichen Code,
der in C geschrieben ist?? wäre mir sehr sehr hilfreich!

vielen dank im voraus
Bernd

von peter dannegger (Gast)


Lesenswert?

"Ich habe eine Frage und zwar wie mache ich aus einem 4MHz internen
Takt
ein 250 Hz moduliertes Signal??"


Ich sach mal, es gibt mindestens 100 verschiedene
Modulationsverfahren.

Da mußt Du schon etwas präziser werden (AM, SSB, FM ... ?).


Peter

von Michael (Gast)


Lesenswert?

Noch ne Frage: sollen die 4MHz oder die 250Hz moduliert werden :-)

Welcher µP ? Welches Datenblatt ?

von Bernd (Gast)


Lesenswert?

so mein problem mit den 250Hz hat sich jetzt gelöst.
Verwende jetzt meine 4MHz internen Takt und dieser wird mit der 9bit
PWM über den daumen gerechnet auf 4kHz verkleinert (dies ist langsam
genug für meine aufgabe).

Nein Problem ist jetzt, dass ich ein gewisses bitmuster (1 byte groß)
von der UART einlese. Dieses Byte soll dan PWM moduliert werden, d.h.
auf 4kHz "verlangsamt" und dann wieder raus geschrieben werden, an
irgend einem freien port.

Hat jemand an kleines PWM programmierbsp für mich??

mfg hannes

von Karl H. (kbuchegg)


Lesenswert?

> Hat jemand an kleines PWM programmierbsp für mich??

Vielleicht bin ich nicht der einzige Leser, dem es so
geht: Ich hab noch nicht mal verstanden was Du eigentlich
machen möchtest.

von Unbekannter (Gast)


Lesenswert?

Karl, Du bist nicht der einzige...

von Michael (Gast)


Lesenswert?

Ich habe noch ne Frage. Bist Du Bernd oder Hannes ?

von Bernd (Gast)


Lesenswert?

@Michael: Ich heiße Hannes Bernd(2ter name) Schwarz - nur die Leute
sagen alle Bernd zu mir =)

Hmm, heut klappt es nicht ganz mit meinen Erklärungen bzw. Fragen.

Ich probier es noch einmal ganz konkret.

> 1) ich lese über die UART regelmäßig ein Byte ein
> 2) zu diesem Byte werden 0x80 dazu addiert, da ich nicht bei 0
beginnen kann (ist bei meinem Programm so)
> daraus folgt ein Übertrag im HByte
> 3) jetzt sollten meine 2Byte ins Compareregister geschrieben werden
> als erstes das HByte, dann das LByte

> 4) diese werden jetzt statt mit 4MHz, mit ungefähr 4kHz am OC1A
hinausgeschrieben

meine Timerinitialisierung bisher lautet:

TCCR1A = 0x82;  // non-inverted 9bit PWM
TCCR1B = 0x01;  // CK

wird OC1A dann automatisch als ausgang gesetzt??
eigentlich doch schon ...... wird ja mit meinem NON-INVERTED auf 1
gesetzt oder?

Das ist eigentlich alles was ich machen will, komm nur noch nicht ganz
klar damit, wie ich die 2Byte ins Compareregister schreibe (zuerst H-
und dann L-Byte)

Ich hoffe ihr versteht mich jetzt =)

von Michael (Gast)


Lesenswert?

Also OC1A muß per DDRx = 1 als Ausgang aktiviert werden.
OCR1H muß zuerst geschrieben werden (landet in einem temp-Register),
dann OCR1L, welches beide Bytes übernimmt.

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.