PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Atmega162 + 8Mhz Quarz will nicht laufen



demmy
24.11.2011, 20:03
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! ;)

demmy
24.11.2011, 23:10
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
24.11.2011, 23: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!

demmy
25.11.2011, 12:47
$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?

Kampi
25.11.2011, 15:25
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, 21: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.

demmy
26.11.2011, 00:48
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, 10:30
Die beiden würde ich mal prüfen:
20652

demmy
26.11.2011, 14:10
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, 18: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...

demmy
26.11.2011, 23:45
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?

Kampi
27.11.2011, 09:26
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, 09: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.

demmy
27.11.2011, 12:11
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!