PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Print-Befehl.. aber wie?



Karlja
25.07.2005, 17:02
Ich hab auch ein Problem mit dem Print-Befehl... ja ich habe schon im Forum gesucht, aber nichts vernünftiges gefunden.
Der Atmega16 ist wie folgt programmiert:



$regfile = "m16def.dat" 'Deklarationen für den ATmega16
$crystal = 1600000 'Interner RC-Oszillator mit 1 MHz
$baud = 9600 'UART-Baudrate: 9600 Baud

Anfang:
Printbin &B00000001
Waitms 1000
Goto Anfang


Nunja, ich versuche nun mit dem Windows Terminal das zu empfangen, was über die serielle Schnittstelle gesendet wird. Aber anstatt des Zeichens bekomme ich 01111111 bzw. Dezimal 127 zurück (das Zeichen sieht aus, wie nen Haus).
Kann mir jemand sagen, was ich falsch mache?

Mein Grund Gedanke war eigentlich, dass ich das, was an den MicroController gesendet wird, wieder zurück an den PC sende... Das hatte ich nach einem Beispiel wie folgt versucht:


$regfile = "m16def.dat" 'Deklarationen für den ATmega16
$crystal = 1000000 'Interner RC-Oszillator mit 1 MHz
$baud = 9600 'UART-Baudrate: 9600 Baud

Onrxd: 'EIN Zeichen ist in der UART eingetroffen
Printbin udr
Return


Kann mir jemand bei der Lösung des Problems helfen?`

Vielen Dank.
cu
Karlja

PicNick
25.07.2005, 17:12
Schau mal da, vielleicht hilft es

https://www.roboternetz.de/wiki/pmwiki.php?n=Main.BasComVergleich1

Karlja
25.07.2005, 19:10
Also, auf den folgenden Code:


$regfile = "m16def.dat" 'Deklarationen für den ATmega16
$crystal = 1600000 'Interner RC-Oszillator mit 1 MHz
$baud = 9600 'UART-Baudrate: 9600 Baud

Print "Hello, world !"
End


gibt es als Antwort im Windows Terminal ein schickes Dreieck bzw. Dezimalwert 31... das hat mich also nicht wirklich weitergebracht.

Woher weiß ich eigentlich den Wert für $crystal=... ?

cu
Karlja

bertl100
25.07.2005, 19:33
Falscher Takt!!!!!

Hast den internen RC-Oszi laufen, oder??
Im Kommentar heißt es "Interner RC-Oszillator mit 1 MHz"
Einfach von der Hilfe kopieren geht natürlich nicht!!
Dann musst crystal=1000000 setzen!!

MFG

Bertl

Karlja
25.07.2005, 20:04
Habe beides ausprobiert und für den ATMega16 heißt es 0 - 16 Mhz Taktrate... womit ich also beides nutzen können müsste.
Aber auch mit $crystal=16000000 funktioniert es bei mir nicht.

Danke für den Tip.
cu
Karlja

bertl100
25.07.2005, 21:43
Hast du die Fuses eingestellt???

Karlja
25.07.2005, 21:49
Ähm... so lange arbeite ich noch nicht mit MicroControllern... könnte ich zu dem Fuses einstellen eine kleine Erklärung bekommen? Sorry.

chr-mt
25.07.2005, 22:24
Hi,
mit den Fuses stellst du zB. ein, ab der AVR mit internem Takt (und da mit welcher Frequenz) , externem Takt (nicht einstellen!) oder mit einem Quarz arbeitet. Wenn der AVR einen Quarz hat , steht aber auf "intern" , dann geht natürlich nix, weil Bascom dann die Baudraten falsch brechnet.
Also erst mal gucken, welche interne Quarzfrequenz bei dir eingestellt ist.
Im Auslieferungszustand sind die AVRs auf internen Takt eingestellt.
Mußt mal gucken, wie man bei deinem Programmer die Fuses einstellen kann.
Externer Takt deshalb nicht, da man sonst einen externen Quarzoszillator anschliessen muß, damit er funktioniert (und programmiert werdern kann).
Es gibt auch noch jede Menge andere Fuses (größe des Bootsektors usw.)

Gruß
Christopher

Karlja
25.07.2005, 22:31
Achso...
wie bekomme ich denn die Interne QuarzFrequenz heraus.
Und programmieren tu ich das mit Bascom...

cu
Karlja