mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik UART falsche Rückmeldung


Autor: Stephan (Gast)
Datum:

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

Autor: Tunichgut (Gast)
Datum:

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

Autor: Stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Herr Tunich Gut,

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


Gruß
Stephan

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schreib den Quelltext trotzdem hierher.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

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

Autor: 3360 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Standardvorgehen ist, das jeweils gesendete Zeichen mit dem Scope 
anzuschauen.

Autor: Sven P. (haku) Benutzerseite
Datum:

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

Autor: Tunichgut (Gast)
Datum:

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

Autor: Alan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
CKSEL Fuses richtig gesetzt? Einfach mal LED im Sekundentakt blinken 
lassen.

Autor: Alan (Gast)
Datum:

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

Autor: Stephan (Gast)
Datum:

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

Autor: Magnus Müller (Gast)
Datum:

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

Autor: 3360 (Gast)
Datum:

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

Autor: Stephan (Gast)
Datum:

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

Autor: Stephan (Gast)
Datum:

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

Autor: Magnus Müller (Gast)
Datum:

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

Autor: Peter Dannegger (peda)
Datum:

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

Autor: Stephan (Gast)
Datum:

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

Autor: lkmiller (Gast)
Datum:

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

Autor: Stephan (Gast)
Datum:

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

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.