Gast
#3992252
Ich möchte gernen einen PWM zwischen zwei Ausgängen schalten. Wie gehe ich da am besten vor? Ich nutzte einen Attiny841.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
|
Anzeige
|
PWM Pin umschalten
Gast
#3992252
Ich möchte gernen einen PWM zwischen zwei Ausgängen schalten. Wie gehe ich da am besten vor? Ich nutzte einen Attiny841.
Gast
#3992309
Hab noch einmal ein bisschen angepasst,
Jedoch bekomme ich in die Zuweisung auf OC1A nicht hin. Die werden nicht übernommen.
Gast
#3992321
Sepp schrieb: > Jedoch bekomme ich in die Zuweisung auf OC1A nicht hin. Die werden nicht > übernommen. Vielleicht erklärst erstmal du mal klar und deutlich und ausführlich, was du eigentlich willst und was dadran jetzt nicht geht. Ich hab zB keine Lust aus deinem Code mir das zusammenzureimen. horstrüdiger schrieb: > ....und was dadran jetzt nicht geht. Ich hab zB > keine Lust aus deinem Code mir das zusammenzureimen. Wenn Du das aus den Kommentaren nicht ersehen und aus der Fehlerbeschreibung nicht entnehmen kannst, ist auch nicht zu erwarten, daß ausgerechnet DU ihm eine Hilfe sein könntest.
Gast
#3992411
Hi
> TCCR1B |= (1<<WGM12) | (0<<WGM11) | (1<<WGM10); // Fast PWM, 8-bit
WGM11 und 10 befinden sich in TCCR1A
MfG Spess
Gast
#3992767
Kai Mauer schrieb: > horstrüdiger schrieb: >> ....und was dadran jetzt nicht geht. Ich hab zB >> keine Lust aus deinem Code mir das zusammenzureimen. > > Wenn Du das aus den Kommentaren nicht ersehen und aus der > Fehlerbeschreibung nicht entnehmen kannst, ist auch nicht > zu erwarten, daß ausgerechnet DU ihm eine Hilfe sein könntest. Wenn dir alles klar ist, warum erläuterst DU es nicht für die, die wenigstens etwas verstehen wollen und nicht rumrätseln wollen. Eine deutlich formuliertes Ziel, welche Auswirkungen zu beobachten sind und klare Fragen dazu sehe ich halt nicht. Ohne Vermutungen anstellen zu müssen oder wie spess53 herumzustochern wird es wohl nur sehr zäh weitergehen.
Gast
#3994059
So, habe das soweit gelöst. Stellt sich nur die Frage, ob es so richtig ist.
Wenn ich nun einen Wert in OC1A lade von 0, glimmt eine Led noch gaanz schwach. Ist das irgendwie zu beheben? Ich lösche derzeit bei Wert 0 einfach die DDR zuweisung und setze sie wieder wenn Wert > 0 ist.
Gast
#3994077
Sepp schrieb: > Ist das irgendwie zu beheben? @Kai Mauer: Jetzt ist deine Hilfe gefragt. Du bist doch wohl der einzige, der das kann (sagst du wenigstens). Kai Mauer schrieb: > Wenn Du das aus den Kommentaren nicht ersehen und aus der > Fehlerbeschreibung nicht entnehmen kannst, ...
Gast
#3994092
Ich hatte mich zu Beginn vielleicht etwas undeutlich ausgedrückt, was evtl. auch auf fehlendes KnowHow zurückzuführen ist. Über die PWM steuere ich einen Motor-Treiber an. Nun dürfen beide PWMs nicht gleichzeitig laufen. Ansonsten kommt es dazu, dass der Motor anhält. Nun wollte ich eigentlich das so machen, dass der Wert für die Motorgeschwindigkeit über ein Register entsprechend gemapped wird. War hier aber nachhinein nicht nötig. Ich nutzte das A und B Register eines Timers, was mir ausreicht. Das ganze funktioniert nun soweit. Jedoch steht noch die Frage nach dem Deaktivieren der PWM aus. Desweiteren macht es was, wenn ich jedes mal den DDR setze bzw lösche? Gibt es da einen unteschied zu einer "last_" Variable, die dann in einer Anweisung abgefragt wird Pseudocode
Kai Mauer schrieb: > horstrüdiger schrieb: >> ....und was dadran jetzt nicht geht. Ich hab zB >> keine Lust aus deinem Code mir das zusammenzureimen. > > Wenn Du das aus den Kommentaren nicht ersehen und aus der > Fehlerbeschreibung nicht entnehmen kannst, ist auch nicht > zu erwarten, daß ausgerechnet DU ihm eine Hilfe sein könntest. Da steht "keine Lust" und nicht "kann nicht". Außerdem: Welche Fehlerbeschreibung? Das ist nicht dein Erst, oder? Weder die spärliche Absichtserklärung noch die "Fehlerbeschreibung" sind Eindeutig. Die Quelltextkomentierung ist auch kaum Aussagekräftig. Der erste Schritt besteht immer darin das Problem eindeutig in klare und präzise Worte zu fassen. Dann kommt man oft selber drauf. Der Code ist kaum eine Hilfe da er nicht leistet was er soll. Sepp schrieb: > Ich möchte gernen einen PWM zwischen zwei Ausgängen schalten. Und zwei Beiträge später kommt dann erst Sepp schrieb: > Jedoch bekomme ich in die Zuweisung auf OC1A nicht hin. Das ist hier kein Hellseherforum in dem man erraten oder ausknobeln soll was genau gewollt ist. Mit der letzen Beschreibung ist das etwas klarer. Ein Schaltplan wäre hilfreich. Was für ein Treiber soll das sein? Ich unterstelle mal das Du ein PWM-Signal erzeugen willst und dann mit "zwischen zwei Ausgägen schalten" meinst, daß du entscheiden können willst ob das ganze Signal komplett in einem Stück auf dem einen oder dem anderen Pin erscheint. Man kann das Signal auch anders aufteilen. Willst Du damit die Drehrichtung des Motors umkehren?
Gast
#3994135
Hallo, ja es geht um die Drehrichtungsumschaltung eines TI DRV88xx Motortreibers. Habe AIN1 und AIN2 zur Bestimmung der Drehrichtung. Beide Eingänge können mit PWM angetrieben werden. Eine einzelnen Pin für die Drehrichtung gibt es bei dem DRV8833 nicht.
Gast
#3994146
"// ?? Prescaler > 64 geht nicht" Hatte da einen Fehler gemacht. Der Register wurden an einer anderen Stelle bereits betrieben. Jedoch vielleicht eine kleine Frage noch. Normalerweise sollte man für Motor in Verbindung mit PWM ~10kHz fahren. Wenn ich den Prescaler auf 1024 setze, hört sich der MiniaturMotor wie nen Verbrennungsmotor an (tocker, tocker, tocker,). F_CPU = 8MHz F_PWM = F_CPU/1024 = 7,8kHz Weil Du da gerade den Takt des Counters mit der PWM-Frequenz verwechselst. Der Counter zählt mit knapp 8 kHz von 0-255 bei 8 Bit (ein kompletter PWM-Zyklus). Das ergibt am Ende eine PWM-Frequenz von knapp über 30 Hz. Über die Nachkommastellen will ich da nicht steiten. Dein Prescaler ist also viel zu hoch. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|