Forum: Mikrocontroller und Digitale Elektronik Waitms und CPU-Clock


von Johannes K. (johngun) Benutzerseite


Lesenswert?

In Bascom war Waitms 100 für mich bislang das was es heißt.

Jetzt habe ich eine Schaltung ( Weihnachtsstern of Hell )
in der ich den internen Oszilator ohne Quarz benutze. Muss alles billig 
sein. Jetzt ändert sich  Wait  in Abhängigkeit von $Chrystal.

Hab ich es erst heute gemerkt oder is da noch was in den Fusebits ?

von Oliver J. (skriptkiddy)


Lesenswert?

>Jetzt ändert sich  Wait  in Abhängigkeit von $Chrystal.

Lass mich raten: Je größer $Crystal, umso länger dauern 100ms? Das 
könnte daran liegen, das Bascom die Wait-Verzögerungsschleifen genau mit 
diesem Wert berechnet.

Gruß Skriptkiddy

von Johannes K. (johngun) Benutzerseite


Lesenswert?

Ich hatte bisher immer nen Quartz oder ext. Oszi
Wenn die Fusebits richtig sind ist es also bei Quarz und ext. Oszi egal 
was ich hinter $Chrystal schreibe.

Oder liefert $Chrystal nur einen Parameter und hat gar keinen Einfluss 
auf die Clock ?

von Lehrmann M. (ubimbo)


Lesenswert?

Johannes Krumm schrieb:
> Ich hatte bisher immer nen Quartz oder ext. Oszi
> Wenn die Fusebits richtig sind ist es also bei Quarz und ext. Oszi egal
> was ich hinter $Chrystal schreibe.
>
> Oder liefert $Chrystal nur einen Parameter und hat gar keinen Einfluss
> auf die Clock ?

Denk doch mal nach. Dein Compiler muss wissen welche Frequenz dein Quarz 
hat um entsprechend viele Takte zu warten.

Wenn du deinem Compiler erzählst (beispielhaft) ich hab nen 4 MHz Quarz 
dann weiß der Compiler er muss für 100ms von mir aus 1000 Takte warten. 
Wenn du ihm jetzt aber einnen 8 MHz Quarz einsetzt (in der Schaltung) 
dann wartet der Microcontroller immmernoch 1000 Takte aber die gehen 
doppelt so schnell vorbei (4*2=8).

Das gleiche gilt auch wenn du dem Compiler erzählst du verwendest einen 
Takt - diesen aber dann nicht verwendest ....

von Oliver J. (skriptkiddy)


Lesenswert?

Johannes Krumm schrieb:
> Oder liefert $Chrystal nur einen Parameter und hat gar keinen Einfluss
> auf die Clock ?

Ja. Genau so ist es. Den Clock bestimmen die Hardware (Quarze usw.) und 
die Clock-Fuses und das unabhängig von dem $Crystal-Parameter.
Da Bascom allerdings nicht erraten kann, mit welchem Takt dein AVR 
läuft, musst du es angeben. Sonst könmte es den UART nicht richtig 
initialisieren und die Warteschleifen wären nicht "exakt". [1]

[1]  http://avrhelp.mcselec.com/index.html

Gruß Skriptkiddy

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.