Wait wartet über 10x so lang.
Nachdem ich von der blinkenden LED weg wollte und einen 7-segment display aus meinem cybot ausgebaut habe (siehe thread im bausatz forum), habe ich mich entschlossen ein kleines testprogramm zu schreiben. Welches in etwa so aussieht:
Code:
$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 16000000
$baud = 9600
Declare Sub Zahlanzeigen(byval Zahl As Byte)
Config Porta.0 = Output
Config Porta.1 = Output
Config Porta.2 = Output
Config Porta.3 = Output
Config Porta.4 = Output
Config Porta.5 = Output
Config Porta.6 = Output
Config Porta.7 = Output
Dim I As Byte
Dim J As Byte
Do
I = I + 1
Call Zahlanzeigen(i)
Waitms 50
If I = 19 Then
I = 0
End If
Loop
Sub Zahlanzeigen(byval Zahl As Byte)
Porta.0 = 1
Porta.1 = 1
Porta.2 = 1
Porta.3 = 1
Porta.4 = 1
Porta.5 = 1
Porta.6 = 1
Porta.7 = 1
If Zahl >= 10 Then
Porta.4 = 0
End If
J = Zahl Mod 10
If J = 1 Then
'cb
Porta.0 = 0
Porta.7 = 0
Elseif J = 2 Then
'abged
Porta.6 = 0
Porta.7 = 0
Porta.2 = 0
Porta.3 = 0
Porta.1 = 0
Elseif J = 3 Then
'abgcd
Porta.6 = 0
Porta.7 = 0
Porta.2 = 0
Porta.0 = 0
Porta.1 = 0
Elseif J = 4 Then
'fgbc
Porta.5 = 0
Porta.2 = 0
Porta.7 = 0
Porta.0 = 0
Elseif J = 5 Then
'afgcd
Porta.6 = 0
Porta.5 = 0
Porta.2 = 0
Porta.0 = 0
Porta.1 = 0
Elseif J = 6 Then
'fgecda
Porta.5 = 0
Porta.2 = 0
Porta.3 = 0
Porta.0 = 0
Porta.1 = 0
Porta.6 = 0
Elseif J = 7 Then
'abc
Porta.6 = 0
Porta.7 = 0
Porta.0 = 0
Elseif J = 8 Then
'alles ausser 4
Porta.0 = 0
Porta.1 = 0
Porta.2 = 0
Porta.3 = 0
Porta.5 = 0
Porta.6 = 0
Porta.7 = 0
Elseif J = 9 Then
Porta.0 = 0
Porta.1 = 0
Porta.2 = 0
Porta.5 = 0
Porta.6 = 0
Porta.7 = 0
Else
Porta.0 = 0
Porta.1 = 0
Porta.3 = 0
Porta.5 = 0
Porta.6 = 0
Porta.7 = 0
End If
End Sub
Man bemerke, dass ich nur 50ms warte. Tatsächlich, wartet der Controller aber knapp unter einer sekunde.
Benutze ich eine Sekunde, so wartet er ~16 sekunden.
Woran liegt das?
Fusebits sind auf standart gelassen und ich verwende kein Quarz.
Danke schonmal,
Merew
Re: Wait wartet über 10x so lang.
Zitat:
Zitat von Merew
$crystal = 16000000
Fusebits sind auf standart gelassen und ich verwende kein Quarz.
Warum steht dann in deinem Programm, dass ein 16MHz Quarz angeschlossen ist?
Stell mal auf 1MHz, das ist meistens der Standard bei Auslieferung.