mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik RS232 Mega8-Pc


Autor: Zsolt (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...
Empfangen: 
http://www.mikrocontroller.net/sourcecode/tutorial...
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

Autor: Zsolt (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, habe das Bild vergessen!!

Autor: Holger Krull (krulli) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was für einen Quarz hast Du denn auf dem Olimex-Board? Ich sehe auch 
keine Kondensatoren am Quarz. Fusebits richtig gesetzt?

Autor: F. Kriewitz (freddy436)
Datum:

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

Autor: Zsolt (Gast)
Datum:

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

Autor: Holger Krull (krulli) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Solange Du meine Fragen nicht beantworten kannst, kann ich Dir auch 
nicht weiterhelfen...

Autor: Zsolt (Gast)
Datum:

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

Autor: Jadeclaw Dinosaur (jadeclaw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Zsolt: Häng mal den Quellcode hier mal an, ich habe da so eine Ahnung.

Gruss
Jadeclaw.

Autor: Holger Krull (krulli) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich hab mal ein bissl gegoogelt:
Schaltung: http://www.olimex.com/dev/avr-p28.html

Wie hast du die Fuse-Bits vom ATmega8 gesetzt?
Die Software ist ja für 4 MHz Taktfrequenz geschrieben...

@Dino
siehe Eingangsposting

Autor: Zsolt (Gast)
Datum:

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

Autor: Holger Krull (krulli) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kein Fehler im Tuto vermut ich, sondern Du hast den Mega8 nicht auf die 
richtige Taktfrequenz / Taktquelle eingestellt

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

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

Autor: Zsolt (Gast)
Datum:

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

Autor: Zsolt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Karl Heinz:

also die clock von 4000000 auf 8000000 setzen oder? (.equ CLOCK = 
8000000 )

und wie funktioniert das mit denn Fuse bits bitte?

danke für die informative antwort!

Autor: Sonic (Gast)
Datum:

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

Autor: Holger Krull (krulli) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Laut Schaltung scheinen die Kerkos schon drauf zu sein, eventuell 
"unterputz" als SMD

Fuses: Für Anfänger ein heißes Eisen
http://www.mikrocontroller.net/articles/AVR_Fuses

Lesen und verstehen (wichtig)

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

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

Autor: Sonic (Gast)
Datum:

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

Autor: Zsolt (Gast)
Datum:

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für den Empfänger gilt das Gleiche wie für den Sender:
Die UART Einstellung muss richtig sein. Solange du
im Empfangsprogramm eine andere CLOCK Frequenz eingestellt
hast als die die der µC tatsächlich benutzt, hat es keinen
Sinn da rumzuprobieren.

Autor: Zsolt (Gast)
Datum:

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

Autor: F. Kriewitz (freddy436)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du hast ein ISP Kabel für den Parallel Port?

-> Google: "yaap" oder "ponyprog"
Und Tutorial lesen!

Autor: Zsolt (Gast)
Datum:

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

Autor: F. Kriewitz (freddy436)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
-> Kabel vergleichen
Bitte mal anfangen selber mitzudenken.

Autor: Florian Glaser (suffix)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja. Ansonsten mal STK500 bei ebay (kessler electronic) für 80€ kaufen.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

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

Autor: Zsolt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich glaube ich bestelle mir zu diesem board: 
http://shop.mikrocontroller.net/csc_article_detail...

dieses kabel: 
http://shop.mikrocontroller.net/csc_article_detail...

dann müsste ich ja mit ponyprog yaap etc arbeiten können oder? :)

lg und danke für eure hilfe!!!

Autor: Sonic (Gast)
Datum:

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

Autor: F. Kriewitz (freddy436)
Datum:

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

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.