Forum: Compiler & IDEs Probleme mit USART (ATmega8515)


von Joachim (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

Hat jemand Erfahrung mit dem ATmega8515L und dessen USART ?
Ich wollte eine eigentlich recht einfache Test-Routine schreiben, die
ein wenig Text zum PC schickt. Dort habe ich ein Terminal-Programm
laufen. Es kommt zwar was an, aber nur Datenmüll. Irgendwas scheint da
nicht zu stimmen mit der Baud-Rate bzw. den sonstigen Parametern. Ich
bekomme immer einen Framing-Error angezeigt (im PC Terminal Programm).
9600 BPS, 8 Datenbits, 1 Stopbit, keine Parität, so war das
Terminal-Programm eingestellt und der ATmega8515 (siehe Anhang) auch.
Trotzdem kommt nichts an. Ich finde den Fehler einfach nicht (mangelnde
Erfahrung). Zwischen PC und ATmega8515L war selbstverständlich ein
MAX232 Treiber geschaltet. Einen 4 MHz Quarz
habe ich auch verwendet. Hätte also funktionieren müssen.

Gruß,
Joachim

von Matthias (Gast)


Lesenswert?

Hi

das hier

void rs232_init(void)
{
  UBRRL = 25;      //Baudrate 19200
  UCSRA|=2;      //Doppelte Baudrate
  UCSRB=0x18;      //RX und TX erlaubt
}

Initalisiert USART eines ATMega8515 auf 38400 8N1 bei 8MHz Takt. Alles
andere was du in deiner Routine machst ist unnötig.
Insbesondere das ändern von DDR und Port-Register würd ich lassen.

Bist du dir auch sicher das der AVR mit 4MHz läuft? Ab Werk ist nämlich
der interne RC-Oszi eingeschaltet und der läuft mit 1MHz.

Du kannst deine Routine also auch mal mit 2400Baud testen. Wenns dann
geht weist du an was es liegt.

Matthias

von Joachim (Gast)


Lesenswert?

Hallo Matthias,

Besten Dank für den Tip mit dem internen RC-Oszillator. Ich habe mal
die Baud Rate auf 2400 BPS runtergestellt, wie du vorgeschlagen hast -
und siehe da, es hat sofort funktioniert. Nach dem Aktivieren des
externen 4MHz Quarzes hat die Sache dann natürlich auch mit den
gewünschten 9600 BPS funktioniert. Mir ist das bisher entgangen, dass
sich da beim ATmega8515 im Vergleich zum AT90S8515 etwas geändert hat,
was die Taktung anbelangt. Bisher gab es ja keinen internen Oszillator.
Aber man lernt halt nie aus.
Eine Kleinigkeit geht aber leider immer noch nicht. Aber das liegt eher
am Compiler. Den printf Befehl kann ich leider nicht verwenden. An der
FH ging das immer. Dort wird aber ein ganz anderer Prozessor Typ
verwendet (80C166 von Siemens). Die hatten die Verwendung des printf
Befehls offensichtlich vorgesehen. Aber das lässt sich ja leicht
umgehen, indem man eine eigene Prozedur schreibt, die das gleiche
erledigt. Nun bin ich mal gespannt ob der ATmega8515 mehr aushält als
der AT90S8515. Von dem sind mir schon 2 Stück kaputtgegangen
(vermutlich wegen ESD). Immer nach dem Umprogrammieren in der Schaltung
war er futsch - sprich einzelne Port-Ausgänge haben einfach nicht mehr
funktioniert. Mal sehen wie sich der ATmega8515 da aus der Affäre
zieht. Bisher läuft er noch einwandfrei.

Nochmals Dankeschön,
Gruß,
Joachim

von Peter Fleury (Gast)


Lesenswert?

>Immer nach dem Umprogrammieren in der Schaltung
>war er futsch - sprich einzelne Port-Ausgänge haben einfach nicht
>mehr funktioniert.

Wie sieht deine ISP Schaltung aus ?  Sind diese ISP-Pins normalerweise
als Ausgang oder Eingang beschaltet ?

von Joachim (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Peter,

Die ISP Pins haben eigentlich sonst keine Funktion. Sie dienen nur dem
Programmierzweck bei meiner Beschaltung. Ich hab die Beschaltung mal
als GIF-File upgeloadet. Vielleicht ist ja doch irgendwo noch was
falsch. Zu den Defekten kann ich nur sagen: Jedes mal, wenn ich den ISP
Stecker aufgesteckt hab und den Controller umprogrammiert hab - was
auch funktioniert hat, war der AT90S8515 danach kaputt. Allerdings hab
ich wohl den Fehler gemacht, dass das Parallel-Kabel schon am PC
angeschlossen war während dem Aufstecken des ISP-Connectors. Und der PC
war natürlich schon eingeschaltet. Möglicherweise kommt es daher. Es
kann aber auch sein, dass es ein ESD Problem ist. Beim Anschließen kann
es schon passiert sein, dass ich den ein oder andern Pin mal berührt
hab.
Bin aber mal gespannt, was andere für Erfahrungen auf diesem Gebiet
gemacht haben.

Gruß,
Joachim

von Matthias (Gast)


Lesenswert?

Hi

ist das ein Adapter ohne Treiber-IC? War deine Zielschaltung zum
Zeitpunkt des Ansteckens schon an Spannung? Mit welcher Spannung läuft
dein AVR?

Matthias

von Joachim (Gast)


Lesenswert?

Hallo Matthias,

Ja das stimmt. Es handelt sich um einen Adapter ohne Treiber-IC. Die
Zielschaltung hatte zum Zeitpunkt des Ansteckens auch bereits Spannung
(PC ebenfalls). Der AVR läuft in meiner Zielschaltung mit 5V. Da die
parallele Schnittstelle am PC ebenfalls 5V hat dürfte es eigentlich
keine Probleme geben. Ist aber wohl doch so. Vermutlich kam es auch so
zum Defekt. Allerdings ist mir der Grund nicht ganz klar. Hängt das mit
dem Anschließen des Connectors zusammen (gibt es da evtl. kurzzeitige
Spannungsspitzen ?)

Gruß,
Joachim

von Matthias (Gast)


Lesenswert?

Hi

vom Prinzip spricht eigentlich nichts dagegen. Ich (tm) bevorzuge aber
trotzdem die Variante mit Treiber-IC und arbeite seit Jahren damit
problemlos.

Matthias

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.