Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 8 kwi 2025, o 22:56


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 
    Autor Wiadomość
    PostNapisane: 24 cze 2020, o 12:06 
    Offline
    Użytkownik

    Dołączył(a): 19 lut 2020
    Posty: 52
    Pomógł: 0

    Czołem!
    Od dłuższego czasu próbuję zlokalizować błąd, który powoduje problem z zapisem lub odczytem z zewnętrznego EEPROMu 24c512. Według noty pomieści on 512 stron o wielkości 128 bajtów. Moja funkcja do zapisu danych wygląda tak:
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Czyli jeden zapis to 8 bajtów. Na końcufunkcji "EEPROM_write_values()" jest delay 5ms. Do wgrywania czegoś w rodzaju ustawień fabrycznych używam if'ów w ten sposób:
    if ( cnt_2<40 ) {
    if ( cnt1==1) { cl_le_status=0; lo_hi_status=0; EEPROM_write_values(); cnt1=2; }
    if ( cnt1==2) { cl_le_status=0; lo_hi_status=1; EEPROM_write_values(); cnt1=3; }
    if ( cnt1==3) { cl_le_status=1; lo_hi_status=0; EEPROM_write_values(); cnt1=4; }
    if ( cnt1==4) { cl_le_status=1; lo_hi_status=1; EEPROM_write_values(); cnt2++; cnt1=1; }
    }

    Problem polega na tym, że cyklicznie w "tym samym" miejscu dane zapisują się lub odczytują inaczej niż mam wpisane. Problem dotyczy tylko bitów nr 4 i 5 czyli "values_buffer[4]" i "values_buffer[5]" i tylko jeśli wartość licznika cnt1=4 a cnt2 jest równe 8, 16, 24, 32 lub 40 (więcej nie używam). Myślę, że rozwiązałbym problem przesuwając dane w komórkach adresowych w tych miejscach, ale to zajęłoby trochę kodu.
    Może ktoś widzi gdzie leży problem i byłby w stanie nakierować?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 cze 2020, o 20:01 
    Offline
    Użytkownik

    Dołączył(a): 19 lut 2020
    Posty: 52
    Pomógł: 0

    Problem rozwiązany, można usunąć ;)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 cze 2020, o 21:14 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2013
    Posty: 2595
    Pomógł: 128

    Napisz jak-będzie dla potomnych.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 5 gości


    Nie możesz rozpoczynać nowych wątków
    Nie możesz odpowiadać w wątkach
    Nie możesz edytować swoich postów
    Nie możesz usuwać swoich postów
    Nie możesz dodawać załączników

    Szukaj:
    Skocz do:  
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO