PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : waitms Funktion sehr ungenau?!



boeseTURBO-CT
19.05.2004, 00:11
Hallo Leute,

Ich brauche einen sehr genauen Timer um ein Steuerung zu realisieren und wollte dafür den Waitms-befehl benutzen. Nur leider kommt es mir so vor, als wäre der Befehl sehr ungenau. Hatte testweise mal waitms 250 eingegeben nur der tatsächliche wert lag bestimmt bei 1ner Sekunde oder so (ATMEGA 32 mit 16 MHz).... weiß jemand rat?

Gruss

Jan

ShadowPhoenix
19.05.2004, 00:15
Ich glaube, schuld sind die 16MHz übertaktung.
Lade dir das Programm "YaaP" runter (google rulz) und stell mal
die Fusebits deines Controllers auf externen Takt.
Wie du das machst, wird hier beschrieben:

http://www.mikrocontroller.net

Ich hoffe, ich konnte ein wenig helfen!
MfG,
ShadowPhoenix

Frank
19.05.2004, 00:37
Ja wird Takt sein! Hier findest du auch ne Beschreibung: https://www.roboternetz.de/phpBB2/viewtopic.php?t=849

recycle
19.05.2004, 01:45
Falls es nicht an den Fusebits liegt und du in deiner Schaltung einen einfachen Quarz mit 2 Kondensatoren verwendest, kontrolliere mal die Kondensatoren.

Ich hatte dasselbe Problem beim ATS902313. Nachdem ich die beiden Kondensatoren von denen ich dachte sie hätten 22pF gegen welche ausgetauscht habe die wirklich 22pF haben, dauerte "wait 1000" plötzlich nur noch eine Sekunde statt wie vorher knapp 4 Sekunden.

19.05.2004, 09:40
Hä? Ich hab die Schaltung von mikrocontroller.net (die Basisschaltung) und da sind gar keine Kondensatoren am Quarz... Hat jemand mal den Link mit Kondis am Quarz?

mit meinem Takt kuck ich auch gleich mal....

Danke erstmal!

Gruss

Jan

Frank
19.05.2004, 11:59
Schau hier rein https://www.roboternetz.de/phpBB2/dload.php?action=file&file_id=94
Da ist auch ein 902313 mit 4 Mhz dabei!

Kjion
19.05.2004, 12:54
Hä? Ich hab die Schaltung von mikrocontroller.net (die Basisschaltung) und da sind gar keine Kondensatoren am Quarz... Hat jemand mal den Link mit Kondis am Quarz?
Das ist ja auch Quarz sondern ein Quarzoszillator. Das ist nochmal ein unterschied. Wenn du genau so eine hast ( vier Anschlüße ) dann brauchst du keine Kondensatoren. Bei einem Quarz ( zwei Anschlüße ) braucht man halt noch zwei Kondensatoren von ca. 22pf. Sieh auch:
http://www.kreatives-chaos.com/index.php?seite=avrgrund

MfG Kjion

PS: mein 500ster Beitrag ;-)

boeseTURBO-CT
19.05.2004, 13:09
achso alles klar. Dann hab ich da ja nix falsch gemacht. Hab jetzt auch die FuseBits gesetzt. Jetzt läuft die waitms auch recht genau! Kann man eigentlich auch zB. waitms 1.5 nehmen, also Koma-Werte oder werden die ignoriert?

Gruss

Jan



Hä? Ich hab die Schaltung von mikrocontroller.net (die Basisschaltung) und da sind gar keine Kondensatoren am Quarz... Hat jemand mal den Link mit Kondis am Quarz?
Das ist ja auch Quarz sondern ein Quarzoszillator. Das ist nochmal ein unterschied. Wenn du genau so eine hast ( vier Anschlüße ) dann brauchst du keine Kondensatoren. Bei einem Quarz ( zwei Anschlüße ) braucht man halt noch zwei Kondensatoren von ca. 22pf. Sieh auch:
http://www.kreatives-chaos.com/index.php?seite=avrgrund

MfG Kjion

PS: mein 500ster Beitrag ;-)

19.05.2004, 13:21
Nein das geht nicht! Nimm dann zwei Befehle:

waitms 1
waitus 500

boeseTURBO-CT
19.05.2004, 13:27
ah waitus gibs auch, das wusste ich noch gar nich ;))) danke danke!

Gruss

Jan

Michael
19.05.2004, 18:32
Hallo,

Nein das geht nicht! Nimm dann zwei Befehle:

waitms 1
waitus 500
reicht aber auch Waitus 1500 ;)
aber sehr genau wirst du damit trotzdem nicht sein, je nach Umfang deines übrigen Programms hast du eine Abweichung drin.
Für genaue Sachen benutzt man einen der Timer.
Gruss, Michael

hrrh
05.06.2004, 16:42
genau ist immer relativ. fuer manche sind 10% nochh genau genung, anderen ist 0,1% abweichung schon viel zu viel. wenns genau sein muss waere assembler entv. sogar angemessener

recycle
05.06.2004, 20:05
genau sein muss waere assembler entv. sogar angemessener


Ist das was beim Bascom-Compiler hinten rauskommt nicht auch Assembler?

matren
05.06.2004, 23:31
Bedenken muss man auch daß waitus eine Konstante erwartet und nur waitms mit variablen arbeitet.
(war bei mir relevant zur Servo-Ansteuerung)

Frank
05.06.2004, 23:57
Denke die Bascom Befehle sind genauso genau wie eine Schleife in Assembler. Der Compiler generiert daraus ja eine genaue Maschinencode Schleife. Timer ist natürlich genauer