PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : AVR verstehen...



king-sixXx
17.05.2005, 21:37
Hallo Allerseits!

Das Positive zu erst: Mein Mega8 gibt schon mal was über die RS232 Schnittstelle aus und es erscheint auch auf dem Bascom Terminal. :-)

Leider steht dort nicht das, was ich erwarte...
Ich hab euch mal ein Bild gemacht. In welchen Format werden die Zeichen gesendet??
ASCII is es ja wohl nicht...

Viele Grüße!

uwegw
17.05.2005, 21:45
ich tippe mal die baudrate passt nicht weil zwar ein externer quartz angeschlossen ist, aber der mega8 noch mit dem interen 1MHz-oszillator läuft....

heir ist nen screenshot wies gemacht werden muss für einen externen quartz:
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=9255&highlight=bascom+fusebits

bertl100
17.05.2005, 21:48
Was für eine Taktquelle verwendest du?
wenn du einen externen Quarz betreibst musst du das dem Compiler sagen
-----> crystal=.............
Deshalb wird die Baudratenberechnung wohl nicht stimen.

MFG

Darth

bertl100
17.05.2005, 21:50
uwegw hat recht.
kann auch an den Fuses liegen, wenn du nicht umgestellt hast.

king-sixXx
17.05.2005, 21:57
hmmm. ich hab die Fusebits geändert, aber es hat sich leider nicht viel getan...
muss ich noch $crystal einbauen?
Die Ausgabe sieht jetzt übrigens so aus:

king-sixXx
17.05.2005, 21:59
Ihr seit ja richtig schnell!
Vielen Dank für die Antworten.
Ich hab einen externen Quarts mit 4 MHz

bertl100
17.05.2005, 22:00
Wenn die Fuses umgestellt sind dann im Programmfenster oben noch

$crystal=4000000
$baud=9600

Vorausgesetzt du hast genau 4 MHz. Du musst deine Quarzgeschw. genau eingeben in Herz

king-sixXx
17.05.2005, 22:04
ok crystal steht jetzt auch drin :-)
Doch es hat sich nichts geändert....

bertl100
17.05.2005, 22:05
Sieht schon ganz gut aus aber ich glaube der Compiler weiß noch nicht wie schnell der MC ist------> siehe vorherigen Beitrag

bertl100
17.05.2005, 22:06
Wie siht dein Programm jetzt aus
Schick mal ein Screenshot

king-sixXx
17.05.2005, 22:08
Das Proggi sieht so aus:




$crystal = 4000000
$baud = 9600

Dim A As Integer
A = 0
Do

Print "6"

A = A + 1

Loop Until A = 10

End

bertl100
17.05.2005, 22:09
Das sind die wichtigsten drei Zeilen damit was passieren kann.
regfile ist die Definitionsdatei wo die Assemblerroutinen stehen.



$regfile = "m8def.dat"
$crystal = 4000000
$baud = 9600

[/fliph]

bertl100
17.05.2005, 22:11
Dann klappts auch mit dem Nachbarn!!

king-sixXx
17.05.2005, 22:13
reicht es wenn ich auf diese m8def.dat Datei verweise, oder muss ich in der Datei auch noch was eintragen?

bertl100
17.05.2005, 22:14
kopiere meinen code einfach und häng dein file darunter, also

Dim A As Integer
A = 0
Do

Print "6"

A = A + 1

Loop Until A = 10

End

king-sixXx
17.05.2005, 22:18
Hab ich gemacht, aber meine Nachbarn sind wenig kontaktfreudig... :-)
Aber eine kleine Änderung gibt es:

bertl100
17.05.2005, 22:19
probier mal nen anderen code

$regfile = "m8def.dat"
$crystal = 4000000
$baud = 9600

Print "Hallo Chef! "

wait 1

do

print "Test "
waitms 200
loop

end

bertl100
17.05.2005, 22:21
bist du sicher, dass du beim Terminal die richtige Baudrate eingestellt hast??
9600

king-sixXx
17.05.2005, 22:23
keine Chance...
Hallo Chef will auch nicht. Die Ausgabe diesemal:

[viereck]Tep[viereck]

bertl100
17.05.2005, 22:25
funktionierts mit der Simulation??
Das heißt in Bascom der rote Button (Simulate Program)

king-sixXx
17.05.2005, 22:27
Ja allerdings... Also liegts an der Hardware?

bertl100
17.05.2005, 22:27
schau mal bei meinem Programm.
Wenn alle 200 ms etwas ausgegeben wird dann hat es nichts mit dem Programm zu tun. eher Hardware-----> MAX232 oder was du verwendest.

bertl100
17.05.2005, 22:29
Am besten ist es du stellst mal deine ganze Beschaltung rein.

king-sixXx
17.05.2005, 22:30
ja ich verwende den max232 und es wird in der Simulation alle 200ms "Hallo" augegeben

bertl100
17.05.2005, 22:33
Sollte nicht sein.
Er sollte einmal "Hallo Chef" ausgeben und nach ca. 1 sek sollte er alle 200 ms "Test" ausgeben

king-sixXx
17.05.2005, 22:38
Ah! Stimmt und "Hallo Chef" davor hatte ich übersehen!

king-sixXx
17.05.2005, 22:41
Meine Beschaltung sieht aus wie folgt:
Vom PC zu dem Max232 läuft ein Nullmodemkabel. Der RXD-Pin des Max232 geht an den RXD-Pin den Mega8. Genauso verhält es sich mit dem TXD.

bertl100
17.05.2005, 22:42
Schau noch mal am Terminal. Egal ob diese Vierecke kommen oder so.
Tatsache ist wenn beim einschalten was kommt und 1 sekunde danach
im Abstand von 200 ms, dann kann es eigentlich nur ein Baudratefehler sein.

king-sixXx
17.05.2005, 22:47
hmmm, da muss ich nochmal gucken...
Die restliche Beschaltung stell ich morgen rein...

Hab vielen Dank für deine Mühe!!!!!

Getaco
18.05.2005, 05:48
ich hatte ähnilech Probleme. Darauf hin habe ich den Hypertreminal von MS benutzt. Mit dem funktionierte es auf anhieb.
mfg

bertl100
18.05.2005, 07:30
Ist auch möglich.
Aber die Einstellungen im Hyperterminal müssen trotzdem stimmen.

MfG

pebisoft
18.05.2005, 07:57
$regfile = "m8def.dat"
Enable Interrupts
$crystal = 4000000
$baud = 9600


Dim Test As String * 10
test="pebisoft"

Do

print Test
waitms 500

Loop
End

gib das mal ein
mfg pebisoft

king-sixXx
18.05.2005, 13:24
Hallo Pebisoft!

Leider geht es mit deinem Proggi auch nicht. Ich habe auch testweise mal den Hyperterminal vom Ms benutzt und dann kam das zum Vorschein:

Er spuckt alle 500 ms den String aus. So weit läuft es.... :-)

Alter Knacker
18.05.2005, 13:34
ich hatte das auch mal anfangs, da hat einfach der quarz nicht gepasst.
hab mir dann einen 16er geholt und alles lief sauber.
vielleicht liegts daran?
mfg knacki

king-sixXx
18.05.2005, 13:41
Achja vielleicht noch ein Wort zu meiner Konfiguration... Vielleicht liegt da der Hund begraben:

Beim Gerätemanager vom Windows hab ich unter "Anschlüsse (LPT und COM)" -> Kommunikationsanschluss (COM) -> Anschlusseinstellunegn ->

bps = 9600
Datenbits =8
Parität = keine
Stoppbits = 1
Flusssteuerung = keine

Vom PC gehts über ein Nullmodemkabel zu MAX232 (Schaltplan siehe ein paar Einträge davor)

Vom Max232 gehts dann direkt zum ATmega8 mit dem 4 MHz Quarts. Schaltplan siehe hier:

PicNick
18.05.2005, 15:45
Gerätemanager ist gut, aber diese Werte setzt man besser im Terminalprogramm.

Alter Knacker
18.05.2005, 15:51
mich stört auch die ganze zeit schon das nullmodemkabel.....

hatte ich auch, ging nicht, erst mit nem normalen kabel.
allerdings hatte ich mit dem nullmodem erst gar keine zeichen empfangen.
mfg knacki

PicNick
18.05.2005, 15:53
Männer, wenn das Kabel nicht stimmte, würde er garnix sehen.

Getaco
18.05.2005, 16:41
Solche anzeigen habe ich auch gelegentlich, dann reicht es meist dass ich Hyperterminal ein paar mal neu starte bzw den AVR resete und dann gehts auf einmal. Warum weis ich auch nicht.

king-sixXx
18.05.2005, 18:27
Nochmal ne Frage:
Müssen die Kondensatoren an dem MAX232 undebingt gepolt sein, oder kann ich da auch ungepolte verweden?

pebisoft
18.05.2005, 19:22
nimm ein oszillator mit den 4-beinchen und du bist auf der sicheren seite.
das mit den condens ist immer so eine sache, dort können sich viele mängel verbergen.
ich hatte zu anfangs mit den dingern (condens) auch schwierigkeiten.
mal war es überhitzen beim löten, mal war es das die abweichung beim neukauf schon zu gross war. habe mir die dann passend einbauen lassen.
für mein steckbrett nehme ich die 4-beinigen oszi.
das gleiche problem kannst du auch mit den 5 condens am max haben.
den habe ich mir auch gleich durch einen bekannten einbauen lassen.
jetzt funktioniert es.
es ist manchmal ein teufelsspiel
mfg pebisoft

king-sixXx
18.05.2005, 19:45
Erstmal vielen Dank euch allen!

Ich werde es mal mit einem 16 MHz Quarz ausprobiren und falls das keine Abhilfe schafft löte ich das MAX232 Modul nochmal neu... Sollte ich Erfolg haben lasse ich es euch wissen :-)

MFG
Benedict

king-sixXx
20.05.2005, 16:27
Ihr werdet es nicht glauben:

Ich hab eben mal aus Spaß die M101Datas zwischen meinen IC und dem PC gehängt und auf einmal spuckt er die Strings in leserlicher Form auch wieder aus! *megadollfreu*

Versteh das wer will... ich nicht!

Vielen Dank für eure Hilfe und schönes WE!
Benedict

juergen908
25.05.2005, 13:54
Schreib doch mal $crystal = 1000000 rein.
Der M8 läuft im Lieferzustand mit 1 Mhz...
Dann gehts auch mitm Nachbarn.
Für den Quarz aussen dran interessiert der sich nicht
die Bohne, wenn er auf internen Oscillator eingestellt ist.

MfG Juergen

king-sixXx
25.05.2005, 14:24
Hallo Jürgen!
Du hast recht, dass er ab Werk mit 1 Mhz arbeitet, ich habe aber die Fusebits auf den externen Quarz eingestellt.... Daran kann es eigentlich nicht liegen und jetzt da die M101 dazwischen hängt funktioniert es auch! :-)
Vielen Dank