Problem z zapisem do eeprom więcej niż 2 zmiennych
- niveasoft
- Posty: 1313
- Rejestracja: 17 sie 2015, 12:13
- Kontakt:
Re: Problem z zapisem do eeprom więcej niż 2 zmiennych
Tego się można było spodziewać. Miałeś przetestować ATU i ATO 
- niveasoft
- Posty: 1313
- Rejestracja: 17 sie 2015, 12:13
- Kontakt:
Re: Problem z zapisem do eeprom więcej niż 2 zmiennych
Przesadziłem ze skróceniem czasu który procek miał odczekać po zapisie do eeprom.
Było Waitms 10 a skróciłem do 3. Okazuje się że poprawnie zapisuje przy 5ms zwłoki.
Było Waitms 10 a skróciłem do 3. Okazuje się że poprawnie zapisuje przy 5ms zwłoki.
Code: [Zaznacz cały] [Rozwiń/Zwiń]
- Sub Write_eeprom(byval Adres As Byte , Byval Value As Byte)
- I2cstart
- I2cwbyte Addressw
- If Err = 1 Then Exit Sub
- I2cwbyte Adres
- I2cwbyte Value
- I2cstop
- Waitms 5 ' przy 3ms występuje problem z zapisem kolejnych bajtów
- End Sub
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
- Michał6201
- Posty: 165
- Rejestracja: 03 paź 2015, 20:07
Re: Problem z zapisem do eeprom więcej niż 2 zmiennych
Pięknie działa 
W życiu bym się nie spodziewał, że te 2ms naprawią ten problem.
W głównym pliku delikatne zmieniłem wysyłanie danych do smartfona, jak wcześniej już wspominałem, dostawałem odpowiedź zwrotną w postaci ATP=12-05-18.
Odpowiada za to ten fragment kodu: Helpstr = Command + "="
Ja zamieniłem go na:
Helpstr = " "
I teraz otrzymuję jako odpowiedź w aplikacji samą datę: 12-05-18. Oczywiście przetestuję, czy teraz nie powstają jakieś błędy, bo jeśli coś będzie krzaczyło, to powrócę do pierwotnego zapisu i razem z data będzie się wyświetlać komenda. W sumie nie przeszkadza mi to.
W życiu bym się nie spodziewał, że te 2ms naprawią ten problem.
W głównym pliku delikatne zmieniłem wysyłanie danych do smartfona, jak wcześniej już wspominałem, dostawałem odpowiedź zwrotną w postaci ATP=12-05-18.
Odpowiada za to ten fragment kodu: Helpstr = Command + "="
Ja zamieniłem go na:
Helpstr = " "
I teraz otrzymuję jako odpowiedź w aplikacji samą datę: 12-05-18. Oczywiście przetestuję, czy teraz nie powstają jakieś błędy, bo jeśli coś będzie krzaczyło, to powrócę do pierwotnego zapisu i razem z data będzie się wyświetlać komenda. W sumie nie przeszkadza mi to.
- niveasoft
- Posty: 1313
- Rejestracja: 17 sie 2015, 12:13
- Kontakt:
Re: Problem z zapisem do eeprom więcej niż 2 zmiennych
Nie lubię półśrodków. Jeśli można coś zabezpieczyć to to robię 
Kiedy testowałem kod to pół godziny zajęło mi znalezienie dlaczego nie odpowiada na komendy.
Okazało się że pin Motor musi być zwarty do masy bo inaczej urządzenie przechodzi do innego Suba i nie reaguje na komendy.
Dlatego w aplikacji na telefon dodałbym taki Timer który mierzy czas od wysłania komendy. Jeśli nie otrzyma potwierdzenia "OK" to powinien napisać "Moduł nie odpowiada. Sprawdź czy włączyłeś zapłon"
Implemantacja rozpoznania i wysyłania OK lub ERROR nie jest trudna.
Dzisiaj wyczyściłem Cache swojej przeglądarki i zauważyłem że kody nie zwijają się z powrotem. Popracuje się nad tym 
Dodałem tez nowy styl, taki bardziej kanciasty, który można wybrać w swoim profilu w ustawieniach witryny.
[EDIT] Ponowne zwijanie kodu naprawiłem
Jak komuś nie działa to trzeba wyczyścić Cache przeglądarki (ale wystarczy tylko "Obrazy i pliki zapisane... a reszte sobie zostawić żeby potem wszędzie nie musieć klikać zgody na ciasteczka
)
Kiedy testowałem kod to pół godziny zajęło mi znalezienie dlaczego nie odpowiada na komendy.
Okazało się że pin Motor musi być zwarty do masy bo inaczej urządzenie przechodzi do innego Suba i nie reaguje na komendy.
Dlatego w aplikacji na telefon dodałbym taki Timer który mierzy czas od wysłania komendy. Jeśli nie otrzyma potwierdzenia "OK" to powinien napisać "Moduł nie odpowiada. Sprawdź czy włączyłeś zapłon"
Implemantacja rozpoznania i wysyłania OK lub ERROR nie jest trudna.
Code: [Zaznacz cały] [Rozwiń/Zwiń]
- If Got_str = 1 Then
- Option = Find( "ATL")
- Select Case Option
- Case 1
- Call Get_three_values()
- If Stare_l <> One Then
- Stare_l = One
- L = One
- Call Write_eeprom(lampka , L)
- Got_str = 0 'warunki spełnione więc Okay!
- End If
- End Select
- Option = Find( "ATO")
- Select Case Option
- Case 1
- Call Get_three_values()
- Buff(1) = One
- Buff(2) = Two
- Buff(3) = Three
- Call Write_ee(olej)
- Got_str = 0 'warunki spełnione więc Okay!
- Case 2
- Call Read_ee(olej)
- Call Send_answear( "ATO")
- End Select
- Option = Find( "ATP")
- Select Case Option
- Case 1
- Call Get_three_values()
- Buff(1) = One
- Buff(2) = Two
- Buff(3) = Three
- Call Write_ee(przeglad)
- Got_str = 0 'warunki spełnione więc Okay!
- Case 2
- Call Read_ee(przeglad)
- Call Send_answear( "ATP")
- End Select
- Option = Find( "ATU")
- Select Case Option
- Case 1
- Call Get_three_values()
- Buff(1) = One
- Buff(2) = Two
- Buff(3) = Three
- Call Write_ee(polisa)
- Got_str = 0 'warunki spełnione więc Okay!
- Case 2
- Call Read_ee(polisa)
- Call Send_answear( "ATU")
- End Select
- Option = Find( "TIM")
- If Option = 1 Then
- Call Get_three_values()
- Hour = One
- Minute = Two
- Second = Three
- Blad = Pcf8583_storetime(second , Minute , Hour , Day , Month , Year)
- Got_str = 0 'warunki spełnione więc Okay!
- End If
- 'tutaj różnica
- If Got_str = 0 Then
- Print "OK" 'jeśli coś skasowało flagę wczesniej
- Else
- Print "ERROR" 'jeśli nic nie skasowało flagi to cos nie gra
- End If
- Got_str = 0 'zawsze kasuj
- Else
- Cmd_timeout = 3
- End If
Dodałem tez nowy styl, taki bardziej kanciasty, który można wybrać w swoim profilu w ustawieniach witryny.
[EDIT] Ponowne zwijanie kodu naprawiłem
