PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Externer Takt,aber wie definieren?



Involut
03.10.2004, 19:55
Hi,
Ich habe einen Mega 16 mit externem Takt(Quarzoszilator).
Wie "sage" ich BASCOM das dies so ist und welche Frequenz?

mfg

Involut

tobimc
03.10.2004, 20:15
Hi Involut!

dazu musst du die sog. Fusebits umstellen.
Ich mache das ganz gerne mit dem AVRStudio von Atmel.
Aber mit Bascom geht das auch. (Ich weis nur nicht wie... :D)

Wenn du umgestellt hast, wagst du das BASCOm in
Options > Compiler > Communication
oder sagst am Anfang des Quellcodes "$crystal = <Frequenz in Herz>"

Liebe Grüße,
Tobi

Involut
03.10.2004, 20:38
Hi,
und vielen Dank.Ich habe mich wohl etwas umständlich ausgedrückt.
Ich hatte die Fuse bits schon gesetzt wohl aus versehen und dann den Takt abgeschlossen um Die Sache wieder grade zu biegen.Allerdings wuerde ich ihn gerne Dranlassen.Und jetzt hatte ich timing probleme,
genau genommen hat er bei wait 1 , 2sec gewartet usw.
Nun dachte ich es läge an Bascom,weil Bascom nicht "weiss" das es nen ext. Takt gibt.
Allerdings habe ich den Übeltäter gerade gefunden.
Wenn man diese Zeile weglässt

Config Servos = 2 , Servo1 = Portb.7 , Reload = 10 , Servo2 = Portb.0 , Reload = 10

dann geht er wieder Normal.
Nun weiss Ich zwar woran es liegt habe aber keine Ahnung wie man da Abhilfe schafft.Wenn also jemand ne idee hat.

gruss

recycle
03.10.2004, 21:11
Nun weiss Ich zwar woran es liegt habe aber keine Ahnung wie man da Abhilfe schafft.Wenn also jemand ne idee hat.


Ich habe bisher die Erfahrung gemacht, dass der "Wait"-Befehl immer reichlich ungenau arbeitet.

Ich würde diesen Befehl grundsätzlich meiden, da ich es auch nicht besonders elegant finde den Controller sekundenlang in einer Art Warteschleife nichts tun zu lassen.

Für kurze Pausen unter einer Sekunde eignet sich sowieso nur der Befehl "Waitms" und das aber auch nur, wenn es nicht so genau auf die exakte Zeiten ankommt.
Wenn man exakte Zeiten einhalten will, geht das soweit ich weiss nur über einen Timer.
Eleganter ist das auf jeden Fall, weil der Controller dann während der Wartezeit auch noch irgendwas sinnvolles machen kann. Leider ist es mit Timern aber auch meist kniffliger, besonders wenn man viele verschieden lange Pausen benötigt, oder Funktionen nutzt für die Bascom die Timer intern belegt.

Involut
03.10.2004, 21:30
..ich will aber Servos benutzen und die tuens auch nicht...:(

recycle
03.10.2004, 22:06
..ich will aber Servos benutzen und die tuens auch nicht...


Die Bascom-Routinen für Servos nutzen intern einen Timer, aber der kann auch nur richtig funktionieren, wenn die Fusebits richtig auf externen Oszillator gestellt sind, der externe Oszillator richtig funktioniert und in Bascom die richtige Frequenz des Qszillators eingestellt ist.

Die Einstelungen in Bascom und die Fusebits hast du ja überprüft, da bleibt dann eigentlich nur der Oszillator selbst. Hast du mal überprüft, ob der richtig angeschlossen und die Lötstellen nicht irgendwie unsauber sind?

Je nachdem was man als Oszillator nimmt, gehören da auch noch Kondensatoren zu. Da habe ich mich vor einiger Zeit mal mit den Kondensatoren vertan und hatte anschliessend dasselbe Problem wie du.

Involut
03.10.2004, 22:42
Also,
wenn man die Config Servos Zeile oder die Enable Interrupt Zeile Weglässt arbeiten die Delay Funktionen exact.

Gruss

Involut

Involut
03.10.2004, 22:47
...wo sieht man den welche Kondensatoren man braucht?

gruss

Involut

Involut
13.10.2004, 01:34
OK,
Prob gelöst.
Einfach anschliessen und Vernünftiges Netzteil nehmen!!!!!...meinFehler... ](*,)
BTW man kann auch AVRs welche bei den Fuses Auf Quarz gestellt sind benutzen.Sprich eine Platine mit OSZI ist universell einsetzbar.

mfg

Involut