Forum: Mikrocontroller und Digitale Elektronik Mega128 und Hardware-UART (Bascom)


von Sebastian (Gast)


Lesenswert?

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

von Carsten P. (papa_of_t)


Lesenswert?

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

von micha b (Gast)


Lesenswert?

Versuchs mal mit:
$regfile = "m128def.dat"
$crystal = 16000000
$baud = 19200
Config Serialout1 = Buffered , Size = 20

Open "COM2:" For Binary As #1

Do
 Print #1 , "MÖÖÖÖP"
 waitms 100
loop

Sollte funktionieren.... :-)

von Sebastian (Gast)


Lesenswert?

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?

von Sebastian (Gast)


Lesenswert?

probier ich auch gleich mal, micha

von Sebastian (Gast)


Lesenswert?

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

von Sepp (Gast)


Lesenswert?

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

von johnny.m (Gast)


Lesenswert?

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

von johnny.m (Gast)


Lesenswert?

> Benutzt du die richtigen TDI/TDO Ports
Beim Mega128 heißen die "PDI" und "PDO"...

von Sebastian (Gast)


Lesenswert?

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.

von Sepp (Gast)


Lesenswert?

Tatsächlich, da hab ich mich doch glatt vertan. ;)

von Michael Wilhelm (Gast)


Lesenswert?

M103 Kompatibilitätsbit?

MW

von Sebastian (Gast)


Lesenswert?

Aha - und was ist das?

von Sepp (Gast)


Lesenswert?

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

von Sepp (Gast)


Lesenswert?

Oh ja .. den sollte man ausmachen, findet man in den Fuses.

Hatten wir auch schon mal Probleme.

Den Kompatibilitätsmodus ausmachen.

von Sebastian (Gast)


Lesenswert?

Ja, da habe ich mir jumper eingebaut.
Portc.0 und porte.7 und den gesamten portc auch nochmal..

von Sebastian (Gast)


Lesenswert?

JAAA!!!!!!! :D
Oh man.. 6 stunden sag ich nur...
DANKE! Es war das Kompabilitäts Ding!

von johnny.m (Gast)


Lesenswert?

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

von johnny.m (Gast)


Lesenswert?

Upps, zu langsam... Aber wenns läuft ist ja schön...

von Sepp (Gast)


Lesenswert?

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

von Michael Wilhelm (Gast)


Lesenswert?

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

von Sebastian (Gast)


Lesenswert?

Ok, jetzt geht auch der UART wunderbar, ich bedanke mich nochmal recht 
herzlich für die Hilfe!

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.