Forum: Mikrocontroller und Digitale Elektronik UART falsche Rückmeldung


von Stephan (Gast)


Lesenswert?

Hallo,

ich versuche schon seit 2 Tagen ein Zeichen zum Atmega8 zu senden und
die "Rückmeldung" des Zeichens am PC zu bekommen.
der "Fehler" ist immer gleich :


Meine Eingabe am Hyperterminal oder Putty : 123
Ausgabe : g3f

am Quellcode kann es eigendtlich nicht liegen, da der Fehler auch bei
a)sonstiger Quellcode (Internet)
b)Tutorial
c)Peter Fleury (auf Atmega8, 16 MHz geändert)
d)eigener Quellcode

auftritt.


die Baudrate / wurde richtig eingestellt
Quarz 16 Mhz

das senden funktioniert einwandfrei

wo ist mein Denkfehler?

Danke
Stephan

von Tunichgut (Gast)


Lesenswert?

>wo ist mein Denkfehler?
Das wir einfach so in unserer Glaskugel schauen können und Deinen Fehler 
finden können.
Poste mal die relevanten Teile des Quellcodes.

von Stephan (Gast)


Lesenswert?

Hallo Herr Tunich Gut,

am Quellcode kann es nicht liegen, da ich verschiedene "Quellcodes" mit 
dem gleichen "Fehler" habe.


Gruß
Stephan

von Gast (Gast)


Lesenswert?


von Sven P. (Gast)


Lesenswert?

Schreib den Quelltext trotzdem hierher.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Könnte auch an inkorrekt gesetzten Fuses liegen, der AVR ist da ja 
besonders "praktisch".

von 3360 (Gast)


Lesenswert?

Das Standardvorgehen ist, das jeweils gesendete Zeichen mit dem Scope 
anzuschauen.

von Sven P. (Gast)


Lesenswert?

Das Standardvorgehen ist bei solchen Fehlern, die irgendwo in Software 
oder Hardware liegen können, erstens den Quelltext mitzugeben und 
zweitens die Hardware drumrum zu beschreiben (Schaltplan etc.).

Die einzige sinnvolle Antwort auf die Frage, so wie sie jetzt formuliert 
ist, lautet: Lies dir die AVR Checkliste durch.

von Tunichgut (Gast)


Lesenswert?

>am Quellcode kann es eigentlich nicht liegen
Das haben wir hier schon tausendmal gelesen. Wir haben aufgehört das zu 
glauben. Rein aus praktischen Gründen nicht etwa weil wir Dir nicht 
glauben.

Übrigens nenne ich mich "Tunichgut" und nicht "Herr Tunich gut". ;-)

von Alan (Gast)


Lesenswert?

CKSEL Fuses richtig gesetzt? Einfach mal LED im Sekundentakt blinken 
lassen.

von Alan (Gast)


Lesenswert?

Andere frage: Passt die Baudradte und die Anzahl der 
Start/Stop/Partiätsbits=

von Stephan (Gast)


Lesenswert?

Hallo,

ich bin leider noch nicht weiter


ich habe beim Originalquellcode von  Peter Fleury <pfleury@gmx.ch> 
http://jump.to/fleury

uartlibrary.zip

das Makefile angepasst auf : Atmega8 Quartz 16 MHz:

-----------------------------Makefile Auszug---------
# MCU name
#MCU = at90s8515
MCU = atmega8

# Processor frequency.
#     This will define a symbol, F_CPU, in all source code files equal 
to the
#     processor frequency. You can then use this symbol in your source 
code to
#     calculate timings. Do NOT tack on a 'UL' at the end, this will be 
done
#     automatically to create a 32-bit value in your source code.
F_CPU = 16000000
------------------------------



---------Test_uart.c (Auszug) Letzten Zeilen--------

 * send received character back
 */
 uart_putc( (unsigned char)c );//geht nicht dh: der Atmega8 sendet ein 
falsches Zeichen zurück.

 uart_putc( 'A' );//geht d.h : der Atmega8 sendet A zurück. (richtig)
------------------------------

mit anderen Quellcodes sendet der Atmega8 exakt das gleiche falsche 
Zeichen zurück.

ich hatte auch nie Probleme mit der Uart, da der AVR immer nur eine 
Meldung zum PC schicken mußte. Beispiel : Habe fertig oder so

oder Radigs Webserver mit Atmega32 lief auch mit 16 MHz Quarz prima

nur jetzt soll der ATMGA8 - 16 ein Zeichen vom PC bekommen und dieses 
wieder zurückschicken (zur Kontrolle)

update WINAVR von 2003... auf 2008... brachte auch keinen Erfolg und 
keine Fehlermeldung.

Fuse Ponyprog, nehm ich immer : Haken bei  Bootsz1, Bootsz0, CkOPT


bis dann
Stephan

von Magnus Müller (Gast)


Lesenswert?

Stephan wrote:
> das senden funktioniert einwandfrei

Dann scheint die Lib (und dein Controller) ja zu funktionieren.

> wo ist mein Denkfehler?

Dein Denkfehler besteht darin, dass du denkst, dass es Sinn macht, uns 
den Quellcode vorzuenthalten.

Gruß,
Magnetus

von 3360 (Gast)


Lesenswert?

Etwas phantasielos der Frager... ein Scope scheint nicht vorhanden zu 
sein.
Wenn alles so waere wie gedacht so wuerd's ja gehen, tut es aber nicht.
1) Bei 16MHz Clock hat man nicht alle Baudraten zur Verfuegung. Mit dem 
datenblatt nachpruefen.
2) Lass der AVR mal einen konstanten String an den PC senden, zB 
'1234567890', das wuerde besagen, dass der Clock und die Baudreate 
stimmt.

von Stephan (Gast)


Lesenswert?

Hallo ,
der Quellcode ist oben als Link angegeben
und beinhaltet :

makefile
test_uart.c  Hauptprogramm
uart.h
uart.c
und stammt von Peter Fleury, hier im Forum bekannt

meine tolle Leistung:
makefile geändert : F_CPU und MCU sonst nichts

vieleicht hat jemand ne HEX : ATMEGA8 16 MHz 9600 Baud
möchte am Hyperterminal 1 Zeichen eingeben und dieses auch 
zurückbekommen.

bevor ich mich noch weiter ärgere:
wie macht ihr das ?
mal fehlt ein passender Quarz, mal eine Z-Diode mal ein Sockel alles
Kleinkram für paar Cent
Versandgebühr 8,00 €

in unserer Stadteil gibt 40 Apotheken, 12 EinEuro Läden, etliche 
Mobilfonshops

Gruß
Stephan

von Stephan (Gast)


Lesenswert?

Hallo,
zu Autor:  3360 (Gast)

"2)  Lass der AVR mal einen konstanten String an den PC senden, zB
'1234567890', das wuerde besagen, dass der Clock und die Baudreate
stimmt."

hab ich gemacht
das funktioniert gut

nur der AVR soll keinen fest eingebrannten String senden, sonder das 
Zeichen
welches ich am Hyperterminal oder Putty eingebe, zurücksenden

Gruß
Stephan

von Magnus Müller (Gast)


Lesenswert?

Hast du die Masse (auch GND oder 0V genannt) deiner Schaltung mit der 
Masse der RS232 Schnittstelle des PCs verbunden?

Eine kurze "Analyse" deiner Angaben:

                            Binär:
Gesendet  (PC -> µC):  123  00110001 00110010 00110011
Empfangen (µC -> PC):  g3f  01100111 00110011 01100110

Ganz so weit sind die beiden Datenpakete nicht voneinander entfernt. Mal 
sind die Bytes nach links verschoben, mal sind Bits gekippt, mal beides.

Sieht für mich aufs Erste mal nach einem Hardwareproblem aus (siehe 
oben).

Gruß,
Magnetus

von Peter D. (peda)


Lesenswert?

Stephan wrote:
> der Quellcode ist oben als Link angegeben

Ich sehe nirgends nen Link zum Quelltext, nur einen zu ner Startseite.
Ist das eine Wette, es dem Helfer so schwer wie möglich zu machen?


> und stammt von Peter Fleury, hier im Forum bekannt

Ja der Name taucht hier öfters auf, persönlich bekannt ist er mir aber 
nicht.
Ich glaub auch nicht, daß das ne Rolle spielt.


Peter

von Stephan (Gast)


Lesenswert?

Hallo,

vielen Dank für den Einsatz.

die Hardware ist defekt !

oder auch nicht !


Autor: Magnus Müller (magnetus)
Datum: 23.06.2008 01:10

Hast du die Masse (auch GND oder 0V genannt) deiner Schaltung mit der
Masse der RS232 Schnittstelle des PCs verbunden?

Stephan:
GND sind bei mir immmer verbunden, wäre sonst ein typischer 
Anfängerfehler
gewesen.

aber :
nachdem GND am laufendem "System" getrennt!! habe :
Schwups, alles funktioniert

Jetzt hab ICH ein Problem
(mein Weltbild bricht zusammen)
Stephan

von lkmiller (Gast)


Lesenswert?

>Stephan:
>GND sind bei mir immmer verbunden, wäre sonst ein typischer
>Anfängerfehler gewesen.
>
>aber :
>nachdem GND am laufendem "System" getrennt!! habe :
>Schwups, alles funktioniert

So, jetzt halt mal den GND vom PC in die linke Hand,
den GND vom AVR in die Rechte. Kitzelts, zwickts?
Alternativ kann ein Multimeter genommen werden:
die angezeigte Spannung sollte (AC und DC) um 0V sein.

Falls es kitzelt oder eine Spannung angezeigt wird:
Das sieht nach einer Masseschleife aus.

Dann stellen sich die Fragen:
Wie sieht diese funktionsbeeinträchtigende Masseverbindung aus:
Pin X nach Pin Y...Schirm...?
Sind der PC und deine Schaltung aus derselben Steckdose versorgt?

von Stephan (Gast)


Lesenswert?

Hallo,

da ich diesen Thread sauber beenden möchte:

Es lag am (defekten)Pegelwandler, der Atmega8 und PC verbindet.

Nur dadurch das ich ein neues Projekt begonnen hatte, kam dieser Fehler 
zum
Vorschein.

eben Pech.

vielen vielen Dank

Stephan

#

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.