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:
Vielleicht kan sich jemand dieser Denkaufgabe stellenCode:'--------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![]()
@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







Zitieren

Lesezeichen