Hallo

Ich verstehe das auch nicht ganz....
Aber irgendwie habe ich mich jetzt da festgefressen

Vielleicht weis da jemand mehr ??

Also:
minimale Umdrehungen sind 500 U/min = 8,3 U/sek
Mittelere Umdrehungen sind 1000 U/min = 16,6 U/sek
Höchste Umdrehungen sind 1500 U/min = 25 U/sek.

Zwischen min und Max sollte es zumindest reglen!

Wenn ich jetzt für den Timer1 einen Prescaler mit 8 nehme, wären das für 1000 U/min, 60240,96 Takte pro Umdrehung und pro sek.

Jetzt teile ich die Takte pro Umdrehung durch 510, damit ich im Berreich vom Timer0 bleibe (1-256)

Also bei 1000 U/min, wäre dann ein Strich: 118,11 Takte vom Timer0

Wenn ich aber unter der ISR vom Timer0 einen Wert von 100 eintrage.
Also zeichne 100 Striche, dann füllt das schon fast den ganzen Kreis.

Eigentlich müsste ich ja 510 Striche Auftragen können ?!

Hier nochmal der aktuelle Code:
Code:
'--------Drehlicht-----V1.08---------------
 ' 8MHz RC Intern

$regfile = "m8def.dat"
$crystal = 8000000
$hwstack = 200
$swstack = 200
$framesize = 200


'---Config Port's -----------------
Config Portb = Output                                       'Leds
Portb = 255

Config Portd = Input
Portd = 255

'---config Int0------
Config Int0 = Falling
Enable Int0
On Int0 Kontakt

'--- Config Timer1 ----
Config Timer1 = Timer , Prescale = 8
Enable Timer1

'--- Config Timer0 ------
Config Timer0 = Timer , Prescale = 8
Enable Timer0
On Timer0 Spalten


Enable Interrupts
Load Timer0 , 255


Dim Drehzeit As Single
Dim Spaltenzeit As Word
Dim Auftrag As Single

Auftrag = 0
Timer1 = 0
 '--------------------Hauptprogramm--------------------------

Do

Loop

End




'==============================Unterprogramme===================================
'--------------ISR von Int0--------------------
Kontakt:
Drehzeit = Timer1
Timer1 = 0
Spaltenzeit = Drehzeit / 510

Auftrag = 0
Return


'------------ISR von Timer0 --------------------
Spalten:
Load Timer0 , Spaltenzeit

If Auftrag < 100 Then
   Toggle Portb
   Incr Auftrag
 End If

Return
Vielleicht kan sich jemand dieser Denkaufgabe stellen

@Bluemash
Für dich habe ich noch den alten Code.
Ganze einfach! Startet einfach ab Kontakt vom Schalter und schreibt dann den Namen Andre in die Luft (Mein Junior )
Geht für das eigentlich recht gut.
Mich störte nur, dass die Weite von der Drehzahl abhängt.

Code:
 '--------Drehlicht-----V1.04---------------
 ' 8MHz RC Intern
 '
 '
 '  schreibt ANDRE   !!!!!!



$regfile = "m8def.dat"
$crystal = 8000000


'---Config Port's -----------------
Config Portb = Output
Portb = 255


Config Portd = Input
Portd = 255




Dim A As Byte
Dim B As Byte
Dim B1 As Byte
A = 1


'--------------------Hauptprogramm--------------------------



Do

If Pind.2 = 0 Then
Waitms 5

Restore Xxx
   '7*Zeichen lesen
       For A = 1 To 7
            '8*Spalten pro Zeichen lesen
                For B = 1 To 8
                Read B1
                B1 = 255 - B1
                Portb = B1
                Waitus 20
                Next B
        Portb = 255                                         'Für Abstand zwischen den Zeichen
        Waitus 200
       Next A

End If


Portb = 255



 Loop

End




     'Red Message
Xxx:
Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0                          'Leerzeichen
Data 31 , 36 , 68 , 132 , 132 , 68 , 36 , 31                'A
Data 255 , 64 , 32 , 16 , 8 , 4 , 2 , 255                   'N
Data 255 , 129 , 129 , 129 , 129 , 129 , 66 , 60            'D
Data 255 , 136 , 136 , 136 , 136 , 140 , 82 , 33            'R
Data 255 , 137 , 137 , 137 , 137 , 137 , 129 , 129          'E
Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0                          'Leerzeichen