Witam serdecznie!
To jest mój pierwszy post na elektrodzie. Jestem początkującym Bascomowcem.
Szukałem długo w necie rozwiązań typu "Tap tempo" dla AVR pod Bascom. Niestety nie było. Napisałem własny programik i działa.
proszę o krytykę na temat składni kodu, poprawności pisania itd., ale też o inne lepsze pomysły w tym temacie.
Pozdrawiam serdecznie.
Dodano po 14 [minuty]:
Dodam może jeszcze, że ten mały kod będzie częścią większego - czyli sterownika DMX-512. Odbiornik jest prosty w napisaniu w porównaniu z nadajnikiem.
To może się rozbić o co najmniej 2 procki, w tym jeden z ADC, oraz zewnętrzny EEPROM.
To jest mój pierwszy post na elektrodzie. Jestem początkującym Bascomowcem.
Szukałem długo w necie rozwiązań typu "Tap tempo" dla AVR pod Bascom. Niestety nie było. Napisałem własny programik i działa.
'mój pierwszy program typu "metronom"
'z "nabijaniem tempa 1 przyciskiem
'Działa, ale czy da się prościej?
$regfile = "attiny2313.dat"
$crystal = 8000000
Config Pinb.1 = Output
'na razie dioda
Config Pinb.0 = Input
Pinb.0 = 1
'przycisk "TEMPO"
Config Debounce = 2
Config Int0 = Falling
' przycisk "wymuszony start"
Config Timer0 = Timer , Prescale = 64
On Timer0 Przerwanie_co_1ms
On Int0 Zeruj
Led Alias Portb.1
Portb.1 = 1
Dim Granica As Word
Dim Licznik As Word
Dim Odlicz As Word
Dim Tik As Bit
Granica = 1000
Odlicz = 0
Licznik = 0
Tik = 0
Enable Interrupts
Enable Timer0
Enable Int0
Timer0 = 6
Start Timer0
'-------------------------------------------
Glowna:
Do
Debounce Pinb.0 , 0 , Zacznij , Sub
If Tik = 1 Then
Gosub Petla
End If
Loop
'-------------------------------------------
Petla:
If Odlicz = Granica Then
Reset Portb.1
Odlicz = 0
End If
If Odlicz >= 2 Then
Set Portb.1
End If
Incr Odlicz
Reset Tik
Return
'------------------------------------------- start licznika
Zacznij:
Licznik = 0
Do
Debounce Pinb.0 , 0 , Zakoncz , Sub
Loop
'------------------------------------------- 2 klik - zakończ przechwytywanie
Zakoncz:
Stop Timer0
Gosub Przepisz
Start Timer0
Gosub Glowna
'------------------------------------------- przepisanie zmiennej
Przepisz:
Granica = Licznik
Odlicz = 0
Return
'------------------------------------------- +131 dla uzyskania 1mS
Przerwanie_co_1ms:
Counter0 = Counter0 + 131
Incr Licznik
Set Tik
Return
'-------------------------------------------
Zeruj:
Odlicz = Granica
Counter0 = Counter0 + 131
Return
End
proszę o krytykę na temat składni kodu, poprawności pisania itd., ale też o inne lepsze pomysły w tym temacie.
Pozdrawiam serdecznie.
Dodano po 14 [minuty]:
Dodam może jeszcze, że ten mały kod będzie częścią większego - czyli sterownika DMX-512. Odbiornik jest prosty w napisaniu w porównaniu z nadajnikiem.
To może się rozbić o co najmniej 2 procki, w tym jeden z ADC, oraz zewnętrzny EEPROM.