Archiv verlassen und diese Seite im Standarddesign anzeigen : Atmega162 + 8Mhz Quarz will nicht laufen
Hallo zusammen,
ich habe folgendes Problem, ich habe mir eine Platine aufgebaut, wie auf dem Schaltplan zu sehen.
20636
Die Fusebits habe ich folgendermaßen eingestellt:
Divide Clock by 8 Internally (ausgeschaltet)
Ext. Crystal Osc. Frequency 8.0- Mhz 1K CK +65ms (angewählt)
Atmega161 compability mode (angewählt)
Hab ich was vergessen???
Im Bascom Program soll zum Test erst mal nix passieren außer die LED einzuschalten,
es tut sich aber nichts, was mich vermuten lässt, dass der µC gar nicht anläuft.
Wo liegt der Fehler???
Dem Quarz is es ja normal egal wierum er eingelötet ist!???
ich zweifel gerade etwas an mir selber! ;)
Sooo also jetzt nach dem 100. mal übertragen der Fusebist funktioniert es komischerweise!?
Jetzt kann ich über einen der Dip-Schalter die LED ein und aus schalten.
Nur kommt jetzt der nächste mist. Ich wollte ein Program testen von einem anderen µC wobei ein Fehlercode durch Blinken der LED ausgegeben wird.
Das komische ist, die LED blinkt nicht. Nach dem Fehlschlag mit meinem Testprogram, habe ich einige Tests durchgeführt, mit ein paar Zeilen Code um die LED zum blinken zu bringen. Aber leider ohne Erfolg. Jetzt denke ich doch wieder das irgendwas nicht stimmt mit dem µC oder den Fusebits.
Kann mir jemand weiterhelfen?
Sauerbruch
25.11.2011, 00:26
Kann mir jemand weiterhelfen?
Das können bestimmt ein paar hundert Leute aus diesem Forum - man müsste nur noch ein klitzekleines bisschen genauer wissen, wie sich das Problem äußert. D.h. was der Controller machen soll, was er tatsächlich macht, und vor allem: Mit welchem Programmcode!
Mach uns schlau, und dann wird ganz bestimmt jemand weiterhelfen können!
$regfile = "m162def.dat" ' specify the used micro
$crystal = 8000000 ' used crystal frequency
$baud = 19200
'baud rate for second serial port
$baud1 = 19200
' use baud rate
$hwstack = 42 ' default use 32 for the hardware stack
$swstack = 40 ' default use 10 for the SW stack
$framesize = 40 ' default use 40 for the frame space
Enable Interrupts
'PORTS DEKLARIEREN
Rs485dir Alias Portd.2
Config Rs485dir = Output
Rs485dir = 0
Rs485dir1 Alias Portb.1
Config Rs485dir1 = Output
Rs485dir1 = 0 ' go to receive mode
Error Alias Porta.7
Config Error = Output
Error = 0
Code1 Alias Pinc.0
Config Code1 = Input
Portc.0 = 1
Code2 Alias Pinc.1
Config Code2 = Input
Portc.1 = 1
Code3 Alias Pinc.2
Config Code3 = Input
Portc.2 = 1
'MAIN LOOP
Do
If Code1 = 0 Then
Error = 1
Else
Error = 0
If Code2 = 0 Then
Wait 5
Error = 1
Wait 5
End If
End If
Loop
End
So also das war jetzt mal das kleine Testprogram das ich geschrieben hab. Es soll nicht viel passieren, außer das wenn der eine Dipschalter an is die LED leuchten soll, bei dem anderen soll sie blinken und bei beiden soll sie aus sein.
In der Simulation funktioniert das auch, und bei anderen µC hat das auch funktioniert zum Testen. Oder hab ich was übersehen? Ich denke nach wie vor, dass es evtl. was mit der Hardware zu tun hat?
Erstmal vorweg. Wenn du den Controller flashen kannst sind die Fusebits für den Takt usw. i.O.
Die fallen dann schonmal als Fehlerquelle weg.
Ich hab das Programm mal auf mein RN-Control gespielt und es macht auch irgendwas...ob es richtig ist weiß ich nicht :) aber das Programm funktioniert.
Hast du vielleicht einen Ersatzchip zur Hand den du mal nehmen könntest?
peterfido
25.11.2011, 22:11
Der 162er ist nicht PIN-Kompatibel zu den meisten anderen AVR. Also sicherstellen, dass das Board / die Beschaltung auch zu dem 162er passt. Dann würde ich die Blinkfrequenz mal heruntersetzen, falls der Takt nicht stimmt, könnte die Blinkfrequenz so langsam sein, dass Du denkst, da passiert nichts. Dann mal die Watchdogeinstellungen prüfen, nicht dass der always on ist.
Naja also die Blinkfrequenz is laut Program aktuell bei 5 Sekunden, da müsste man doch was sehen oder? ;)
Wie kann ich denn das mit dem Watchdog überprüfen?
peterfido
26.11.2011, 11:30
Die beiden würde ich mal prüfen:
20652
Hi,
also ich habe die Fusebits jetzt nochmals überprüft, ist alles so eingestellt wie es sein soll bzw. wie du vorgschlagen hast. Das einzige ist, ich hab den Kompatibilitätsmodus zum atmega161 aktiviert. Das dürfte aber nicht der Grund sein oder?
Also nach wie vor die LED lässt sich ein- und ausschalten per software, aber sie lässt sich nicht zum blinken bringen, als würden die wait-befehle nicht ausgeführt werden??
Sauerbruch
26.11.2011, 19:57
Naja also die Blinkfrequenz is laut Program aktuell bei 5 Sekunden
Deshalb wäre es ja auch so wichtig zu wissen, mit was für ´nem Takt der Controller tatsächlich läuft.
Hast Du das CKDIV8-Fusebit gelöscht? Das ist nämlich im Auslieferungszustand gesetzt...
Ja das Fusebit habe ich gelöscht.
Also der µC soll mit 8MHz laufen.
Ich habe jetzt auch nochmal verschiedene Programme getestet mit immer dem selben Ergebnis. Könnte evtl. doch der µC defekt sein?
Eventuell.......das kannst du halt nur ausschließen wenn du einen anderen Controller hast den du mit selben Fusebit-Einstellungen und dem selben Programm anschließt und er den selben Fehler aufweist.
peterfido
27.11.2011, 10:30
Hast Du nach dem Übertragen des Codes diesen mal verififziert?
Edit:
Wenn Du den M162 im M161 komp. Modus laufen lässt, müsste im Kopf vom Code doch ein
$regfile = "m161def.dat" ' specify the used micro
rein.
Es geht!!!!
also das mit dem "m161.def.dat" hat nicht funktioniert, da er weiterhin den m162 erkannt hat und dann sofort eine Störmeldung kam.
Aber nachdem ich in den Fuesebits den komp. Modus deaktiviert hab, geht es jetzt!!! Warum auch immer??
Danke für euere Hilfe!
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.