UART falsche Rückmeldung

Gast #903752
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
Gast #903831
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.
Gast #903862
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". ;-)
Gast #904434
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
Gast #904446
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
Gast #904462
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.
Gast #904489
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
Gast #904494
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
Gast #904505
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
#904508
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
Gast #904520
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
Gast #904547
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?
Gast #906190
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

#

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