Forum: Mikrocontroller und Digitale Elektronik Kommunikation Mega8-16 -> RS232


von Manni (Gast)


Lesenswert?

Hallo,

es gibt unzählige Beiträge zu dem Thema, aber ich pack es einfach nicht.

Aufgabe:
ATMEGA8-16 soll Strings an PC senden, Programm (minimal) in BASCOM
1
$regfile = "m8def.dat"
2
$crystal = 3686400
3
$baud = 19200
4
Do
5
   Print "Hello"
6
Loop

eigentlich simpel, aber es kommt nur Datenschrott an. Vermutung: falsche 
Baudrate!? Ich habe verschiedenes für Baud und Crystal ausprobiert, 
immer ohne Erfolg. Auch das ASM-Beispiel aus dem Tutorial tut nicht.
Die Taktfreq. habe ich mit einem Zähler schon genau ausgemessen und 
entsprechend eingetragen - nix!  :-((
Was muß im Terminalprog. eingestellt sein (habe schon zwei verschiedene 
Programme getestet) ??  9600, keine Parität, 8 Datenbit, 1 Stopbit, 
keine Protokoll ?!

Danke für Eure Hilfe,

Manni

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Signalmasse zwischen AVR und PC vergessen? Bzw. auf dem Targetboard 
nicht an die DSUB-Buchse Pin 5 (9-pol) bzw. 7 (25-pol) gelegt?

von Manni (Gast)


Lesenswert?

durchgemessen, ist drauf

von Magnus Müller (Gast)


Lesenswert?

> Was muß im Terminalprog. eingestellt sein (habe schon zwei verschiedene
> Programme getestet) ??  9600, keine Parität, 8 Datenbit, 1 Stopbit,
> keine Protokoll ?!

1. Wenn du in deinem Programm die Baudrate auf 19200 Baud setzt, wirst
   du mit 9600 Baud am PC nie und nimmer was brauchbares empfangen
   können.

2. keine Parität, 8 Datenbit, 1 Stopbit und kein Protokoll sind ein
   guter Anfang ;)

Gruß,
Magnetus

von Manni (Gast)


Lesenswert?

Sorry, die Baudrate war natürlich aufeinander abgestimmt. Ich habe nur 
den Code aus einem "Probierstatus" herauskopiert.

von Otto (Gast)


Lesenswert?

Hallo Manni,

die Fuses hast Du natürlich richtig gesetzt .....

Otto

von Manni (Gast)


Lesenswert?

Hallo Otto,

kann man den in BASCOM Fuses setzten? Im AVR-Studio ist mir die 
Möglichkeit durchaus bekannt, aber was muss gesetzt werden?
=> kurz gesagt, Fuses habe ich (aus Unwissenheit) keine gesetzt.

von DarkBeast (Gast)


Lesenswert?

also iss der mega noch auf werkseinstellunge was die fuses angeht ??

wenn ja läuft der mit internem takt soweit ich mich erinnere und dann 
stimmt dein $crystal nicht oder irre ich da ??

schau doch mal ins datenblatt vom mega da steht drinn mit was der 
standartmässig läuft

da bascom ja den &crystal wert nimmt um die bautratenregister richtig zu 
setzen passt das dann nicht

von DarkBeast (Gast)


Lesenswert?

ups sehe gerade du hast ja nen mega8 wenn der noch auf standart steht 
dann läuft der mit 1Mhz

dann sollte ein

$crystal = 1000000

dein problem lösen

von Otto (Gast)


Lesenswert?

Hallo Manni,

wenn Du Deinen Quarz nutzen und auch möchtest, dass der AVR mit dieser 
Frequenz auch arbeitet, musst Du die Fuses setzen - siehe AVR-Tutorium.

Gruss Otto

von Frank L. (hermastersvoice)


Lesenswert?

Irgendwas stimmt hier nicht überein. Es wird behauptet die Taktfrequenz 
wurde genau gemessen und dann wird von einem ungefuseten Chip 
geschrieben. Werksmässig laufen M8 und M16 mit 1MHz und das ohne 
externen Schwinger. Wie siehts denn nun in Wirklichkeit aus? Etwas 
nachdenken vorm drauflosbasteln und drauflosposten könnte nicht schaden!

bye

Frank

von DarkBeast (Gast)


Lesenswert?

hm ich gehe mal davon aus das er sich ein eval board gekauft hat hats 
zusammengebastelt und angeschlossen

der quarz ist drauf also auch angeschlossen und schwingt kann also 
gemessen werden

nur ohne gsetzte fuses isset dem mega wurst ob da 1Hz oder 50Ghz 
dranhängen der läuft dann nur mit internem 1Mhz takt bis man ihm sagt:

 so du läuftst jetzt mit dem externen quarz

und das geht halt über die fuses.

nach der frequenz die er da gemessen hat dürfte das das board von Rowalt 
sein oder irre ich mich?

naja wenn gibt es da auch ein buch zu und da ist eigentlich alles zu 
diesem board erklärt inklusive fuses und bascom

von Frank L. (hermastersvoice)


Lesenswert?

nur durch anhängen schwingt ein Quarz nicht, dazu braucht er schon den 
anregenden Oszillator im Controller und Der ist aus wenn der Chip intern 
getaktet wird. Wenn allerdings auf dem Board ein Oszillator statt eines 
Quarzes drauf ist dann würde Der natürlich munter schwingen. 
Interessiert nur den Chip garnicht :-)

bye

Frank

von DarkBeast (Gast)


Lesenswert?

Das wusste ich noch nicht bin selber noch nicht ganz so lange dabei

ok wieder was gelernt

naja auf jeden fall läuft der quarz nur wenn die Fuses richtig gesetz 
sind und wenn er das erwähnte board hat ist im dazugehörigen buch auch 
alles schön übersichtlich erklärt auch wie die fuses per bascom 
eingestellt werden

von Manni (Gast)


Lesenswert?

Hallo zusammen,

mal langsam - einfach so Augen zu und durch bin ich auch nicht. Ich 
stehe am Anfang meiner "AVR_Karriere" und kenne sicher die meisten 
Tricks und Kniffe nicht. Nebenbei: Ich nutzte ein STK500
Ich habe am Pin des IC gemessen und sowohl mit externem Quarz (16MHz) 
und Boardtakt 3,68.. MHz den Takt am Pin gemessen. Das waren die 
angegebenen Werte.
Der Controlelr läuft intern mit 1MHz und ich habe über AVR-Studio die 
Fuses ausgelesen und kann das damit bestätigen (SUT_CKSEL: Int. RC Osc. 
1 MHz; Start-up time: 6 CK + 64 ms; default value)
Leider löst aber auch "baud=1000000" das Problem nicht.

von DarkBeast (Gast)


Lesenswert?

öhm ich nehme doch an du meinst

$crystal = 1000000

und nicht baud = 1000000

von Karl H. (kbuchegg)


Lesenswert?

Und selbst dann besteht die Lösung nicht darin, in BASCOM
das 1 Mhz einzutragen, sondern den Prozessor umzufusen, dass
er den externen Quarz auch tatsächlich benutzt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.