Oh, ich hatte noch einen Fehler drinn,
$crystal = 1000000 nicht 10000000.
Habe ich überall angepasst, bringt aber bislang nichts.
Hallo,
(Anfängerfrage)
Ich habe hier das USB-Modul UM 100 von ELV
(https://www.roboternetz.de/phpBB2/viewtopic.php?t=14292)
So ich wollte mal ein paar Daten zum PC übertragen und habe dazu dieses Progrämmchen geschrieben.
Das Programm läuft auf meinem Testboard, und am USB- Modul flackert ein paar mal die grüne LED, dann kommt die Pause und anschließend geht es von vorne los.Code:$regfile = "m16def.dat" $crystal = 10000000 $baud = 300 Do Print "Hello World" Waitms 300 Loop End
TDX ist an RDX und RDX an TDX angeschlossen.
GND und VCC beziehe ich auch von dem USB-Modul.
Der Jumper für die Stromquelle steht auf usb.
Das Problem ist jetzt, dass ich im Terminalfenster von Bascom einfach keinen Text bekomme.
Hier die Einstellungen des USB / Com-Ports
Bits Pro Sekunde : 300
Datenbits : 8
Parität : Keine
Stopbits : 1
Flussteuerung : Keine
-> Erweitert
FIFO-Puffer verwenden : Ja
FIFO Empfangspuffer : 14
FIFO Übertragungspuffer : 16
COM-Anschlussnummer : COM5
------------------------
Die Einstellungen in Basecom
-> Options -> Communication
ComPort : Com5
Baudrate : 300
Parity : None
Databits : 8
Stopbits : 1
Handshake : None
Emulation : None
RTS : OFF
Konflikt mit dem Com-Port besteht nicht und ich habe es auch bereits über einen Anderen versucht, bringt aber nichts.
Beim Öffnen des Terminalfensters wird der Port wohl erkannt, bzw. wenn ich den USB-Stecker abgezogen habe kommt beim Öffnen die Meldung, das der Port nicht verfügbar ist.
Wiso läuft das denn nicht ?
Oh, ich hatte noch einen Fehler drinn,
$crystal = 1000000 nicht 10000000.
Habe ich überall angepasst, bringt aber bislang nichts.
Also habe es nochmals überprüft.
Das Modul empfängt Daten, wenn ich etwas übers Terminalfenster sende!
Und es erhält Daten wenn der Mikrocontroller (Mega16) daten per Print Sendet.
Jedoch bekommt der Mikrokontroller nichts vom PC und der PC meist auch nichts vom Controller. Wenn jedoch Etwas ankommt, dann sind das irgendwelche Zeichen.
Ich nehme stark an, dass es an der eingestellten Taktrate des Controllers liegt und die Baud-Werte dann nicht passen.
Was muss ich denn einstellen, wenn ich den internen Quarz des Mega16s benutze ?
Und ist dieser vielleicht zu langsam, so dass ich besser einen Externen drannhänge ?
also, intern geht der M16 vom Werk aus mit 1MHz.
Für 300 Baud reicht das absolut dicke aus, da brauchste
Dir keinen Kopf machen. anders aussehen tuts mit dem
Fehler. Die Länge eines baud ist durch die Baudrate genau
definiert in der zeitlichen Dauer. Bascom rechnet
aus der angegebenen baudrate und der angegebenen
Quarzfreuquenz einen Wert für die Konfiguration der UART
aus, der möglichst nahe dem Fehler 0 ist, aber eben nur
nahe wenn die Taktfrequenz ein "gerader" Wert ala
1 MHZ oder 2MHz ist. Eine genaue Baudrate gibts nur
mit einem sog. Baudratenquarz. Da stimmt das
Timing dann annähernd 100%.
Aber die Effekte treten normalerweise nur bei richtig flotten
Geschwindigkeiten auf, bei 300 sind die noch nicht kriegsentscheidend.
Ich vermute Dein Takt des µC stimmt einfach nicht mit dem
in Bascom angegebenen überein.
Da Du fragst wie die Geschwindigkeit eingestellt wird vermute ich
Du hast da noch keine Veränderung vorgenommen und die Kiste
läuft auf 1MHz wie von Werk ab eben eingestellt.
Verändern kannste das über die sog. Fuses, die Du im
Flash-Fenster oder Programmer-Fenster einstellen kannst.
Da ist dann ein Karteireiter wo draufsteht Locks / Fuses oder so,
da kannste dann die Taktquellen einstellen.
Clock Source
Vor den Erfolg haben die Götter den Schweiß gesetzt
Lesezeichen