PWM aus int. 4MHz => 250Hz

Gast #316077
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
Gast #316078
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
Gast #316080
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
Gast #316084
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 =)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren