PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ATmega32 funktioniert nicht ganz wie ich will.



Walich
19.05.2007, 00:14
Liebe Forummitglieder,

vielleicht könnt ihr mir helfen!?

Und zwar habe ich gerade meinen µC programmiert:

'===Blinkende LED===
$regfile = "m32def.dat"
$crystal = 1000000
$baud = 9600


Config Pinc.3 = Output
Led Alias Portc.3 'Für ein Port wird ein Name verwendet.
Dim I As Byte 'Eine Variable wird als ein Byte abgespeichert.
I = 250

Do
Led = 1 'Led leuchtet
Waitms I
Led = 0 'Led leuchtet nicht
Waitms I
Print "I" ; I
Loop
End

- Mit einem Oszi messe ich nicht 500 ms Periodendauer, sondern 60 ms.
Die High und Low Pegeln sind idendisch. Sauberer Rechtecksignal.
- Im Terminal werden nur solche Buchstaben geschrieben "ù".
- Der Fusebit A987. 0100: Int RC oscillator, BOD enabled.
- In den Optionen ist die Baudrate und die Frequenz richtig eingestellt.
- Im Programm auch, naja und im µC ist sie 1 MHz. Hoffe ich zumindest!

Weiß jemand woran es liegen könnte?

kolisson
19.05.2007, 10:33
mit deiner a987 sieht ja falsch aus . hier mal ein screenshot

Brösel
19.05.2007, 10:52
Hallo,
Ich denke auch das du die Fusebits nicht richtig eingestellt hast.

Da ich mich aber bei Bascom mit den Fusebits nicht auskenne, probiere ich mal dir zu Erklären wie ich mir das Vorstelle.

Du hast 4 Zeichen zur verfügung (0000) jede dieser Einstellungen entspricht einer Zahl zur Basis 2.
Also von links gelesen 2³,2²,2^1,2^0 das entspricht dann 8,4,2,1 (wenn mit 1 gesetzt).
Du hast also nach dieser Theorie 4 MHz eingestellt und deine gemessenen 60ms x 4 ~ 250ms.

Stelle also die Fuses mal so ein wie bereits gepostet.

Eine Frage stellt sich mir dabei allerdings, der µC kann ja nicht einfach 4MHz Intern erzeugen. Hast du einen Externen Quarz am µC??

Walich
19.05.2007, 15:49
Hallo
Ich habe einen 16 MHz Quarz angeschlossen, aber wenn ich den internen Takt nutze, spielt das doch keine Rolle. Andere Quarze habe ich.
Seltsam ist auch, wenn ich den Low Fusebit A987 auf 1111 stelle, also auf den Quarz, dann funktioniert überhaupt nichts mehr. Außer das ich diesen Fusebit wieder zurück stellen kann, was nicht sein darf !!!

Walich
19.05.2007, 16:12
Sorry kolisson, dein screenshot wurde beim ersten mal nicht angezeigt.

Ich habe jetzt meine Fuses geändert, aber konnte keine Veränderung feststellen.

kolisson
19.05.2007, 16:42
also ... so wie ich das sehe:
1 ich hab wohl ne andere version von bascom. bei meinem ersten screenshot steht da ja KLA987. dise postition hast du ja nicht. durch vergleichen der screenshots konnte ich sehen, dass bei dir KL und A987 schlichtweg auf zwei positionen verteilt sind.

interessant ist ja jetzt nur mal die A987, die du auf 0100 stehen hast. dies würde ich mit internem rc mit 8mhz interpretieren. für 1mhz muss man laut meiner version aber 0001 haben. also in die csel eine 0001.

Walich
19.05.2007, 18:03
Bei mir ist der Fusebit A987. 0001: Ext Clock, BOD enable.
Dann habe ich zufällig den Fusebit KL auf 6CK, 65mS slow rising enable eingestellt. Jetzt funktioniert alles wie es soll!

Weiß jemand wo man im Datenblatt von ATmega32 finden kann, wie die Fusebits ganz am Anfang eingestellt waren bzw. ob es da so eine Liste gibt? Wo diese erklärt werden weiß ich.
Es könnten ja noch mehr Fuses verstellt sein.

Danke euch allen.

Einen mehr oder weniger wichtige Frage:
Wo sind denn die Screenshots?

Walich
19.05.2007, 21:15
Also da bin ich mal wieder.

Leider funktionierte es nur einmal, dann wieder nicht.

Wenn ich den Fusebit A987. 0100 nutze, und überall 8 MHz einstelle, dann wird sogar der Wert I im Terminal richtig angezeigt.

Wieso klappt es mit dem Quarz nicht?


Kann es sein, siehe hier: https://www.roboternetz.de/phpBB2/viewtopic.php?t=30555
dass der M32 den Quarz nicht mehr richtig anregen kann?

Mir fällt einfach nichts mehr ein.

Brösel
20.05.2007, 14:54
Benutzt du denn nu den Internen oder einen Externen Quarz??

Falls du dir bei dem Externen nicht sicher bist ob dieser richtig Arbeitet,
wechsele Ihn doch einfach und guck ob es was gebracht hat.

Vitis
21.05.2007, 14:53
intern gibts keinen Quarz, schön währs

Brösel
21.05.2007, 16:21
mit Internem Quarz meinte ich den Schwingkreis der im inneren eines jeden AVRs Schwingt.

Ist das so verkehrt, dann kläre mich bitte auf!!

Vitis
21.05.2007, 23:35
Im Normalbetrieb auf der Werkbank oder im Wohnzimmer ist
der Unterschied nicht groß, knifflig wirds bei Anwendungen in
unterschiedlichen Temperaturumgebungen und asynchroner
serieller Datenübertragung, weil der interne Schwingkreis da
ne gewaltige Drift hat und dann die Datenraten nicht mehr stimmen.
Das verursacht dann die tollen Hilferufe hier im Forum:
"Hilfe mein Robby sendet nur noch Mist, gestern gings noch !!!" ;)

Walich
01.06.2007, 23:46
Hallo wieder mal.

Habe einen 4 MHz Quarz angeschlossen.
Funktioniert prima!
Weiß aber nicht für wie lange!?
Ich werde einfach mal weiter rum experimentieren.

Also vielen Dank an alle.