Wenn man nur diesen Unsinn ausrotten könnte. Ich brauch fast 2 Minuten
um durch Vergleich mit dem Datenblatt + Notizzettel zu erkennen, welche
Bits da gesetzt sind. (Wenn ich im Datenblatt endlich die Tabelle
erscrollt habe um die gesetzten Bits mit einem Modus in Verbindung zu
bringen, hab ich schon wieder vergessen, welcher 1-er denn nun welches
Bit war. Also wieder zurückscrollen und mit der Register-Bit
Beschreibung vergleichen. Mist, jetzt hab ich die Bits wieder den
Bitnamen zugeordnet, aber wie war das nochmal in der Tabelle? und schon
wieder scrollen ....
Stefan Z. schrieb:
> wie define legt doch 200 fest oder?
Ja und?
Definieren kann ich viel.
Aber deiner Hardware ist das ziemlich egal, was du definierst.
Datenblatt Mega16, Tabelle 17-2
Fast-PWM Mode, der Timer zählt von 0 bis 0xFF
4Mhz / 256 = 15.6 kHz
Passt auffallend
ahh ok danke, ich dachte die 256 im datenblatt stehen für das TCNT2
register, welches beliebig beschrieben werden kann. nun ist halt die
frage wie ich genau 20khz hinbekomme? wahrscheinlich nur mit einem 10bit
timer
Stefan Z. schrieb:
> ahh ok danke, ich dachte die 256 im datenblatt stehen für das TCNT2> register, welches beliebig beschrieben werden kann. nun ist halt die> frage wie ich genau 20khz hinbekomme? wahrscheinlich nur mit einem 10bit> timer
Such dir im Datenblatt den Timer, bei dem du die Obergrenze festlegen
kannst ( in den PWM Tabellen ist das der TOP Wert )
Hi
>Such dir im Datenblatt den Timer, bei dem du die Obergrenze festlegen>kannst ( in den PWM Tabellen, ist das der TOP Wert )
Oder nimm einen passenden Quarz. 5,12MHz (Reichelt) passt genau.
MfG Spess
Da du mit einem PWM-Signal arbeitest darfst du nicht verwechseln, dass
du hier die Einschaltlänge einstellst und nicht die häufigkeit wie oft
An- und Ausgeschlatet wird.
Musste auch mal eine Frequenz von 40 kHz erzeugen ich habe dies dann
über den Compare Output Mode and Waveform Generation gemacht.
Im Datenblatt vom Atmel ist da auch eine Formel zufinden mit der man
sich die Frequenz errechnen kann und dann dementsprechend die Werte dazu
einstellt.
Ich hoffe ich könnte dir damit helfen.
Grüße
TCCR1A |= (1<<WGM11); // Fast PWM, 10-bit
TCCR1A |= (1<<WGM10); // Fast PWM, 10-bit
TCCR1B |= (1<<WGM12); // Fast PWM, 10-bit
TCCR1B |= (0<<WGM13); // Fast PWM, 10-bit
Was ist daran so schwer zu verstehen, dass du in der Tabelle der PWM
Modi einen Modus brauchst, bei dem der TOP Wert keine Konstante ist,
sondern über ein Register festgelegt werden kann.
Du hast hier einen Fast-PWM MOdus mit 10 Bit eingestellt und laut
Datenblatt ist der TOP Wert dafür 0x03FF, also dezimal 1023
4000000 / 1023 = 3910 Hz
Passt schon wieder auffallend.
(PS: Lass das TCNT Register in Ruhe. Darin zählt der Timer. Aber
logischerweise kann das nicht die Steuerung dafür sein, wann der Timer
auf 0 zurückgesetzt wird)
Tabelle 16-5
Modus 14 oder Modus 15 würden dir erlauben in ICR1 bzw. OCR1A
festzulegen, wie weit der Timer (im Register TCNT1) zählen soll, ehe er
wieder bei 0 beginnt.
Eine eigene Frage?
Dieser Thread ist über 17 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.