Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: Mehre Fragen zur Micro Kategorie: C-Control I Micro (von DIE HARD - 24.01.2006 15:31)
 Als Antwort auf Re: Mehre Fragen zur Micro von Max Frisch - 23.01.2006 22:37
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.

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

Bisherige Antworten: