Jak zapisać w eprom i odczytać to może jakoś bym to zrobił bo bawiłem się już eprom em i wewnętrznym i zewnętrznym
Problem mam jak zrobić ze by tylko przy pierwszym ruszeniu programu przejść przez defaultowe ustawienia tda a potem to jak było ustawione ze by czytał
tu mam zagwoztke jak to zrobić
bo wartości to i w ram można trzymać i w pcf od zegarka tez oba mają zasilanie 24/7
Przedwzmacniacz na TDA7439 prośba o dopisanie ustawień zegara i pilota
- kulamario
- Posty: 207
- Rejestracja: 17 sie 2015, 20:05
- Lokalizacja: Greystones
- Kontakt:
- niveasoft
- Posty: 1216
- Rejestracja: 17 sie 2015, 12:13
- Kontakt:
Re: Przedwzmacniacz na TDA7439 prośba o dopisanie ustawień zegara i pilota
Z RAM`em by Ci raczej nie wyszło bo ten soft się ciągle resetuje przy Standby.
Mam nadzieje, że wiecej tego softu nie zobaczę Nie wiem dlaczego Farmer to tak skopał. Do tego mariaż funkcji od Mundi i klops gotowy
Nie żeby to nie działało tylko jest tu straszny bigos Ahahaha
Dlatego podmień te dwa Sub`y i dodaj te kilka zmiennych Eram i powinno śmigać
Dobrze by było jak byś miał Bascom 2081 bo w nim jest nowa funkcja która uaktualnia eeprom tylko jak się wartość zmieni. To powinno w tym programie dłużej pożyć.
Osobiście wolę opcję "Autosave" po określonym czasie. Czyli skończyłes sie bawić w kręcenie gałką to dopiero po 5s zapis do Eeprom.
Mam nadzieje, że wiecej tego softu nie zobaczę Nie wiem dlaczego Farmer to tak skopał. Do tego mariaż funkcji od Mundi i klops gotowy
Nie żeby to nie działało tylko jest tu straszny bigos Ahahaha
Dlatego podmień te dwa Sub`y i dodaj te kilka zmiennych Eram i powinno śmigać
Dobrze by było jak byś miał Bascom 2081 bo w nim jest nowa funkcja która uaktualnia eeprom tylko jak się wartość zmieni. To powinno w tym programie dłużej pożyć.
Osobiście wolę opcję "Autosave" po określonym czasie. Czyli skończyłes sie bawić w kręcenie gałką to dopiero po 5s zapis do Eeprom.
Code: [Zaznacz cały] [Rozwiń/Zwiń]
- Const Updateeeprom = 1 'nowa funkcja Bascom
- '------------------------------------------------------------------------------------------------------------------------------------------
- Dim Input_value_ee As Eram Byte
- Dim Input_gain_value_ee As Eram Byte
- Dim Volume_value_ee As Eram Byte
- Dim Bass_tone_value_ee As Eram Byte
- Dim Middle_tone_value_ee As Eram Byte
- Dim Heigh_tone_value_ee As Eram Byte
- Dim Balance_r_ee As Eram Byte
- Dim Balance_l_ee As Eram Byte
- Dim Myval As Byte , Ee_default As Eram Byte
- Myval = Ee_default
- If Myval <> 0 Then
- Ee_default = 0
- Input_value_ee = 0
- Input_gain_value_ee = 2
- Volume_value_ee = 45
- Bass_tone_value_ee = 9
- Middle_tone_value_ee = 7
- Heigh_tone_value_ee = 9
- Balance_r_ee = 0
- Balance_r_ee = 0
- End If
- '///////////////////////////////////////////////////////////////////////////////
- 'Funkcja wspólna dla wszystkich ustawien
- Sub Setting_function()
- If Encoder_a = 1 Or Command = 17 ' or command = 86 Then 'Sprawdz enkoder
- If Functional_value < Limit_value_max Then 'Zapobiegaj przepelnieniu
- Functional_value = Functional_value + 1 'Zwieksz wartosc funkcji o 1
- Call Transfer 'Funkcja do transferu
- End If
- End If
- If Encoder_b = 1 Or Command = 16 ' or command = 85 Then
- If Functional_value > Limit_value_min Then
- Functional_value = Functional_value - 1
- Call Transfer
- End If
- End If
- Select Case Press_button 'Przy pewnym stanie opcji wywolywania klawiatury
- Case 1 : Volume_value_ee = Functional_value
- Case 2 : Input_value_ee = Functional_value
- Case 3 : Input_gain_value_ee = Functional_value
- Case 4 : Bass_tone_value_ee = Functional_value
- Case 5 : Middle_tone_value_ee = Functional_value
- Case 6 : Heigh_tone_value_ee = Functional_value
- Case 7 : Balance_r_ee = Functional_value
- Case 8 : Balance_l_ee = Functional_value
- End Select
- End Sub
- Sub Settings_tda7439()
- Adres_tda7439 = &H88 'adres chipa urzadzenia TDA7439
- Register = &B00000000 'Wybierz rejestr wejsciowy
- Input_value = Input_value_ee 'Wybierz wejscie 1
- Functional_value = Input_value 'Wartosc poczatkowa rejestru multipleksera wejsciowego jest przypisana do wartosci funkcji
- Call Transfer 'Funkcja wywolania dla transferu danych
- Adres_tda7439 = &H88 'adres chipa urzadzenia TDA7439
- Register = &B00000001 'Podadres rejestru kontroli wzmocnienia wejscia
- Input_gain_value = Input_gain_value_ee
- Functional_value = Input_gain_value 'Wybierz wzmocnienie wejscia (20db)
- Call Transfer 'Funkcja wywolania dla transferu danych
- Adres_tda7439 = &H88
- Register = &B00000010
- Volume_value = Volume_value_ee
- 'readeeprom Volume_value , 2
- Functional_value = Volume_value 'Ustaw glosnosc na -10db
- Call Transfer 'Funkcja wywolania dla transferu danych
- Adres_tda7439 = &H88
- Register = &B00000011 'Rejestr Bass
- Bass_tone_value = Bass_tone_value_ee 'Wybierz Bass 0db
- Functional_value = Bass_tone_value
- Call Transfer 'Funkcja wywolania dla transferu danych
- Adres_tda7439 = &H88
- Register = &B00000100 'Rejestr srodek
- Middle_tone_value = Middle_tone_value_ee 'srodek 0db
- Functional_value = Middle_tone_value
- Call Transfer 'Funkcja wywolania dla transferu danych
- Adres_tda7439 = &H88
- Register = &B00000101 'Rejestr wysokie tony
- Heigh_tone_value = Heigh_tone_value_ee 'wysokie tony 0db
- Functional_value = Heigh_tone_value
- Call Transfer 'Funkcja wywolania dla transferu danych
- Adres_tda7439 = &H88
- Register = &B00000110 'Rejestr Balans prawy kanal RIGHT SPEAKER
- Balance_r = Balance_r_ee '0db Balans_R
- Functional_value = Balance_r
- Call Transfer 'Funkcja wywolania dla transferu danych
- Adres_tda7439 = &H88
- Register = &B00000111 'Rejestr Balans lewy kanal LEFT SPEAKER
- Balance_l = Balance_l_ee
- Functional_value = Balance_l '0db Balans lewy
- Call Transfer 'Funkcja wywolania dla transferu danych
- End Sub
- kulamario
- Posty: 207
- Rejestracja: 17 sie 2015, 20:05
- Lokalizacja: Greystones
- Kontakt:
Re: Przedwzmacniacz na TDA7439 prośba o dopisanie ustawień zegara i pilota
Bascoma nowego nie mam
będę musiał usiąść na spokojnie i protestować to co mi dałeś
dam znać - tylko czy mój bascom skompiluje to ?
ja mam 2.0.7.8
będę musiał usiąść na spokojnie i protestować to co mi dałeś
dam znać - tylko czy mój bascom skompiluje to ?
ja mam 2.0.7.8
- niveasoft
- Posty: 1216
- Rejestracja: 17 sie 2015, 12:13
- Kontakt:
Re: Przedwzmacniacz na TDA7439 prośba o dopisanie ustawień zegara i pilota
Tu nawet nie ma nad czym kombinować. Zmieniłem dwa Suby po to by było jak najmniej roboty (zmian). Normalnie to pewnie w każdym z subów trzeba by zapamiętywać wartości które akurat zmieniasz a tak program sam wie w czym gmerasz i zapamiętuje właściwą.
Sub Set_TDA czy jak mu tam odtąd korzysta już z zapisów w eeprom a wszystko co było przedtem na sztywno jest jednokrotnie wpisywane do eeprom podczas pierwszego uruchomienia. Potem co zmienisz to już Set_TDA tego użyje.
Sprawdź swój email
Sub Set_TDA czy jak mu tam odtąd korzysta już z zapisów w eeprom a wszystko co było przedtem na sztywno jest jednokrotnie wpisywane do eeprom podczas pierwszego uruchomienia. Potem co zmienisz to już Set_TDA tego użyje.
Sprawdź swój email
- kulamario
- Posty: 207
- Rejestracja: 17 sie 2015, 20:05
- Lokalizacja: Greystones
- Kontakt:
Re: Przedwzmacniacz na TDA7439 prośba o dopisanie ustawień zegara i pilota
Do dałem Suby do programu ogólnie wszystko chodzi tz zapamiętuje ustawienia ale jak ściszę na 0 to już nie pod głośni tz na LCD się zmienia ale nie pod głośnia dźwięku
tylko reset pomaga lub ustawienie na jakies wartości volume i włączenie i wyłącznie
tylko reset pomaga lub ustawienie na jakies wartości volume i włączenie i wyłącznie
Code: [Zaznacz cały] [Rozwiń/Zwiń]
- 'TDA7439 - 15 listopad 20018 kulamario@yahoo.ie
- 'dodany pilot
- 'volume up/down
- 'ON/OFF z pilota i guzika
- 'Mute
- 'Funkcje dodane caly pilot zrobiony 20/11/2018
- '--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- $regfile = "m16def.dat"
- $crystal = 8000000 '11059200
- $swstack = 64
- $hwstack = 64
- $framesize = 200
- $include "Config_PCF8583.bas"
- Config Portc.5 = Output : Relay Alias Portc.5 : Set Relay
- Config Submode = New
- Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.1 , Db6 = Portd.7 , Db7 = Portd.0 , E = Portd.5 , Rs = Portd.6 'PCB
- Config Lcd = 16x2
- 'Config Lcdpin = Pin , Db4 = Porta.2 , Db5 = Porta.3 , Db6 = Porta.4 , Db7 = Porta.5 , E = Porta.1 , Rs = Porta.0 'ZL3AVR
- 'Config Lcd = 20x4
- Initlcd
- Cursor Off
- 'Waitms 1000
- 'Variable for Data to TDA7439
- '----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- ' konfiguracja RC5
- Config Rc5 = Pinc.3 , Timer = 2 , Wait = 250
- 'Config Rc5 = Pinc.3 , Timer = 2
- Dim Address As Byte , Command As Byte
- '------------------------------------------------------------------
- Dim Second As Byte
- Dim Minute As Byte
- Dim Hour As Byte
- Dim Day As Byte
- Dim Month As Byte
- Dim Year As Word
- Dim Weekday As Byte
- Dim Blad As Byte
- Dim Ilosc_dni As Byte
- Dim Rok_przestepny As Byte
- ' pocz¹tkowe wartoœci
- Second = 0 ' 00:00:00
- Minute = 0
- Hour = 0
- Day = 1 ' 01.01.2000
- Month = 1
- Year = 2000
- Weekday = 6 ' sobota
- '---------------------------------------------------------------------------------------------------------------------------------------------
- Declare Sub Memory_on_off()
- Declare Sub Pwr_on()
- Declare Sub Pwr_off()
- Dim Pwr As Bit
- Pwr = 1
- dim Mute_func as byte
- 'Mute_func =0
- Dim Input_value_ee As Eram Byte
- Dim Input_gain_value_ee As Eram Byte
- Dim Volume_value_ee As Eram Byte
- Dim Bass_tone_value_ee As Eram Byte
- Dim Middle_tone_value_ee As Eram Byte
- Dim Heigh_tone_value_ee As Eram Byte
- Dim Balance_r_ee As Eram Byte
- Dim Balance_l_ee As Eram Byte
- Dim Myval As Byte , Ee_default As Eram Byte
- Myval = Ee_default
- If Myval <> 0 Then
- Ee_default = 0
- Input_value_ee = 0
- Input_gain_value_ee = 2
- Volume_value_ee = 45
- Bass_tone_value_ee = 9
- Middle_tone_value_ee = 7
- Heigh_tone_value_ee = 9
- Balance_r_ee = 0
- Balance_r_ee = 0
- End If
- '----------------------------------------------------------------------------------------------------------------------------------------------------------------------
- Dim Input_value As Byte 'Zmienna dla multipleksera wejsciowego
- Dim Input_gain_value As Byte 'Zmienna dla poziom wejscia
- Dim Volume_value As Byte 'Zmienna dla Volume
- Dim Bass_tone_value As Byte 'Zmienna dla Bas
- Dim Middle_tone_value As Byte 'Zmienna dla tony srodek
- Dim Heigh_tone_value As Byte 'Zmienna dla tony wysokie
- Dim Limit_value_max As Byte 'Zmienna wartosci graniczna w gore
- Dim Limit_value_min As Byte 'Zmienna wartosci graniczna w dól
- Dim Balance_r As Byte 'Zmienna dla Balans R
- Dim Balance_l As Byte 'Zmienna dla Balans L
- Dim Value As Byte 'Wartosc zapisana w rejestrze
- Dim Adres_tda7439 As Byte 'Adres i2c TDA
- Dim Register As Byte 'Zdefiniuj rejestr, w którym zapisano wartosc
- Dim Press_button As Byte 'Zmienna do okreslenia nacisniecia klawisza, a tym samym mozliwosc wprowadzenia róznych ustawien
- Dim Functional_value As Byte 'Zmienna jest zdefiniowana dla wszystkich zmiennych poszczególnych ustawien
- Dim Held_var As Bit 'Zmienna wyswietla sie po nacisnieciu przycisku
- Dim Encoder_a As Bit 'Zmienna wskazuje, czy przycisk zostal nacisniety
- Dim Encoder_b As Bit 'Zmienna pokazuje, czy przycisk zostal nacisniety
- Dim Button As Bit 'Zmienna do okreslenia, czy nacisnieto przycisk wyboru
- Dim Tmpin As Byte
- Dim Count As Word
- Dim Tmp_1 As Byte , Tmp_2 As Byte , Db As String * 5 , Tone As String * 6 , Vol_out As String * 7
- Dim Tone1 As Byte
- Dim Tone11 As Byte 'Tone11 to jest napis z bufora right,left
- Deflcdchar 1 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 32
- Deflcdchar 2 , 32 , 14 , 14 , 14 , 14 , 14 , 32 , 32
- Deflcdchar 3 , 4 , 14 , 14 , 14 , 14 , 14 , 4 , 32
- Deflcdchar 4 , 32 , 32 , 32 , 21 , 32 , 32 , 32 , 32
- Deflcdchar 5 , 6 , 14 , 30 , 30 , 30 , 14 , 6 , 32
- Declare Sub Bar_vol(byval Vol_out As String , Byval Vol_val As Byte , Byval Sel As Byte) 'bargraf od volume
- Declare Sub Bar_balans(byval Tone11 As String , Byval Tmp_11 As Byte) 'bargraf od balansu
- Declare Sub Bargraph_settings(byval Tone As String , Byval Tmp_1 As Byte) 'bargraf od ustawien tonow
- Declare Sub Settings_tda7439()
- Declare Sub Mute()
- Declare Sub Selection()
- Declare Sub Balance_left()
- Declare Sub Balance_right()
- Declare Sub Select_input()
- Declare Sub Change_settings()
- Declare Sub Setting_function()
- Declare Sub High_tones()
- Declare Sub Inputgain()
- Declare Sub Volume()
- Declare Sub Bass()
- Declare Sub Middle_tones()
- Declare Sub Button_test()
- Declare Sub Transfer()
- Declare Sub Main()
- Declare Sub Lcd_init()
- Declare Sub Tin(byval Tin_val As Byte)
- declare sub Displaytime()
- 'Ports I2C ATMEGA
- '4K7 pullup SCL & SDA
- Config Scl = Portc.0
- Config Sda = Portc.1
- Config I2cdelay = 20
- 'Zdefiniuj dla przycisków sterujacych i zdefiniuj je jako wejscia
- Dim Sw_cnt As Byte , Lock As Byte
- Config Pind.2 = Input : Portd.2 = 1 'Encoder A
- Config Pind.3 = Input : Portd.3 = 1 'Encoder B
- Config Pinc.2 = Input : Portc.2 = 1 : Switch Alias Pinc.2 'switch
- Config Pinb.0 = Input : Portb.0 = 1 : on_off Alias Pinb.0 'switch on/off
- Config Debounce = 50
- '---------------------------------------------------------------------------------
- On Int0 Int0_isr
- Enable Int0
- Config Int0 = Falling
- Enable Interrupts
- 'Standart Register
- Call Settings_tda7439()
- Press_button = 1 'Ustaw przycisk, aby ustawic domyslny
- Cls
- Locate 1 , 1
- Lcd " System TDA7439 "
- Locate 2 , 1
- Lcd "Wait a moment..."
- Waitms 1500
- Cls
- Display Off
- '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- 'Funkcja aby sprawdzic stan przycisków
- Call Select_input
- 'Call Volume
- Display On
- Blad = Pcf8583_storetime(second , Minute , Hour , Day , Month , Year) ' zapis do Pcf8583
- '///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- 'Funkcja do sprawdzania, czy zostal nacisniety przycisk
- Sub Button_test()
- Encoder_a = 0
- Encoder_b = 0
- Button = 0
- If Tifr.ocf2 = 1 Then 'minê³o 10ms, flagê ustawia Timer
- Tifr.ocf2 = 1 'flagi kasuje siê wpisuj¹c jeden, nie zero
- If Switch = 0 Then 'jeœli wciœniêto przycisk
- If Lock = 0 Then 'a jeszcze nie ma blokady
- If Sw_cnt < 50 Then 'tu jesteœmy co 10ms i jeœli jeszcze nie osi¹gneliœmy granicy
- Incr Sw_cnt 'to dodajemy do licznika Sw_cnt
- Else 'jeœ³i granica osi¹gniêta
- Lock = 1 'zablokuj dodawanie a¿ do puszczenia przycisku
- Call Memory_on_off()
- '->tu dajemy to co ma sie dziac po dlugim nacisnieciu
- End If
- End If
- Else 'kiedy zwalniamy przycisk
- If Lock = 0 Then 'a nie by³o to d³ugie wciœniêcie
- If Sw_cnt > 3 Or Command = 82 Then Call Selection 'sprawdŸ czy to nie drganie styków 3x10ms = 30ms
- End If '->zmieñ stan pierwszej diody
- Lock = 0 : Sw_cnt = 0 'wy³¹cz blokadê i zeruj licznik
- End If
- End If
- End Sub
- '---------------------------------------------------------------------------------------------------------------------------------------
- '---------------------------------------------------------------------------------------------------------------------------------------
- '///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- 'Funkcja do zmiany ustawien Bass Treble Middle itp.
- Sub Change_settings()
- If Button = 1 Then
- Count = 0
- If Press_button > 8 Then
- Press_button = 1 'Po dotarciu na koniec, nacisnij klawisz resetowania
- End If
- End If
- Select Case Press_button 'Przy pewnym stanie opcji wywolywania klawiatury
- Case 1 : Call Volume
- Case 2 : Call Select_input
- Case 3 : Call Inputgain
- Case 4 : Call Bass
- Case 5 : Call Middle_tones
- Case 6 : Call High_tones
- Case 7 : Call Balance_right
- Case 8 : Call Balance_left
- End Select
- Button = 0 'Zresetuj przycisk wyboru
- Waitms 80
- End Sub
- '///////////////////////////////////////////////////////////////////////////////
- 'Funkcja wspólna dla wszystkich ustawien
- Sub Setting_function()
- If Encoder_a = 1 Or Command = 17 or command = 86 Then 'Sprawdz enkoder
- If Functional_value < Limit_value_max Then 'Zapobiegaj przepelnieniu
- Functional_value = Functional_value + 1 'Zwieksz wartosc funkcji o 1
- Call Transfer 'Funkcja do transferu
- End If
- End If
- If Encoder_b = 1 Or Command = 16 or command = 85 Then
- If Functional_value > Limit_value_min Then
- Functional_value = Functional_value - 1
- Call Transfer
- End If
- End If
- Select Case Press_button 'Przy pewnym stanie opcji wywolywania klawiatury
- Case 1 : Volume_value_ee = Functional_value
- Case 2 : Input_value_ee = Functional_value
- Case 3 : Input_gain_value_ee = Functional_value
- Case 4 : Bass_tone_value_ee = Functional_value
- Case 5 : Middle_tone_value_ee = Functional_value
- Case 6 : Heigh_tone_value_ee = Functional_value
- Case 7 : Balance_r_ee = Functional_value
- Case 8 : Balance_l_ee = Functional_value
- End Select
- End Sub
- '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- 'Funkcja dla multipleksera wejsciowego
- Sub Select_input()
- 'Set In_shift
- If Held_var = 0 Then 'Zapobiec po prostu zmianie wejsc poprzez przytrzymanie klawiszy
- Limit_value_max = 3 'Zapobiegaj przepelnieniu
- Limit_value_min = 0
- Register = &B00000000 'Wybierz rejestry dla multipleksera wejsciowego
- Functional_value = Input_value ' Wartosc funkcji jest przypisana do ustawien wejsc
- Call Setting_function
- Input_value = Functional_value
- Tmpin = Input_value + 1 'Stara zmienna zostanie zastapiona nowa wartoscia
- Cls
- Locate 1 , 6
- Lcd "INPUT"
- Locate 2 , 1
- Select Case Input_value
- Case 3 : Lcd " CD"
- Case 2 : Lcd " FM"
- Case 1 : Lcd " USB DAC"
- Case 0 : Lcd " PHONE"
- End Select
- Waitms 300
- End If
- End Sub
- '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- 'Funkcja do ustawiania czulosci wejsciowej
- Sub Inputgain()
- Local Tmpa As Byte
- Limit_value_max = 15 'Ogranicz wzmocnienie wejsciowe do 30 db
- Limit_value_min = 0
- Register = &B00000001 'Wybierz rejestr dla regulacji czulosci
- Functional_value = Input_gain_value 'Wartosci funkcji przypisuje sie wejsciowa wartosc wzmocnienia
- Call Setting_function
- Input_gain_value = Functional_value
- Tmpa = Input_gain_value * 2
- Call Tin(input_gain_value)
- End Sub
- '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- 'Funkcja do zmiany glosnosci
- Sub Volume()
- Local S_1 As String * 7
- Local Vol_value As Byte
- Limit_value_max = 49 'volume jest ograniczony do góry
- Limit_value_min = 0
- Register = &B00000010 'Wybierz rejestr dla glosnosci
- Functional_value = Volume_value
- Call Setting_function
- Volume_value = Functional_value
- Select Case Input_value
- Case 3 : S_1 = "CD"
- Case 2 : S_1 = "FM"
- Case 1 : S_1 = "USB DAC"
- Case 0 : S_1 = "PHONE"
- End Select
- Vol_value = Volume_value - 50
- Vol_value = Not Vol_value
- Call Bar_vol(s_1 , Vol_value , 1)
- 'writeeeprom Volume_value , 2
- '-------------------------------------------------------------------------------------------------------------------------------------
- 'blad= Pcf8583_gettime() ' odczytaj godzinê i date z uk³adu PCF8583 , funkcja zwraca kod b³êdu
- ' If Blad = 2 Then ' je¿eli uszkodzona data
- ' Locate 1 , 1 : Lcd " USTAW ZEGAR! " ' wyœwietl komunikat
- ' Locate 2 , 1 : Lcd Spc(16)
- ' sprawdzanie PCF8583
- ' Elseif Blad = 1 Then ' je¿eli b³¹d magistrali I2C
- ' Locate 1 , 1 : Lcd "B{003}{001}d:" ' wyœwietl komunikat
- ' Lcd Spc(11)
- ' Locate 2 , 1 : Lcd "magistrala I2C "
- ' Elseif Blad = 0 Then ' je¿eli prawid³owo odczytane dane
- ' Call Displaytime() ' wyœwietl zegar
- 'end if
- '-------------------------------------------------------------------------------------------------------------------------------------
- End Sub
- '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- 'Funkcja basów
- Sub Bass()
- Local Tmpa As String * 6
- Limit_value_max = 14
- Limit_value_min = 0
- Register = &B00000011 'Wybierz rejestr dla bass
- Functional_value = Bass_tone_value
- Tone1 = 1
- Call Setting_function
- Bass_tone_value = Functional_value
- Call Bargraph_settings( "BASS" , Bass_tone_value)
- End Sub
- '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- 'Funkcja srodkowych tonow
- Sub Middle_tones()
- Local Tmpa As String * 6
- Limit_value_max = 14
- Limit_value_min = 0
- Register = &B00000100
- Functional_value = Middle_tone_value 'Wybierz rejestr dla tonow srednich
- Tone1 = 1
- Call Setting_function
- Middle_tone_value = Functional_value
- Call Bargraph_settings( "MIDDLE" , Middle_tone_value )
- End Sub
- '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- 'Funkcja wysokich tonow
- Sub High_tones() 'NOP
- Local Tmpa As String * 6
- Limit_value_max = 14
- Limit_value_min = 0
- Register = &B00000101 'Wybierz rejestr dla tonow wysokich
- Functional_value = Heigh_tone_value
- Tone1 = 1
- Call Setting_function
- Heigh_tone_value = Functional_value
- Call Bargraph_settings( "TREBLE" , Heigh_tone_value)
- End Sub
- '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- 'Funkcja do regulacji balansu prawego kanalu
- Sub Balance_right()
- Local Tmpa As String * 7
- Limit_value_max = 79 'ograniczyc do -79db
- Limit_value_min = 0
- Register = &B00000110
- Functional_value = Balance_r
- Tone11 = 1 'Tone11 to jest napis z bufora right,left
- Call Setting_function
- Balance_r = Functional_value
- Call Bar_balans( "RIGHT " , Balance_r )
- 'Cls
- ' Locate 1 , 1
- ' Lcd "BALANCE R " '; Tmpin ; " "
- ' Locate 2 , 1
- ' Lcd Balance_R ; " "
- End Sub
- '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- 'Funkcja do regulacji balansu lewego kanalu
- Sub Balance_left()
- Local Tmpa As String * 7
- Limit_value_max = 79 'ograniczyc do -79db
- Limit_value_min = 0
- Register = &B00000111
- Functional_value = Balance_l
- Tone11 = 1 'Tone11 to jest napis z bufora right,left
- Call Setting_function
- Balance_l = Functional_value
- Call Bar_balans( "LEFT " , Balance_l )
- ' Cls
- ' Locate 1 , 1
- ' Lcd "BALANCE L " ' ; Tmpin ; " "
- ' Locate 2 , 1
- ' Lcd Balance_L ; " "
- End Sub
- '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- 'Funkcja rozpoznawana po nacisnieciu przycisku wyboru
- Sub Selection()
- Button = 1
- Incr Press_button
- Call Change_settings
- Waitms 200
- End Sub
- '///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- 'Funkcja do przesylania danych do TDA
- Sub Transfer()
- Value = Functional_value 'Wartosc funkcji jest zapisywana do zmiennej wyjsciowej 'Led ein
- If Tone1 = 1 Then
- Tone1 = 0
- Select Case Value
- Case 0 : Value = 0
- Case 1 : Value = 1
- Case 2 : Value = 2
- Case 3 : Value = 3
- Case 4 : Value = 4
- Case 5 : Value = 5
- Case 6 : Value = 6
- Case 7 : Value = 7
- Case 8 : Value = 15
- Case 9 : Value = 14
- Case 10 : Value = 13
- Case 11 : Value = 12
- Case 12 : Value = 11
- Case 13 : Value = 10
- Case 14 : Value = 9
- Case 15 : Value = 8
- End Select
- End If
- I2cstart 'Rozpocznij wysylanie
- If Err = 0 Then
- I2cwbyte Adres_tda7439 'Wyslij na adres TDA
- If Err = 0 Then
- I2cwbyte Register 'Wybierz rejestr
- I2cwbyte Value 'Zapisz wartosc w rejestrze
- I2cstop ' Stop
- End If
- End If
- Waitms 20
- End Sub
- '--------------------------------------------------------------------------------------------------------------------------------------------------------------------
- '--------------------------------------------------------------------------------------------------------------------------------------------------------------------
- Sub Pwr_on()
- start watchdog
- Waitms 100
- stop watchdog
- End Sub
- '------------------------------------------------------------------------------------------------------------------------------------------
- Sub Pwr_off()
- Cls
- Locate 1 , 1
- Lcd " System OFF "
- Waitms 1000
- Display Off
- Reset Relay
- Ddrd = &B00000000
- End Sub
- '-------------------------------------------------------------------------------------------------------------------------------------------
- Sub Memory_on_off()
- Pwr = Not Pwr
- If Pwr = 1 Then
- Call Pwr_on()
- Else
- Call Pwr_off()
- End If
- End Sub
- '------------------------------------------------------------------------------------------------------------------------------------------
- Sub Settings_tda7439()
- Adres_tda7439 = &H88 'adres chipa urzadzenia TDA7439
- Register = &B00000000 'Wybierz rejestr wejsciowy
- Input_value = Input_value_ee 'Wybierz wejscie 1
- Functional_value = Input_value 'Wartosc poczatkowa rejestru multipleksera wejsciowego jest przypisana do wartosci funkcji
- Call Transfer 'Funkcja wywolania dla transferu danych
- Adres_tda7439 = &H88 'adres chipa urzadzenia TDA7439
- Register = &B00000001 'Podadres rejestru kontroli wzmocnienia wejscia
- Input_gain_value = Input_gain_value_ee
- Functional_value = Input_gain_value 'Wybierz wzmocnienie wejscia (20db)
- Call Transfer 'Funkcja wywolania dla transferu danych
- Adres_tda7439 = &H88
- Register = &B00000010
- Volume_value = Volume_value_ee
- 'readeeprom Volume_value , 2
- Functional_value = Volume_value 'Ustaw glosnosc na -10db
- Call Transfer 'Funkcja wywolania dla transferu danych
- Adres_tda7439 = &H88
- Register = &B00000011 'Rejestr Bass
- Bass_tone_value = Bass_tone_value_ee 'Wybierz Bass 0db
- Functional_value = Bass_tone_value
- Call Transfer 'Funkcja wywolania dla transferu danych
- Adres_tda7439 = &H88
- Register = &B00000100 'Rejestr srodek
- Middle_tone_value = Middle_tone_value_ee 'srodek 0db
- Functional_value = Middle_tone_value
- Call Transfer 'Funkcja wywolania dla transferu danych
- Adres_tda7439 = &H88
- Register = &B00000101 'Rejestr wysokie tony
- Heigh_tone_value = Heigh_tone_value_ee 'wysokie tony 0db
- Functional_value = Heigh_tone_value
- Call Transfer 'Funkcja wywolania dla transferu danych
- Adres_tda7439 = &H88
- Register = &B00000110 'Rejestr Balans prawy kanal RIGHT SPEAKER
- Balance_r = Balance_r_ee '0db Balans_R
- Functional_value = Balance_r
- Call Transfer 'Funkcja wywolania dla transferu danych
- Adres_tda7439 = &H88
- Register = &B00000111 'Rejestr Balans lewy kanal LEFT SPEAKER
- Balance_l = Balance_l_ee
- Functional_value = Balance_l '0db Balans lewy
- Call Transfer 'Funkcja wywolania dla transferu danych
- End Sub
- Do
- '-----------------------------------------------------------------------------------------------------------------------------------------------------
- if on_off = 0 then
- call Memory_on_off() 'switch ON/OFF
- end if
- '-----------------------------------------------------------------------------------------------------------------------REMOTe CONTROLER--------------
- Getrc5(address , Command) 'read if we have remote ir command
- If Address = 0 Then
- Command = Command And &B01111111
- End If
- Select Case Command
- '---- 8codes for remote , change code to your suit ! ----------------
- 'Case 87 : Call Selection() 'remote command code for OK
- Case 16 : Call Volume() 'remote command code for VOL +
- Case 17 : Call Volume() 'remote command code for VOL -
- Case 13 : Call Mute()
- Case 12 : Call Memory_on_off()
- case 85 : call Change_settings() 'lewo
- case 86 : call Change_settings() 'prawo
- End Select
- If Count < 181 Then Incr Count 'menu exit time
- If Count = 180 Then ' set to main volume
- Press_button = 1
- Call Volume
- End If
- Waitms 10
- Call Button_test
- Loop
- End
- Sub Tin(byval Tin_val As Byte)
- Cls
- Select Case Tin_val
- Case 0 : Db = " +0db"
- Case 1 : Db = " +2db"
- Case 2 : Db = " +4db"
- Case 3 : Db = " +6db"
- Case 4 : Db = " +8db"
- Case 5 : Db = "+10db"
- Case 6 : Db = "+12db"
- Case 7 : Db = "+14db"
- Case 8 : Db = "+16db"
- Case 9 : Db = "+18db"
- Case 10 : Db = "+20db"
- Case 11 : Db = "+22db"
- Case 12 : Db = "+24db"
- Case 13 : Db = "+26db"
- Case 14 : Db = "+28db"
- Case 15 : Db = "+30db"
- End Select
- Tin_val = Tin_val + 1
- Locate 1 , 1
- Lcd "GAIN IN "
- Locate 1 , 12
- Lcd Db
- Locate 2 , 1
- Lcd Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4)
- Locate 2 , Tin_val
- Lcd Chr(2)
- End Sub
- Sub Bargraph_settings(byval Tone As String , Byval Tmp_1 As Byte)
- Cls
- Select Case Tmp_1
- Case 0 : Db = "-14db"
- Case 1 : Db = "-12db"
- Case 2 : Db = "-10db"
- Case 3 : Db = " -8db"
- Case 4 : Db = " -6db"
- Case 5 : Db = " -4db"
- Case 6 : Db = " -2db"
- Case 7 : Db = " -0db"
- Case 8 : Db = " +2db"
- Case 9 : Db = " +4db"
- Case 10 : Db = " +6db"
- Case 11 : Db = " +8db"
- Case 12 : Db = "+10db"
- Case 13 : Db = "+12db"
- Case 14 : Db = "+14db"
- End Select
- Tmp_2 = Tmp_1 + 1
- Locate 1 , 1
- Lcd Tone ; " "
- Locate 1 , 11
- Lcd Db
- Locate 2 , 1
- Lcd Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(1) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4)
- Locate 2 , Tmp_2
- If Tmp_2 = 8 Then
- Lcd Chr(3)
- Else
- Lcd Chr(2)
- End If
- End Sub
- Sub Bar_balans(byval Tone11 As String , Byval Tmp_11 As Byte)
- Local Help1 As Single
- Help1 = Tmp_11 / 5
- Cls
- Select Case Help1 'Tmp_11
- Case 0 : Db = "-100%"
- Case 1 : Db = "-94%"
- Case 2 : Db = "-88%"
- Case 3 : Db = "-82%"
- Case 4 : Db = "-76%"
- Case 5 : Db = "-64%"
- Case 6 : Db = "-58%"
- Case 7 : Db = "-50%"
- Case 8 : Db = "-42%"
- Case 9 : Db = "-38%"
- Case 10 : Db = "-32%"
- Case 11 : Db = "-26%"
- Case 12 : Db = "-18%"
- Case 13 : Db = "-10%"
- Case 14 : Db = "-0%"
- End Select
- Tmp_2 = Help1 + 1
- Locate 1 , 1
- Lcd Tone11 ; " " 'Tone11 to jest napis z bufora right,left
- Locate 1 , 12
- Lcd Db
- Locate 2 , 1
- Lcd Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4)
- Locate 2 , Tmp_2
- Lcd Chr(2)
- End Sub
- Sub Bar_vol(byval Vol_out As String , Byval Vol_val As Single , Byval Sel As Byte)
- Local Tt As Single
- Cls
- '--------------------------------------------------------------------------------------------------------------------------------------------------------------------
- If Vol_val = 0 Then
- Call Mute() 'moje mute
- end if
- '--------------------------------------------------------------------------------------------------------------------------------------------------------------------
- If Sel = 1 Then
- Tt = Vol_val / 3.0625
- Tmp_2 = Tt
- Locate 1 , 1
- Lcd Vol_out ; " " '; Tmpin
- Locate 1 , 11
- If Vol_val < 10 Then Lcd " "
- Lcd " -" ; Vol_val ; "db"
- End If
- If Sel = 2 Then
- Tmp_2 = Vol_val + 1
- Locate 1 , 1
- Lcd Vol_out
- Locate 1 , 11
- If Vol_val < 10 Then Lcd " "
- Lcd " " ; Vol_val ; "db"
- End If
- Locate 2 , 1
- Lcd Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4)
- Locate 2 , Tmp_2
- Lcd Chr(2)
- End Sub
- End
- Sub Mute()
- If Mute_func = 0 Then
- Mute_func = 1
- 'MUTE ON
- Register = &B00010110 'Speaker attenuate R + bus increment
- Value = &B01111000
- I2cstart
- If Err = 0 Then
- I2cwbyte Adres_tda7439 'Wyslij na adres TDA
- If Err = 0 Then
- I2cwbyte Register 'Speaker attenuate R + bus increment
- I2cwbyte Value 'Mute R ON
- I2cwbyte Value 'Mute L ON
- I2cstop
- End If
- End If
- cls
- locate 1,1
- lcd " M U T E "
- Else
- Mute_func = 0
- 'MUTE OFF
- Register = &B00010110 'Speaker attenuate R + bus increment
- Value = &B00000000
- I2cstart
- If Err = 0 Then
- I2cwbyte Adres_tda7439 'Wyslij na adres TDA
- If Err = 0 Then
- I2cwbyte Register 'Speaker attenuate R + bus increment
- I2cwbyte Value 'Mute R OFF
- I2cwbyte Value 'Mute L OFF
- I2cstop
- Call Volume()
- End If
- End If
- End If
- End Sub
- '-------------------------------------------------------------------------------
- Sub Displaytime()
- Locate 1 , 1
- If Hour < 10 Then Lcd "0" : Lcd Hour ; ":"
- If Minute < 10 Then Lcd "0" : Lcd Minute ; ":"
- If Second < 10 Then Lcd "0" : Lcd Second
- Lcd Spc(16) ' 16 spacji
- Locate 2 , 1
- Lcd Lookupstr(weekday , Weekdays) ; " "
- If Day < 10 Then Lcd "0" : Lcd Day ; "-"
- If Month < 10 Then Lcd "0" : Lcd Month ; "-" ; Year
- Lcd Spc(2) ' 2 spacji
- End Sub
- '-------------------------------------------------------------------
- Weekdays:
- Data "Nie" , "Pon" , "Wto" , "Sro" , "Czw" , "Pt " , "Sob"
- '-------------------------------------------------------------------
- Monthlengths:
- Data 0 , 31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31
- '-------------------------------------------------------------------
- Int0_isr:
- Disable Int0
- If Pind.3 = 0 Then
- Count = 0
- If Press_button = 1 Or Press_button = 2 Then
- Encoder_a = 1
- Encoder_b = 0
- Else
- Encoder_a = 0
- Encoder_b = 1
- End If
- Button = 0
- Held_var = 0
- Call Setting_function
- Call Change_settings
- Else
- Count = 0
- If Press_button = 1 Or Press_button = 2 Then
- Encoder_a = 0
- Encoder_b = 1
- Else
- Encoder_a = 1
- Encoder_b = 0
- End If
- Button = 0
- Held_var = 0
- Call Setting_function
- Call Change_settings
- End If
- Gifr = 64
- Enable Int0
- Return
- $include "PCF8583.bas"