Witam.
Projektuje właśnie zegar widmowy i mam do rozwiązania następujący problem... Wyświetlanie zamierzam zrealizować dzieląc "obszar rysowania" na n równych częsci. Stabilizację obrazu zrobiłem za pomocą halotronu podłączonego do INT0. W przerwaniu ustawiana jest flaga rozpoczęcia wyświetlania a opóźnienia generowane są fukncją waitms... Właśnie to chcę zmienić. W przerwaniu INT0 chcę mierzyć okres obrotu. To akurat jest banalne, ale w jaki sposób podzielić ten czas na n równych odcinków i generować przerwania? Próbowałem zaprządz do tego drugi Timer, ale nie mogłem go zmusić do współpracy. Próba przeliczenia danych z pomiaru obrotu i przeliczenia ich do ms też kiepsko wypada...
Jaknarazie naklepałem coś takiego:
Co byscie radzili?
Projektuje właśnie zegar widmowy i mam do rozwiązania następujący problem... Wyświetlanie zamierzam zrealizować dzieląc "obszar rysowania" na n równych częsci. Stabilizację obrazu zrobiłem za pomocą halotronu podłączonego do INT0. W przerwaniu ustawiana jest flaga rozpoczęcia wyświetlania a opóźnienia generowane są fukncją waitms... Właśnie to chcę zmienić. W przerwaniu INT0 chcę mierzyć okres obrotu. To akurat jest banalne, ale w jaki sposób podzielić ten czas na n równych odcinków i generować przerwania? Próbowałem zaprządz do tego drugi Timer, ale nie mogłem go zmusić do współpracy. Próba przeliczenia danych z pomiaru obrotu i przeliczenia ich do ms też kiepsko wypada...
Jaknarazie naklepałem coś takiego:
$crystal = 16000000
$regfile "m8def.dat"
Config Timer0 = Timer , Prescale = 1024
Config Int0 = Rising
On Int0 Poz
Enable Int0
Enable Interrupts
Enable Timer0
Config Portc = Output
Config Portb.2 = Output
Config Portb.1 = Output
Config Portd.2 = Input
Config Portb.0 = Output
Set Portd.2
Dim A As Byte
Dim T As Word
Dim W As Single
Dim U As Word
A = 1
Do
If T = 1 Then
T = 0
Do
Portc = Lookup(a , Tab)
Portb = Lookup(a , Tab2)
Waitms 1
Incr A
If A = 10 Then
A = 0
Portb = 0
Portc = 0
End If
Loop Until A = 0
End If
Loop
Poz:
Stop Timer0
U = Timer0
Timer0 = 0
T = 1
Start Timer0
Return
Tab:
Data &B00000001 , &B00000011 , &B00000011 , &B00000101 , &B00000101
Data &B00001001 , &B00001001 , &B00010001 , &B00111111 , &B00000001
Tab2:
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000
Data &B00000000 , &B00000000 , &B00000000 , &B00000110 , &B00000000Co byscie radzili?