witam,
na początek dodam iż pierwszy raz mam do czynienia z AVR i bascomem,
sklepałem taki programik który mam nadzieje że z Waszą pomocą uda się dokończyć i pójść dalej
Urządzenie na tą chwile składa się z
atmega8
lcd 2x16
2x led
przyciski: power, menu, up, down
Docelowo jak mi sie uda to miało by wysterować tda7318
Ogólnie program sie odpala - "init" - w tej chwili nic jeszcze tam nie ma ale w dalszej części będzie sie coś robić
(wpisywać po i2c ustawienia do tda7138) i przechodzi do standby (którym jest poweroff) i następnie po wciśnięciu klawisza power przechodzi do "power on" i do trybu "normal mode"
w międzyczasie zapalają sie też diodki ale teraz to nie istotne
W trybie "normal mode" moge albo wywołać "poweroff" albo "menu"
o i mam problem i kilka pytań z tym związanych:
1) jak zrobić obsługe menu - chodzi o to aby po wejściu do "menu" klawiszami (down/up button) przeskakiwać po zdefiniowanych pozycjach w menu (Funkcja1 do Funkcja5) oczywiście aby sie wyświetlało na lcd
a następnie:
a) ponownie wciskając (krótko) przycisk menu wejść (będąc na wybranej funkcji) do tej funkcji i móc zmienić ew ustawienia
b) przytrzymując dłużej przycisk menu (np 2sek) wyjść z "menu" do trybu "normal" jednocześnie zapisując gdzieś (chyba do int eeprom?) zmiany
Szukałem podobnego projektu z obsługą tda7318 ale chyba w żadnym nie było źródeł pod atmege, jedynie co znalazłem pod 89c52 ale jakoś niebardzo rozumiem jak to tam jest zrobione no i chyba troche inaczej niż ja chciałbym
dziękuje i pozdrawiam
na początek dodam iż pierwszy raz mam do czynienia z AVR i bascomem,
sklepałem taki programik który mam nadzieje że z Waszą pomocą uda się dokończyć i pójść dalej
$regfile = "m8def.DAT" ' Atmega8
$crystal = 1000000 'wew oscylator 1MHz
'Deklaracja portów od wyświetlacza LCD
Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.4 , Rs = Portb.5
Config Lcd = 16 * 2
Config Sda = Portc.4 'deklaracja portu sda
Config Scl = Portc.5
Config Pinc.3 = Input 'power buttor
Config Pinc.2 = Input 'up button
Config Pinc.1 = Input 'down button
Config Pinc.0 = Input 'menu button
Const T1 = " Funkcja1 "
Const T2 = " Funkcja2 "
Const T3 = " Funkcja3 "
Const T4 = " Funkcja4 "
Const T5 = " Funkcja5 "
Declare Sub Init ' Inicjalizacja
Declare Sub Power_off ' "STAND-BY"
Declare Sub Power_on ' POWER ON
Declare Sub Normal ' tryb pracy
Declare Sub Menu
Declare Sub Greenled ' odpalenie zielonej diody
Declare Sub Redled ' odpalenie czerw. diody
Declare Sub 5ms ' czekajka
Declare Sub 100ms ' czekajka
Declare Sub 500ms ' czekajka
Dim Menu_funkcja As Byte
Sub Init:
Call Redled
Call Greenled
Lcd "Init...."
Call 500ms
Cls
Goto Power_off
End Sub
'###########################
Sub Power_off:
Call 100ms
Cls
Upperline
Lcd "power off"
Lowerline
Lcd "wylaczanie..."
Call 500ms
Cls
Call 500ms
Call 500ms
Call Redled
Do
Set Portc.3
Call 5ms
If Pinc.3 = 1 Then Power_on
Loop
End Sub
'###########################
Sub Power_on
Call 100ms
Lcd "power on"
Call 500ms
Call 500ms
Cls
Goto Normal
End Sub
'###########################
Sub Normal
Cls
Call Greenled
Do
Set Portc.3
Call 5ms
If Pinc.3 = 1 Then Goto Power_off
Set Portc.0
Call 5ms
If Pinc.0 = 1 Then Menu
Loop
End Sub
'##########################
Sub Menu
Incr Menu_funkcja
Home : Lcd T1
'....
Debounce Pinc.0 , 1 , Menu , Sub
Do
Set Portc.0
Call 5ms
If Pinc.0 = 1 Then Normal
Loop
End Sub
'##################################
Sub 100ms:
Waitms 100
End Sub
'##################################
Sub 500ms:
Waitms 500
End Sub
'##################################
Sub 5ms:
Waitms 5
End Sub
'##################################
Sub Greenled:
Set Portd.3
End Sub
'##################################
Sub Redled:
Set Portd.2
End Sub
Urządzenie na tą chwile składa się z
atmega8
lcd 2x16
2x led
przyciski: power, menu, up, down
Docelowo jak mi sie uda to miało by wysterować tda7318
Ogólnie program sie odpala - "init" - w tej chwili nic jeszcze tam nie ma ale w dalszej części będzie sie coś robić
w międzyczasie zapalają sie też diodki ale teraz to nie istotne
W trybie "normal mode" moge albo wywołać "poweroff" albo "menu"
o i mam problem i kilka pytań z tym związanych:
1) jak zrobić obsługe menu - chodzi o to aby po wejściu do "menu" klawiszami (down/up button) przeskakiwać po zdefiniowanych pozycjach w menu (Funkcja1 do Funkcja5) oczywiście aby sie wyświetlało na lcd
a) ponownie wciskając (krótko) przycisk menu wejść (będąc na wybranej funkcji) do tej funkcji i móc zmienić ew ustawienia
b) przytrzymując dłużej przycisk menu (np 2sek) wyjść z "menu" do trybu "normal" jednocześnie zapisując gdzieś (chyba do int eeprom?) zmiany
Szukałem podobnego projektu z obsługą tda7318 ale chyba w żadnym nie było źródeł pod atmege, jedynie co znalazłem pod 89c52 ale jakoś niebardzo rozumiem jak to tam jest zrobione no i chyba troche inaczej niż ja chciałbym
dziękuje i pozdrawiam
