Forum: Mikrocontroller und Digitale Elektronik Total Ratlos: Controller läuft nicht


von Enrico Schulz (Gast)


Angehängte Dateien:

Lesenswert?

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

von Hubert.G (Gast)


Lesenswert?

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)

von Enrico Schulz (Gast)


Lesenswert?

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.

von Martin K. (mkohler)


Lesenswert?

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. ;-)

von Michael W. (mictronics) Benutzerseite


Lesenswert?

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.

von Läubi (Gast)


Lesenswert?

CKOPT ist nicht für externen Ozzilator sondern fürn Quarz wenn ich das
recht erinnere

von Enrico Schulz (Gast)


Lesenswert?

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)

von TravelRec. (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.