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
>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.
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.
>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". ;-)
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
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
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.
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
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
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
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
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
>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?
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
#