RS232 Mega8-Pc

Gast #465430
Lesenswert?

Hallo, sitze schon seit einigen Tagen vor dem Pc! Ich versuche eine 
Kommunikation zwischen zwei uC herzustellen. Jedoch mit wenig Erfolg!
Habe von eurem Tutorial die beiden Testprogramme heruntergeladen und auf 
zwei Mega8 gebrennt:
Senden: 
http://www.mikrocontroller.net/sourcecode/tutorial/uart-mega8.asm
Empfangen: 
http://www.mikrocontroller.net/sourcecode/tutorial/uart-led.asm
Nun habe ich den sendenden Mega an den PC angeschlossen. Leider empfange 
ich nicht das was ich sollte("Test"), ich bekomme eine Folge von Hex 
Zahlen: F8 00 80 78 1E.
Das von mir verwendete Programm heißt Term.

Einstellungen: Baudrate 9600, Databits 8, Parity none, Stopbit 1 und 
handshaking none;

Würde mich sehr freuen wenn mir jemand weiterhelfen könnte!

Anbei das Bild meiner Schaltung!

Danke, mfG Zsolt
#465438
Lesenswert?

klemm mal direkt an den VCC vom MAX232 einen 100n Keramik Kondensator, 
daran lag es bei mir mit den Elkos war die Spannung offensichtlich nicht 
stabil genug.

Versuch auch mal ob du ein loopback zum laufen bekommst (TXD/RXD am µC 
direkt miteinander verbinden und am Computer irgendwas senden, wenn es 
zurück kommt weist du schon mal das der MAX232 nicht defekt ist.
Gast #465441
Lesenswert?

Hi!

leider habe ich keine genaue ahnung vom quarz - mir wurde nur gesagt 
dass ich   diese board verwenden könne.. (wie auch im tutorial 
beschrieben)

habe auch einen neuen hexcode in TERM erhalten (hatte wohl zuvor ein 
falsches programm raufgebrannt) - dieser lautet: 00 78 1E 78 1E F8 78 FE 
80 78 00 0F 78 1E 00 3C F0 80 78 00 F0 78 FE 00   (nichts mit 'T' 'e' 
's' 't' '!' '10' '13' )

wie man im bild sieht, halte ich die batterie nur mit den fingern an die 
angelöteten kabel.. kann vielleicht ein prob sein?

was heisst dieser code?? lerne nix daraus :( auch wenn ich mir die ascii 
tables anschau
Gast #465446
Lesenswert?

Entwicklungsplatine für alle 28-poligen AVR-Controller (AT90S4433, 
ATmega8, ATmega48)

Die Platine enthält einen Sockel für den Mikrocontroller, einen 8 
MHz-Quarz, einen Anschluss für den ISP-Programmer und einen 
RS232-Pegelwandler mit einer 9-poligen Sub-D-Buchse.


leider kann ich nicht mehr sagen :(
wenn du mir aber sagen kannst wo ich nachsehen sollte mache ich das 
natürlich sofort, danke für deine bemühung!
Gast #465458
Lesenswert?

ohhhhhh!

anscheinend ein fehler im tutorial - habe die baudrate im TERMINAL auf 
2400 gesetzt und empfange jetzt Test!  aber wie bringe ich jetzt den uC2 
(empfänger) dazu  auch einen Wert zu empfangen?  also ohne pc uC<->uC2
#465461
Lesenswert?

> Kein Fehler im Tuto vermut ich,

Ganz sicher sogar keiner.

> sondern Du hast den Mega8 nicht auf die
> richtige Taktfrequenz / Taktquelle eingestellt

Die Software ist für 4 Mhz geschrieben. Seine Baudrate
ist genau 1/4 dessen was sie bei 4Mhz sein sollte.
Logische Schlussfolgerung: Sein µC läuft nicht auf dem
Quarz sondern auf dem internen Taktgenerator mit 1 Mhz

> aber wie bringe ich jetzt den uC2
> (empfänger) dazu  auch einen Wert zu empfangen?

Falsche Frage.
Kümmere dich erst mal darum, dass µC1 so arbeitet wie
er soll.
Das heist: Die Fusebits umstellen, so dass auch der
Quarz benutzt wird. Und dann änderst du erst mal die
Senderoutine so um, dass die auch von 8Mhz ausgeht und
nicht von 4.

Und erst dann, kommt der 2te µC drann. Du fängst damit
an, den vom PC aus anzusteuern. Solange das vom HTerm
(oder Hyperterminal) aus nicht funktioniert brauchst du
gar nicht daran denken vom µC1 aus an µC2 zu senden.
Gast #465462
Lesenswert?

wie gesagt, ich habe ja die quellcodes (oben verlinkt) verwendet, welche 
im tutorial aufgelistet waren.
hmm.. kennt sich jemand mit TERMINAL aus? verstehe ned ganz ganz wie das 
funktioniert wenn ich das receive programm testen möchte.. wenn im .asm 
programm '1' abgefragt wird, muss ich dann in TERMINAL hex, dez oder was 
auch immer senden?

lg und nochmals danke!!!
Gast #465464
Lesenswert?

UBRRL muss bei 8MHz und 9600 baud auf 51 gesetzt werden, als 
Terminalprogramm empfehle ich Hterm.exe, ist einfach (ohne 
Installation), alles auf einen Blick und Freeware. Die zwei 22pF-Kerkos 
am Quarz gegen Masse nicht vergessen! Wenn die Taktfrequenz nicht genau 
stimmt kanns bei Zeitkritischen Sachen wie USART zu Fehlern kommen.
#465468
Lesenswert?

> wie gesagt, ich habe ja die quellcodes (oben verlinkt) verwendet,
> welche im tutorial aufgelistet waren.

Die Baudrate wird von der Taktfrequenz abgeleitet indem
diese solange runtergeteilt wird, bis die richtige Frequenz
für den Sende/Empfangsteil der RS232 entsteht. Daher
muss man die Taktfrequenz kennen um den Teilerfaktor
einstellen zu können.

Die Software die du hast macht das auch. Einzige Bedingung:
Man muss ihr sagen wie hoch denn die Taktfrequenz tatsächlich
ist. In deiner Software ist 4Mhz eingetragen (die 4000000 ganz
am Anfang). Wenn dein µC aber nichtmit 4Mhz läuft, dann kann
das gar nicht funktionieren. Alte Regel: Wenn die Eingangswerte
schon Mist sind, dann kann hinten nur Mist rauskommen.
Aus den Werten die du ermittelt hast wenn die Sendefunktion
funktioniert, kann man ablesen, dass dein µC mit 1Mhz läuft.
Er sollte aber mit 8 Mhz laufen, denn da ist ein 8Mhz Quarz
auf dem Bord (auf dem Quarz steht im übrigen drauf, wie schnell
er läuft). Die einzige logische Folgerung: Dein µC ist noch
auf 'interne Taktquelle' eingestellt und nicht auf 'externen Quarz'.
Den brauchst du aber, wenn die Sendefunktion langfristig stabil
laufen soll.
Also lies mal nach, wie du in den Fusebits den externen Quarz
aktivieren kannst. Das sind die CKSEL0 bis CKSEL3 Bits. WIe man
die umstellt hängt von der Brennsoftware ab, die du benutzt.

> hmm.. kennt sich jemand mit TERMINAL aus? verstehe ned ganz ganz
> wie das funktioniert wenn ich das receive programm testen möchte..
> wenn m .asm programm '1' abgefragt wird, muss ich dann in
> TERMINAL hex, dez oder was auch immer senden?

Du drückst einfach auf die Taste '1'. Oberste Zeile, gleich neben '2'
Dein Terminalprogramm sendet dann den ASCII Code für '1' über
die serielle Schnittstelle. Am µC wird das dann (hoffentlich)
korrekt empfangen. Dein Programm wertet das empfangene Zeichen
aus indem mit '1' verglichen wird. Da das dann eine Gleichheit
ist, macht dein Programm was immer programmiert ist zu tun, wenn
eine '1' empfangen wird.
Gast #465470
Lesenswert?

Was die Fuses angeht: kann nur jedem empfehlen (besonders Anfängern!), 
die paar € für den AVRISP auszugeben! Im Prog-Plugin vom AVR-Studio sind 
die Fuses sauber mit Klartext aufgelistet und werden schon beim Aufrufen 
des Reiters vom µC gelesen. Auch die ISP-Frequenz ist übersichtlich 
einstellbar.
Gast #465478
Lesenswert?

@ Karl heinz Buchegger

Ich habe jetzt den Empfänger mal an den Pc angeschlossen und probiert 
ihm 1 zu übergeben! Laut programm müsste er doch jetzt den PORTB,0 
setzen und somit müsste ich doch 5V am Port messen können, oder?

Danke für eure Hilfe, ich werde mir mal die Fusebits durchlesen!

MfG Zsolt
Gast #465521
Lesenswert?

ich verstehe eines nicht ganz, ich kann ja die fuse bits anscheinend im 
avr studio einstellen..

zum brennen verwende ich ein fertiges c programm eines bekannten, mit 
einem selbst gebasteltem kabel - leider stelle ich fest dass viele leute 
hier schreiben, die fusebits werden im brenn programm (GUI) eingestellt, 
nun habe ich ja leider kein solches, nur ein selbst gebasteltes welches 
nicht von mir geschrieben ist.

wie kann ich ansonsten meine fusebits einstellen?
verständnissfehler?

lg
Gast #465545
Lesenswert?

ja ich hab ein kabel für den parallelport aber ich weiss ja ned ob yaap 
etc die gleichen pins am parallel port verwendet wie das 
zusammengestöpselte programm welches ich habe und worauf das kabel 
abgestimmt ist
#465652
Lesenswert?

> zum brennen verwende ich ein fertiges c programm eines bekannten,
> mit einem selbst gebasteltem kabel - leider stelle ich fest dass
> viele leute hier schreiben, die fusebits werden im brenn programm
> (GUI) eingestellt, nun habe ich ja leider kein solches, nur ein
> selbst gebasteltes welches nicht von mir geschrieben ist.

Dann hast du 2 Möglichkeiten:
* Entweder du rufst deinen Bekannten an, wünscht ihm gleich mal
  vorsorglich ein gutes neues Jahr und fragst ihn, wie man mit
  seinem Brennprogramm an die Fuse Bits rankommt

* Du schnappst dir einen Schraubenzieher und öffnest mal
  das Gehäuse deines Parallelportsteckers. Danach vergleichst
  du die Verschaltung mit dem was zb. PonyProg haben möchte
  und weist ob das geht oder nicht.

Du kannst natürlich auch einfach mal PonyProg starten, das
Kabel anstecken und versuchen ob du die Fusebits einlesen
kannst. Das musst du sowieso bevor du neue Fusebits brennst.
Pony sagt dir schon, ob das geklappt hat oder nicht.


Ein bischen Fantasie musst du schon selbst aufbringen um
Probleme zu lösen. Du möchtest einen µC programmieren und
das geht nicht ohne etwas Eigeninitiative.
Gast #465756
Lesenswert?

Gast #465758
Lesenswert?

Wieder meine alte Leier:
Leute, investiert doch die 39€ für'n AVRISP, dann seit ihr diese 
Probleme los! Gerade Anfänger verlieren mit dem Ponyprog / Yaap - Gedöns 
schnell die Lust. Wenn man bei mehr als einer möglichen Fehlerquelle 
suchen muss wird's schwierig! GUTES WERKZEUG IST GOLD WERT!
#465762
Lesenswert?

Sonic wrote:
> Wieder meine alte Leier:
> Leute, investiert doch die 39€ für'n AVRISP, dann seit ihr diese
> Probleme los! Gerade Anfänger verlieren mit dem Ponyprog / Yaap - Gedöns
> schnell die Lust. Wenn man bei mehr als einer möglichen Fehlerquelle
> suchen muss wird's schwierig! GUTES WERKZEUG IST GOLD WERT!

Dem kann ich nur zustimmen, ich hab auch mit dem Parallelen Kabel 
angefangen, allein schon das ständige hin und her gewechsel zwischen 
AVRStudio und yaap hat schnell gestört. Vor allem auch die Fuse bits 
lassen sich über AVRStudio deutlich besser verwalten.
Am besten baust du dir noch selber einen ISP Adapter, dann lernst du 
vielleicht noch ein wenig dabei und es ist nochmal billiger.

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