ATMEGA128 und serieller Port

OP #216691
Lesenswert?

Hallo,
ich habe ein Problem bei der Ansteuerung der seriellen Schnittstelle
des ATMEGA128. Mittels des beiliegenden Programmes lässt sie sich nicht
dazu bewegen, auch nur ein einziges Zeichen an das angeschlossene
Terminal zu senden. Im 103-Kompatibiliätsmodus funktioniert es.
Das Programm ist die reduzierte Version eines auf dem 8535 problemlos
laufenden, deutlich komplexeren Programms.
Zur übrigen Beschaltung ist wenig zu sagen:
16 Mhz Quartz
2 x 15 pF Kondensatoren
MAX 232

Ich habe das Programm im AVR Studio Simulator laufen lassen; die
betreffenden Ports wurden entsprechend dem Datenblatt initialisiert.
Auch Probleme mit dem Stackpointer schliesse ich aus (der wurde auf 2F5
initialisiert, also mittem im SRAM), da auch keinerlei Unterprogramme
aufgerufen werden.
Ich habe das Problem mit mittlerweile 3 Chips nachvollzogen, daher
schliesse ich aus, dass der Chip defekt ist.
Des weiteren habe ich testweise die 2. Schnittstelle versucht
anzusteuern; das Ergebnis war ebenfalls negativ.

Hier noch meine Fuses:
M103C    1
CKOPT    0
BOOTRST  1
BODLEVEL 0
BODEN    0
SUT1     1
SUT0     1
CKSEL0-3: 1111

Was mache ich falsch?
Angehängte Dateien:
Persönliche Seite #216694
Lesenswert?

Hi

das da "#define _AVR_ATmega128_ 1" solltest du nicht tun. Es gibt
dafür den "-mmcu=$(MCU)" an der Kommandozeile. Die genauen
Auswirkungen wird dir J. Wunsch im Detail erklären können aber ich
erinnere mich zumindest das das böse ist :-)

Aber was mir noch einfällt:
Wie sieht den deine Beschaltung des MAX232 und dessen Anschluß an den
Mega aus? Uart0 verwendet ja immmerhin die gleichen Pins wie das
isp-Interface.

Matthias
OP #216695
Lesenswert?

Hallo,
ich habe das #define _AVR_ATmega128_ herausgenommen, was jedoch nicht
zum gewünschten Resultat geführt hat.
Der MAX232 (sowie der Anschluss über ein umgebautes Handy-Datenkabel)
sind über 2.7 kOhm mit RX/TX verbunden. Auch der Betrieb ohne
angeschlossenen Programmer funktioniert nicht.
Mir ist aufgefallen, dass bei Verwendung des internen RC-Oszillators
bis etwa 4Mhz und Bitraten bis 4800 ein Betrieb möglich ist.
Nach diversen Versuchen bin ich nun darauf gestossen, dass bei einer
Eingangsspannung von 4 Volt der Betrieb problemlos möglich ist. Wie
kann das sein? Die genaue Typbezeichnung ist ATMEGA128 16AI 0502I,d.h.
eigentlich ist eine Mindestbetriebsspannung von 4.5 Volt erforderlich.
Gast #216696
Lesenswert?

Welche Baudrate fährst du?
Bei 16MHz sind die hohen Baudraten alle sehr falsch.
14,765MHz wäre eine klügere Wahl gewesen - damit kannst du problemlos
115kbps machen.
Lies vielleicht nochmal die Seiten über die Baudrate genau durch.

Deine Beschreibung lässt sowas erahnen, dass du dich zu knapp an einer
Fehlergrenze bewegst.

jörn
Gast #216698
Lesenswert?

Lass mal die USCR0C Zeile Weg. Die Reset defaults sollten passen - deine
finde ich etwas komisch (USCZ01 sollte doch auch 1 sein?).
Uch mach mal das senden mit in die Endlosschleife rein, damit du nicht
das eine zeichen verpasst.

Ich habe z.B. (UART1 @ 115bps @ 14,??MHz):

  UBRR1L = 7;        //115k2 @ 14,745MHz
  UCSR1B = (1<<TXEN1);  //Transmitter UART1 enabled


jörn
Gast #216699
Lesenswert?

Hello All ;
I have to modify some source code written for ATmega128 to msp430 and i
found some registers like EER,EEWE,EEAR,EERE,EEDR .
I would be grateful if you could tell me what the corresponding one in
msp430f1611.
thanks

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren