Hallo Leute, ich bin mittlerweile total am Verzweifeln... ich habe eine Schaltung mit 3 uC aufgebaut. Ein uC ist ein ATMega8 mit externem Quarz angeschlossen der zweite uC ist auch ein ATMega8 der seinen Takt über den XTAL1-Pin vom ersten Controller bekommt der dritte uC ist ein AT90S2313 der ebenfalls seinen Takt über den XTAL1-Pin vom ersten Controller bekommt. nun das Problem: uC 1 und 2 laufen ohne Probleme. uC 3 läuft aber irgendwie gar nicht. hier erstmal der Quellcode des 3. Controllers: ------------------------------------------------------------------ $regfile = "2313def.dat" $crystal = 4000000 'DDR = &B76543210 ; 0=Eingang ; 1=Ausgang Ddrb = &B11111111 Ddrd = &B11101111 Portb = &B01000000 Portd = &B01000001 Do Waitms 500 Portb = 64 Waitms 500 Portb = 8 Waitms 500 Portb = 16 Waitms 500 Portb = 104 Waitms 500 Portb = 0 Waitms 500 Portb = 80 Waitms 500 Portb = 96 Loop End ------------------------------------------------------------------- Ist ja soweit ein einfaches Programm. Wenn ich die Spannung einschalte, dann setzt der Controller den PortB manchmal auf 0, manchmal auf 96 und manchmal auf 64. (nur diese 3 varianten sind bisher aufgetreten) Aber ändern tut sich an dem Port-Status gar nichts... Eigentlich sollte er ja nach 0,5 Sekunden wechseln, aber es tut sich auch nach 5 Minuten nix. Was mir aufgefallen ist: der PortD wird immer richtig gesetzt, was ja darauf schließen lässt, das zumindest die ersten Zeilen ordnungsgemäß ausgeführt wurden. Um einen Hardware fehler bei der Schaltung auszuschließen, habe ich auch über einen Adapter einen ATMega8 an den Steckplatz des 2313er gesteckt und siehe da, der Mega8 läuft dort ohne Probleme. Warum klappt das also nicht mit dem 2313er? Kaputt ist der 2313er auf keinen Fall, habs schon mit mehreren Probiert, die in einer anderen Schaltung mit einem anderen Programm Fehlerfrei laufen... Bitte helft mir so schnell wie möglich... vielen Dank Robodriver PS: wen es interessiert, im Anhang noch der entsprechende Assamblercode
Ich würde den 2313 mal alleine mit externem Takt probieren um einen Prog-Fehler auszuschließen. Möglicherweise ist dem der Takt zu schlecht (welche Frequenz?), längere Leitung auf der Platine? Was ist wenn du den 2. Mega8 abziehst?(wenn gesockelt)
Alles schon probiert... den zweiten Mega8 abgezogen. Jetzt hab ich die Schaltung auch schon so weit geändert, das der 2313er seinen eigenen Takt bekommt... Aber alles ist bisher zweglos. Die Erzeugung des Taktes funktioniert auf alle Fälle, denn wenn ich einen Mega8 über einen Adapter an die stelle des 2313er stecke, dann läuft der tadellos.
Hier wurden Sie geholfen: http://forum.electronicwerkstatt.de/phpBB/topic59672_f28_bxtopic_timexDESC_by1_bz0_bs15.html ...nur dass nicht hier alles nochmals geschrieben werden muss. ;-)
Und im allgemeinen ist XTAL2 der Ausgang des internen Oszillators beim mega8. Dort sollten weiterführende Clocksignale angeschlossen werden. Zusätzlich sollte dann noch die CKOPT Fuse aktiviert werden um ein besseres Schwingverhalten zu gewährleisten.
CKOPT ist nicht für externen Ozzilator sondern fürn Quarz wenn ich das recht erinnere
Ok, leute, ich habe das Problem nun gelöst indem ich einfach einen Mega8 anstelle des AT90S2313 benutzt habe.... siehe hier ganz unten: http://forum.electronicwerkstatt.de/phpBB/topic59672_f28_bxtopic_timexDESC_by1_bz0_bs15.html (Das selbe gilt auch für euch)
Ich denke zwar nicht, daß das Problem damit gelöst ist, aber solange es (zuverlässig) geht...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.