Forum: Mikrocontroller und Digitale Elektronik Timer 0 Berechnen bei Atmega32


von James (Gast)


Lesenswert?

Hallo,

ich hab eine frage.

Interner Oszilator 1MHz!

Timer 0 soll verwendet werden, um an OC0/PB3 eine konstante Frequenz von 
4,5 kHz möglichst genau zu erzeugen.

Welche Konfiguration muss ich dafür verwenden bei der am wenigstens 
Programmieraufwand notwendig ist?

Ein Programm ist nicht notwendig!

Welche Frequenz liegt wirklich am OC0/PB3 Pin an ?



Jungs bitte um Hilfe !!!!

von spess53 (Gast)


Lesenswert?

Hi

>Welche Konfiguration muss ich dafür verwenden bei der am wenigstens
>Programmieraufwand notwendig ist?

CTC.

>Welche Frequenz liegt wirklich am OC0/PB3 Pin an ?

4,505 kHz.

MfG Spess

von James (Gast)


Lesenswert?

spess53 schrieb:
> Hi
>
>>Welche Konfiguration muss ich dafür verwenden bei der am wenigstens
>>Programmieraufwand notwendig ist?
>
> CTC.
>
>>Welche Frequenz liegt wirklich am OC0/PB3 Pin an ?
>
> 4,505 kHz.
>
> MfG Spess



wie bist du auf den wert drauf gekommen?

und warum CTC ? kannst du mir das bitte ausführlicher erklären :)

aber super danke für die schnelle antwort! :)

von James (Gast)


Lesenswert?

was muss ich in den compare register schreiben ?

hast du mir ein rechen weg ?

von spess53 (Gast)


Lesenswert?

Hi

>was muss ich in den compare register schreiben ?

$6E bei Prescaler 1.

>hast du mir ein rechen weg ?

Nö. Ein eigenes Programm.

MfG Spess

von Mike (Gast)


Lesenswert?

James schrieb:
> Ein Programm ist nicht notwendig!

Ohne Programm wird es schwierig sein, den Timer zu konfigurieren. Danach 
läuft der aber ohne Programm.

Deine 4,5kHz sind allerdings nicht ohne weiteres exakt hinzukriegen, 
weil die Periodendauer kein ganzzahliges vom Oszillator ist. Man kann 
tricksen und durch Ausblenden von Pulse den Fehler verkleinern. Das 
führt allerdings zu einem Jitter. Und natürlich kann die erzeugte 
Frequenz bestenfalls so genau wie der interne Oszillator sein.

von James (Gast)


Lesenswert?

mich interessiert nur noch wie man auf den wert kommt mit dem prescaler 
1 .. brauch das für eine hausaufgabe. also mit rechenweg.

danke für die vielen antworten :)

von Thomas E. (thomase)


Lesenswert?

James schrieb:
> was muss ich in den compare register schreiben ?
>
> hast du mir ein rechen weg ?

OC0 toggelt im CTC-Mode. Ein-Aus-Ein-Aus.
Also mit doppelter Frequenz toggeln.

1MHz / 9KHz = 111,111

OCR0 = 110:

F = 1MHz / (OCR0 +1) / 2 = 4,505KHz.

mfg.

von spess53 (Gast)


Lesenswert?

Hi

>1 .. brauch das für eine hausaufgabe. also mit rechenweg.

Datenblett-> Timer0 -> Modes of Operation -> CTC

MfG Spess

von James (Gast)


Lesenswert?

Thomas Eckmann schrieb:
> James schrieb:
>> was muss ich in den compare register schreiben ?
>>
>> hast du mir ein rechen weg ?
>
> OC0 toggelt im CTC-Mode. Ein-Aus-Ein-Aus.
> Also mit doppelter Frequenz toggeln.
>
> 1MHz / 9KHz = 111,111
>
> OCR0 = 110:
>
> F = 1MHz / (OCR0 +1) / 2 = 4,505KHz.
>
> mfg.



warum OCR0 = 110 ?

von holger (Gast)


Lesenswert?

>warum OCR0 = 110 ?

Weil 0 auch ein Zählerwert ist. 0..110 = 111 Steps.

von spess53 (Gast)


Lesenswert?

Hi

>warum OCR0 = 110 ?

(OCR0 +1) = 111,111 -> OCR0 gerundet = 110 (0x6E).

MfG Spess

von James (Gast)


Lesenswert?

vielen dank :))

der thread kann geschlossen werden

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.