
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
||
|
> Hallo..... > > Die MICRO kann die 19200 ! > Es ist so, dass die MICRO den Baudrate-Prescaler aus dem Programm-download mit 9600 > berechnet und dann (nicht flüchtig) speichert. Probleme gibt es eigentlich nur, wenn > (wie mit der Transistorschaltung) Delays wirksam sind, was dann bei 19200 zu grossen > Fehlern in der Baudrate führt. > Wie gesagt, es sollte eigentlich mit dem MAX funktionieren. Hallo nochmal, ich benutze eine M2.0 unit und habe auch eine einfache Transistor-Inverterstufe angeschlossen. Ich habe etwa 3m Kable angeschlossen und lasse das mit 38,4kBd laufen, ohne Probleme. Woher kommen die Delays mit der OM/Transistorstufe. Warum macht es der M2.0 nichts aus ? Vielen Dank, Thomas > > Es gibt aber ein Calibrierprogramm um diese Zeitkonstanten zu kompensieren, damit muss es > auf jeden Fall gehen: > ------------------------------------------------------------------------------------------------------------ > ' Eine automatische Calibrierung der Baudrate bei jedem Download eines BASIC-Programms stellt > ' zwar den Betireb bei 9600 Baud sicher, ist u.U. aber nicht ausreichend für den > ' Betrieb mit 19200 Baud (vor allem wenn der RC-Oszillator driftet, oder die > ' Betriebsspannung schwankt). > ' Um trotzdem den Betrieb bei 19200 Baud zu ermöglichen, kann der Oszillator calibriert > ' werden. > '------------------------------------------------------------------------- > ' Der Befehl FREQ2=WERT schreibt einen Korrekturfaktor in das Betriebssystem, > ' der den Takt um 0,2% je Digit (ausgehend vom Defaultwert 128, nach dem RESET) > ' korrigiert. > ' Der Inhalt von FREQ2 kann nicht gelesen werden und eine Anweisung wie etwa > ' a=FREQ2 führt zu unkontrollierbarem Fehlverhalten, da das entsprechende TOKEN > ' vom INTERPRETER der MICRO nicht erkannt wird. > '------------------------------------------------------------------------- > ' Dieses Programm erhöht/verringert den Wert in FREQ2 bei jedem kurzen/langen Tastendruck, > ' ausgehend vom default Wert 128 = &H80. > ' kurz= 0....200ms, lang= 0....1s > ' Ein Tastendruck darf auf keinen Fall länger als eine Sekunde sein, da der Timer über > ' Null rollt und ein kurzer Druck gemessen wird. > ' Nach jedem neuen Wert für FREQ2 wird dieser und ein Kontrollstring ausgegeben. > ' Mit einem Terminalprogramm können Sie den Bereich der gültigen Werte ermitteln. > ' Der gesuchte Wert liegt in der Regel nicht weit von der Defaulteinstellung. > ' Nähern Sie sich deshalb in kleinen Schritten um auch zu ermitteln, ob FREQ2 > ' grösser oder kleiner werden muss. > ' z.B. Einschalten, Schritte nach unten > ' > ' Wählen sie für die Korrektur des Oszillators > ' > ' FREQ2=KORREKTUR > ' > ' einen Wert aus der Mitte dieses Bereiches. > ' Verwenden Sie diesen Wert einmalig in der Initialisierung Ihres Anwenderprogramms. > ' > ' ACHTUNG: > ' Wenn Sie die Anleitung aufmerksam gelesen haben, wissen Sie, dass das P/E-Board wegen > ' grosser Zeitkonstanten nicht 19200 Baud fähig ist. > ' Sie können diese Kalibrierung erfolgreich auf dem P/E-Board durchführen, weil damit > ' auch die Zeitkonstanten "herauscalibriert" werden, jedoch ist der gefundene KORREKTURWERT > ' nicht repräsentativ, wenn die MICRO in Ihrer Anwendung später einen anderen > ' RS232 Pegelwandler benutzt. > '------------------------------------------------------------------------------------ > ' ----> Sie können das P/E-Board auf diese Weise 19200 Baud fähig machen > ' ----> Wenn Ihre MICRO nach der Programmierung in einer anderen Hardwareumgebung > ' bez. RS 232 läuft, muss sie auch in dieser calibriert werden. > '------------------------------------------------------------------------------------ > > '-------------------------- > '------ I/O PORTS --------- > '-------------------------- > define LED port[5] > define TASTER port[3] > define TXD port[1] > define BEEPPORT port[6] > '-------------------------- > '---- SYSTEM MEMORY ------- > '-------------------------- > define COUNTS byte[1] > > BAUD 19200 > freq2=&H80:COUNTS=&H80 > '-------------------------------------------------- > ' LOOKING FOR GOOD FREQ2 VALUES - > '-------------------------------------------------- > print "CALIBRIERUNG DES OSZILLATORS" > PRINT "- BITTE TASTER DRUECKEN -" > #WAIT > WAIT not TASTER:SECOND=0: > WAIT TASTER > if TIMER < 10 then goto INCREASE > > #DECREASE > COUNTS=COUNTS-5:FREQ2=COUNTS:pause 5:print COUNTS;:print " TESTCHARACTERS" > goto WAIT > > #INCREASE > COUNTS=COUNTS+5:FREQ2=COUNTS:pause 5:print COUNTS;:print " TESTCHARACTERS" > goto WAIT |
| Antwort schreiben |