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
"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
Noch ne Frage: sollen die 4MHz oder die 250Hz moduliert werden :-) Welcher µP ? Welches Datenblatt ?
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
> 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.
@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 =)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.