Hallo, ich schlage mich schon stundenlang damit rum, die serielle Schnittstelle mit dem Bascom Compiler anzusprechen. Das Programm: $regfile = "m16def.dat" $crystal = 16000000 'Quarz: 16 MHz $Baud = 9600 'Baudrate der UART: 9600 Baud Dim i As Byte Dim wTest As Word i = 1 wTest = 35000 Do Printbin i ; wTest Print "Hallo AVR: " ; i ; wTest Print "<--->" ; Loop End Außer hin und wieder ein paar undefinierbare Zeichen empfange ich aber nichts. (Hyperterminal) Richtig angeschlossen ist alles. Der Signalpegel liegt bei +- 7,5 Volt. Mega16, 9600 Baud Wo könnte man den Fehler suchen ? Gruß Reinhard
Hat der Quarz wirklich 16MHz? (typisches Problem wenn man Code kopiert) Wird der Quarz auch benutzt und nicht etwa der interne Oszillator mit (Default: ) 1MHz. Kann man einfach testen: $Crystal-Zeile auf 1MHz stellen. Wozu dient das Printbin? Vielleicht verwirrt das ja das Hyperterm. Markus
Hallo Markus, besten Dank für Deine schnelle Antwort. Also der externe Quarz ist aktiv, wenn ich 1 Mhz einstelle, habe ich eine wesentlich höhere Ausgangsfrequenz. Ich empfange jetzt auch alle möglichen Zeichen (immer das gleiche Muster) nur nicht das was ich sende. Was die Zeile soll, weiß ich auch nicht, ich habe das Beispielprogramm so übernommen. Hat aber nichts zu sagen, da ich das Ganze jetzt mit dem Assemblerprogramm hier aus dem Tutorial getestet habe und das klappt auch nicht. Hat also nichts mit Bascom zu tun. Was mir gerade aufgefallen ist: Der Aufgangspegel liegt im Ruhezustand auf -7,5 Volt. Der Pegel wird durch den Treiberbaustein (ADM222) invertiert. Könnte es daran liegen ? Aber eigentlich machen das, glaube ich, alle Schmittstellentreiber. Gruß Reinhard
Hallo Markus, Du hast recht gehabt, der externe Oszillator war gar nicht aktiv ! Warum es dann nicht bei der Einstellung 1 MHz funktioniert hat, weiß ich nicht. Jetzt habe ich den externen Oszillator aktiviert und es funktioniert. Na ja, noch 50 Minuten Zeit Männertag zu feiern, jetzt hole ich mir erst mal ein Bier. Gruß Reinhard
Hi, Das ging deshalb mit 1MHz nicht, weil mit 9600 der Baudratenfehler irre groß ist. 1MHz ginge mit 4800 wenn ich mich nicht irre. Gruß, Norbert
Hallo Norbert, stimmt der Fehler würde bei 7% liegen, das kann nicht funktionieren. Jetzt ist alles klar. Besten Dank ! Gruß Reinhard
Hi, Hast Du es denn mal mit 4800 bei 1MHz ausprobiert? Ich habe das so vor und bin mir nicht so sicher, ob das mit dem internen OSC so was wird. Gruß, Norbert
Das Problem am internen Oszillator ist, daß er nicht temperaturstabil ist. D.h., selbst wenn es jetzt läuft, dann kann es gut sein, daß es an einem heißen Sommertag nicht mehr läuft. Markus
Hi, Das ist kein Problem, das wird in einem gut klimatisiertem Raum betrieben, ich brauch das nur als arme-Leute Debugger. Gruß, Norbert
Hallo Norbert, ich wollte es gerade mal probieren, aber ich bekomme den internen Oszillator nicht mehr aktiviert. In der Dokumentation steht CKSEL auf 0001 stellen. Habe ich gemacht, aber es ändert sich nichts. Gibt es da noch was zu beachten ? Gruß Reinhard
Hi, Hast Du auf Write FSB geklickt? Geh im Programmer zum Buffer und wieder zurück, dann liest er die FB wieder neu ein. Hat er's wirklich geschrieben? Ich hab auch immer wieder Probleme damit bei Bascom, werde es jetzt mal mit Ponyprog versuchen. Gruß, Norbert
Also ich mach es mit Ponyprog. Gesetzt sind: CKSEL0 SUT1 BOOTSZ0 BOOTSZ1 Im Programm steht: $crystal = 16000000 $baud = 9600 In der Konfiguration von Bascom stehen auch 16 MHz und Hyperterminal ist auf 9600 Baud gestellt. Daten werden einwandfrei übertragen, also läuft der Mega16 doch mit 16 MHz. Warum der interne Oszillator nicht aktiviert wird kann ich mir nicht erklären. Ach so die Fuse Bits sind frisch ausgelesen und vorher habe ich das Teil auch noch eine Weile von der Betriebsspannung getrennt. Gruß Reinhard
Hi, Du weisst, das CKSEL 0001 bei Ponyprog ein Häckchen bei 3,2,1 und keins bei 0 bedeutet? 1 ist unprogrammed, 0 programmed. Bei Ponyprog ist ein Häkchen 0. Möchte mal wissen, was der Kerl sich dabei gedacht hat. Wenns das nicht ist weiß ich auch nicht. Wenn Du $Crystal und $Baud benutzt, überschreibt das die Einstellungen in Bascom immer. Gruß, Norbert
Hallo Norbert, das habe ich nicht gewußt !!! Zum Glück läuft scheinbar der Mega16 auf extern wenn 1111 oder 0000 programmiert ist, ansonsten wäre ich daran schon gescheitert. Also, das mit den 4800 Baud bei 1 MHz läuft ohne Probleme, 9600 geht absolut nicht. Besten Dank nochmals und einen schönen Abend allerseits. Gruß Reinhard
@Tarnick: Das Ponyprog die Fuses invertiert steht doch dran. In mittelgrauer Schrift auf hellgrauem Grund... Markus
Mich verwirrt das auch immer, obwohl es logisch ist. Häkchen heisst einfach "programmed" kein Häkchen heisst Originalzustand. Da man nur Nullen programmieren kann ist es halt verdreht.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.