Hi,
Ich habe einen Mega 16 mit externem Takt(Quarzoszilator).
Wie "sage" ich Bascom das dies so ist und welche Frequenz?
mfg
Involut
Hi,
Ich habe einen Mega 16 mit externem Takt(Quarzoszilator).
Wie "sage" ich Bascom das dies so ist und welche Frequenz?
mfg
Involut
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... )
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
http://www.tobias-schlegel.de
"An AVR can solve (almost) every problem" - ts
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
Ich habe bisher die Erfahrung gemacht, dass der "Wait"-Befehl immer reichlich ungenau arbeitet.Nun weiss Ich zwar woran es liegt habe aber keine Ahnung wie man da Abhilfe schafft.Wenn also jemand ne idee hat.
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.
..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...ich will aber Servos benutzen und die tuens auch nicht...
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.
Also,
wenn man die Config Servos Zeile oder die Enable Interrupt Zeile Weglässt arbeiten die Delay Funktionen exact.
Gruss
Involut
...wo sieht man den welche Kondensatoren man braucht?
gruss
Involut
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
Lesezeichen