www.mikrocontroller.net

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


Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Carsten Pietsch (papa_of_t)
Datum:

Bewertung
0 lesenswert
nicht 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.. :-)

Autor: micha b (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.... :-)

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
probier ich auch gleich mal, micha

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Sepp (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: johnny.m (Gast)
Datum:

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

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sepp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tatsächlich, da hab ich mich doch glatt vertan. ;)

Autor: Michael Wilhelm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
M103 Kompatibilitätsbit?

MW

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aha - und was ist das?

Autor: Sepp (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sepp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh ja .. den sollte man ausmachen, findet man in den Fuses.

Hatten wir auch schon mal Probleme.

Den Kompatibilitätsmodus ausmachen.

Autor: Sebastian (Gast)
Datum:

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

Autor: Sebastian (Gast)
Datum:

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

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Upps, zu langsam... Aber wenns läuft ist ja schön...

Autor: Sepp (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael Wilhelm (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sebastian (Gast)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.