Hallo,
ich möchte an meinem 128er einen HW-UART benutzen (egal ob 1 oder 2).
Laut Bascom Hilfe würde mit folendem Code automatisch der erste benutzt:
$regfile = "m128def.dat"
$crystal = 16000000
$baud = 19200
Do
Print "möp"
Waitms 50
Loop
End
Leider spuckt er nichts an seinem TxD Pin aus (mit nem Oszillot
geprüft). Woran kann das liegen?
Wie kann ich den 2ten HW-UART benutzen? Bisher krieg ich nur
Fehlermeldungen, wenn ich folgendes versuche:
$regfile = "m128def.dat"
$crystal = 16000000
$baud = 19200
Do
Print #2, "möp"
Waitms 50
Loop
End
Kann es daran liegen, dass ich fälschlicherweise meinen ISP zuerst an
MISO und MOSI hatte, anstatt an RxD und Txd? Da kann doch eigentlich
nichts kaputtgehen...
P.S. Mit meinem Mega8 läuft das schon ohne Probleme...
Ratlose Grüße
Vielleicht funktioniert das Programmieren an sich nicht? Laß doch mal
parallel oder alternativ zum Print-Befehl einen Ausgang an- und
ausschalten (toggle) - wenn Du dann immer noch nichts auf dem Oszi
siehst, hast Du woanders ein Problem.. :-)
Ja, das probiere ich gerade und noch nichtmal das klappt richtig!
Mit dem Mega8 war das alles kein Problem, wo ist denn jetzt der riesen
Unterschied zum Mega128?
Was ich probiert habe, ist, dass ich den internen Oszillator auf 1,2,..8
MHz gestellt habe (per fuse bits). Dann habe ich per toggle einen port
geschaltet und kam mit externem 16Mhz Quarz auf maixmal 1,1Mhz am port
(per toggle). Kommt mir langsam vor, aber vielleicht liegt das ja an
bascom.
Wenn ich das ganze jetzt aber manuell machen will:
Do
portc.0 = 0
waitms 10
portc.0 = 1
waitms 10
loop
geht es nicht.
Muss ich noch etwas anderes beim mega128 beachten als beim mega8?
Also das togglen funktioniert, aber port an, port aus geht nicht, da
macht er nur einen impuls von ein paar ns, ansonsten ist der port
dauerhaft an.
Bei michas code geht auch gar nichts, der TxD bleibt einfach tot. Der
MAX232 ist aber richtig angeschlossen, das hab ich mehrfach geprüft und
gemessen.
Hab jetzt erstmal wieder auf den internen 1MHz umgeschaltet.
Ich bin echt am Ende mit meinen Idden...
Also wenn du nicht mal nen Port an bzw. ausschalten kannst, dann würd
ich da mal den Hebel ansetzen und nicht den 2ten vor dem 1ten Stockt
bauen.
Kannst du überhaupt vernünftig flashen? Benutzt du die richtigen TDI/TDO
Ports (ist beim Atmega128 anders als bei den anderen)?
Sepp
> Muss ich noch etwas anderes beim mega128 beachten als beim mega8?
Naja, erste Vermutung wäre gewesen: Falsche Anschlüsse für den
Programmer benutzt. Aber da Du sagst, dass es mit dem Programmieren an
sich klappt, scheidet das wohl aus...
Ja, das mit dem Print hab ich auch erstmal auf eis gelegt. Damit hatte
ich gleich angefangen, weil ich das aufm Mega8 schon ohne probleme alles
gemacht hab..
Am Anfang hatte ich die MISO und MOSI Pins am 128 benutzt, aber das ist
falsch, das hab ich dann auch gelesen.
Jetzt hab ich es so wie im Datenblatt auf S. 304:
MOSI = PE0, also Pin 2
MISO = PE1, also Pin 3
Ponyprog meldet auch keine Fehler und die fuse bits kann ich auslesen
und schreiben, von daher gehe ich davon aus, dass der ISP schonmal
fehlerfrei geht.
Ich seh grad dass UART und ISP die gleichen beiden Pins haben, von daher
würd ich den ISP-Adapter abziehen wenn du mit dem Programmieren fertig
bist und dann UARTen willst.
Welche Ports hast du denn versucht ein und aus zu schalten?
Sepp
> M103 Kompatibilitätsbit?> Aha - und was ist das?
Die M103 Compatibility Fuse ist ein fieses kleines Fusebit, das dafür
sorgt, dass der Mega128 sich so verhält als wäre er ein Mega103. Das
bedeutet, dass bestimmte Funktionen nicht verfügbar sind. Dieses Fusebit
ist im Auslieferungszustand gesetzt. Wenn Du den Mega128 als solchen
verwenden willst, dann muss dieses Bit gelöscht werden (also auf
"unprogrammed" gesetzt werden)
Das Bit ist echt ein fieses kleines Drecksbit, das sollte sich ATMEL mal
was überlegen. Genauso dass die ISP Pins nicht wie bei den anderen uC´s
auf MISO/MOSI liegen.
Sepp
Richtig Sepp,
anders herum wäre ein Schuh draus geworden. Wenn ein 128er Ersatz für
den 103er sein soll, dann bitte das Bit setzen.
Wegen dem seriellen Brennen habe ich mal einen Appl. Ing von MSC
gefragt. Der meinte, im Zusammenhang mit den PEN-Pin ist sowas wie
fernprogrammierung möglich. Deshalb auch die USART0 als
Programmierschnittstelle.
MW