www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATMEGA128 und serieller Port


Autor: Carsten Kappenberger (ck1)
Datum:
Angehängte Dateien:

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

Autor: chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,
ich habe auch probleme mit der seriellen schnittstelle.....
kannst du mir sagen wie du die 16 Mhz Taktfrequenz eingestellt hast ?
benutzt du zufällig stk500, stk501?

 chris

hier mein thread:
http://www.mikrocontroller.net/forum/read-1-217976.html#new
viel glück ...

Autor: Carsten Kappenberger (ck1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich verwende ein 16 Mhz Quartz an XTAL1 und XTAL2; zusätzlich habe ich
die Fuse-Bits (hoffentlich richtig) programmiert, damit auch der Takt
vom exteren Resonator genommen wird.

Autor: Μαtthias W. (matthias) Benutzerseite
Datum:

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

Autor: Carsten Kappenberger (ck1)
Datum:

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

Autor: Joern G. aus H. (Gast)
Datum:

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

Autor: Joern G. aus H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ne, ups habe gerade im Quellcode gesehen - 9600.
Das sollte auf jeden Fall gehen.
jörn

Autor: Joern G. aus H. (Gast)
Datum:

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

Autor: lader (Gast)
Datum:

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

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.