Atmega32 Taktproblem

Gast #2216275
Lesenswert?

Hallo zusammen

Ich hoffe, ihr könnt mir weiterhelfen. Ich habe ein AVR Board von Pollin 
welcher mit einem Atmega32 läuft. Dieser wird extern versorgt durch 
einen 16MHZ Quarzoszillator. Die Fusebits habe ich so gestellt, dass er 
den externen Oszillator mit hoher Frequenz wählt.

In C habe ich folgendes Programm geschrieben:

int main(void){
DDRD = 0xFF;
PORTD = 0xFF;

while(1){
PORTD = ~PORTD;}

return 0;}

Dieses Programm ist eigentlich dazu da, den Takt zu messen. Schliesse 
ich nun ein Oszilliskop an den ausgang an, wird mir eine Frequenz von 
1,6 MHZ angezeigt???

Eigentlich versuche ich die ganze Zeit, ein LCD-Display anzuschließen. 
Anscheinend funktioniert aber der Takt nicht richtig.

Wähle ich über die FUSE-Bits einen internen Takt von 1 MHZ dann messe 
ich mit obigem Programm 100 kHz?!?

Vorab vielen Dank für eure Hilfe!

Gruß Andre
Gast #2216292
Lesenswert?

>Dieses Programm ist eigentlich dazu da, den Takt zu messen. Schliesse
>ich nun ein Oszilliskop an den ausgang an, wird mir eine Frequenz von
>1,6 MHZ angezeigt???

Fünf Takte für einen Schleifendurchlauf finde ich ist ok.
Gast #2216303
Lesenswert?

Erstmal danke für die Antworten.

Ja sowas habe ich schon vermutet. Hab zuerst an Clkdiv gedacht aber das 
ist ja eher bei den kleineren atmegas der fall.

ich frag mich nur wieso das display zum teufel nicht laufen will. hab 
etliche programme selber geschrieben und einige kopiert. auch die hier 
beschriebenen. ist ja nur ein simples 16x2 display. klappt weder im 4 
bit noch im 8 bit modus.
Gast #2216305
Lesenswert?

>ich frag mich nur wieso das display zum teufel nicht laufen will. hab
>etliche programme selber geschrieben und einige kopiert. auch die hier
>beschriebenen. ist ja nur ein simples 16x2 display. klappt weder im 4
>bit noch im 8 bit modus.

Falsch angeschlossen? Dann kannst du noch so viel Software
ausprobieren.
#2216335
Lesenswert?

Respekt, das frisst er und macht tatsächlich 4 Takte daraus. Es reicht 
also die temporäre Variable zu deklarieren.

Andre schrieb:
> Dieses Programm ist eigentlich dazu da, den Takt zu messen. Schliesse
> ich nun ein Oszilliskop an den ausgang an, wird mir eine Frequenz von
> 1,6 MHZ angezeigt???

Es gibt übrigens bei den neueren Avrs die CKOUT-Fuse, welche an einem 
Pin den Takt ausgeben lässt.
Gast #2216341
Lesenswert?

>Respekt, das frisst er und macht tatsächlich 4 Takte daraus. Es reicht
>also die temporäre Variable zu deklarieren.

Zu deklarieren wohl nicht, aber sie zu benutzen.
Mit volatilen Variablen rechnen bringt immer
viel Overhead. Also schön immer erst in temporäre
Variable kopieren, dann damit rechnen und wenn erforderlich
in die volatile zurückkopieren.

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