Driver Flagiusza (programowalny) - nowa odsłona
powitania ;)
Bardzo fajny projekt, ciekawostka: kiedyś testowałem eeprom w ATmega8, średnio do pierwszego błędu wyszło 4537000 zapisów (tej samej komórki).
Do wydłużenia żywotności używałem dwóch buforów cyklicznych, jeden na wskaźnik, drugi na daną (o takiej samej długości, wskaźnik ostatnio zapisanej komórki z oczywistych względów nie mógł być zapisywany ciągle w tym samym miejscu).
Bardzo fajny projekt, ciekawostka: kiedyś testowałem eeprom w ATmega8, średnio do pierwszego błędu wyszło 4537000 zapisów (tej samej komórki).
Do wydłużenia żywotności używałem dwóch buforów cyklicznych, jeden na wskaźnik, drugi na daną (o takiej samej długości, wskaźnik ostatnio zapisanej komórki z oczywistych względów nie mógł być zapisywany ciągle w tym samym miejscu).
No to ładnie - to będzie jakieś 45x więcej niż gwarantuje producent.hEx pisze:powitania
Bardzo fajny projekt, ciekawostka: kiedyś testowałem eeprom w ATmega8, średnio do pierwszego błędu wyszło 4537000 zapisów.
Zakładam, że leciałeś licznikiem w kółko w pełnym zakresie od 0-0xff.
Ja minimalizuję zerowanie bitów, negując (do postaci logicznie komplementarnej) wszystkie zapisywane fizycznie do pamięci wartość i odwracam je tuż po odczycie. A więc tam, gdzie operuję na prostych wartościach 0,1,2,3... nie zużywam niepotrzebnie pamięci na ff-owanie i zaraz po tym ponowne zerowanie bitów, co jeszcze bardziej powinno zwiększyć jej długie i bezawaryjne życie.
Ja swoje rozpraszanie zrobiłem podobnie, tylko że moja przestrzeń wskaźników jest stosunkowo mała (silnie agreguje różne dane na pojedynczych bajtach) i mam dodatkową kopię przestrzeni wskaźników, gdyż uznałem, że one także pomimo setek tysięcy/milionów rzadziej występujących zmian także powinny być redundantne i zabezpieczone. Reszta pamięci to liniowa dużą przestrzeń, w którą dynamicznie mapuję docelowe wartości.hEx pisze:Do rozłożenia używałem dwóch buforów cyklicznych, jeden na wskaźnik, drugi na daną (o takiej samej długości, wskaźnik ostatnio zapisanej komórki z oczywistych względów nie mógł być zapisywany ciągle w tym samym miejscu).
Każdy zapis weryfikowany jest odczytem i jeżeli odczytam co innego niż zapisałem (błąd), to posługując się algorytmem obliczenia "najdalszego" wskaźnika +1 określam nowy adres danej komórki modyfikując dany wskaźnik.
Obszar wskaźników zmieniany jest tylko przy relokacjach danych - a więc zmienia się on tylko, gdy nie uda się weryfikacja odczytu zapisanej danej, a więc nastąpi jej relokacja.
Dodam, że zapasowy bufor na wskaźniki nie jest równolegle zapisywany wraz z buforem głównym, ale wykorzystywany tylko i wyłącznie dla wskaźnika, którego komórka bazowa uległa uszkodzeniu - wówczas następuje przeniesienie tego konkretnego wskaźnika i dalsze jego zapisy idą wyłącznie na bufor drugi (na kopię). W ten sposób także i wszystkie wskaźniki mają swoje "zapasowe" kopie.
Flagiusz
Tak, choć na początku nie było to takie oczywiste - w pierwszej wersji zapisywałem ciągle tą samą liczbę, gdzieś w okolicach 10mln zorientowałem się że coś nie gra (mimo że wartość zapisana była równa odczytanej). Okazało się że ona mi tam zamarzła na stałe, z eeproma zrobił się prom ;).df pisze: Zakładam, że leciałeś licznikiem w kółko w pełnym zakresie od 0-0xff.
Każdy sposób spełniający zadanie jest dobry.
- Calineczka
- Posty: 7578
- Rejestracja: niedziela 11 lis 2007, 20:19
- Lokalizacja: Wejherowo
- Kontakt:
df pisze: ......
W ten sposób możliwe będzie softwarowe ustawianie następujących parametrów:
1. dostępność trybu strobe-rowerowy (tak=będzie/nie=nie będzie)
2. opcja pomiaru i kontroli stanu napięcia baterii (tak=włączona/nie=wyłączona)
3. pamięć ostatniego trybu (tak=włączona/nie=wyłączona)
4. opcja konfiguracji jasności dostępna po 3-kliku (tak=włączona/nie=wyłączona)
Każda z opcji wyboru przebiega w następujący sposób:
- przez 2 pierwsze sek. sterownik oczekuje ze zgaszoną diodę - kliknięcie w tym czasie anuluje zmianę danego parametru i powoduje przejście do kolejnego z zachowaniem jego aktualnej wartości
- następnie sterownik zapali diodę z jasnością średnią (tak) i co 2 sekundy będzie zmieniał jej jasność na niską (nie) i spowrotem - pojedyncze kliknięcie w danym stanie oznacza dokonanie wyboru danej opcji i przejście do kolejnego parametru
- brak dokonania wyboru dowolnej z opcji w czasie 10 sek. spowoduje wyjście z trybu konfiguracji bez dokonywania zmian.
Wersja 2.1 przechodzi aktualnie testy.
mam, mam właśnie przechodzi
Pierwsze wrażenia bardzo pozytywne, jak się do dwukliku człowiek przyzwyczai to nawet chyba jest lepszy od jednokliku...oswajam się...
Będę miał jakieś wnioski to się pochwalę
Idę klikać
ano ja od dawna ćwiczę inne wersje, ale jednak dwuklik
na razie jest ok, musze ogniwo wyładować celem obaczenia bajerków, hmm, ale coś z uwag wymyślę, żeby nie było, że nie klikałem
edi
us wiem
wchodzimy do programowania jasności i se mryga 2 razy po 2 mrugnięcia i dopiero potem zmiania, ale w sumie jak się wie, to nie jest to złe, kurczę ide dalej klikać forwardem
na razie jest ok, musze ogniwo wyładować celem obaczenia bajerków, hmm, ale coś z uwag wymyślę, żeby nie było, że nie klikałem
edi
us wiem
wchodzimy do programowania jasności i se mryga 2 razy po 2 mrugnięcia i dopiero potem zmiania, ale w sumie jak się wie, to nie jest to złe, kurczę ide dalej klikać forwardem
Też klikam, popieram że dwuklik jest ok. Co do informowania o słabym zasilaniu wolałbym rozwiązanie bez ciągłego mrugania. Kilka mrugnięć informujących mnie że czas oszczędzać to co jeszcze zostało w aku lub zmienić go na nowy, z pewnością mi wystarczy. Mógłby się powtarzać przy ponownym włączeniu latarki. Mrugacz co 8 sek trochę denerwuje. Wolałbym zejść na niższy tryb i świecić mniejszą mocą do nowej granicy gdzie latarka mnie poinformuje że trzeba zejść na jeszcze niższy tryb. Później odcięcie zasilania.
Oczywiście doceniam pracę DFa nad projektem i wciąż jestem podekscytowany posiadaniem takiego drivera Chciałem tylko napisać co może być zmienione.
Oczywiście doceniam pracę DFa nad projektem i wciąż jestem podekscytowany posiadaniem takiego drivera Chciałem tylko napisać co może być zmienione.
... i wszystko jasne
U mnie tez wczoraj wyladowal paczek z wersja 1A i 1,4A. Narazie testowalem 1,4A i jest fajnie. Troche musialem sie przyzwyczaic do UI i jeszcze chyba musze sie pobawic z klikiem, bo na dwuklik trzeba go miec bardziej czuly.
Bardzo mi sie podoba moon mode, ciekawy jestem, jak dlugo potrafi zaswecic na takim trybie
Bardzo mi sie podoba moon mode, ciekawy jestem, jak dlugo potrafi zaswecic na takim trybie
- Calineczka
- Posty: 7578
- Rejestracja: niedziela 11 lis 2007, 20:19
- Lokalizacja: Wejherowo
- Kontakt:
- Calineczka
- Posty: 7578
- Rejestracja: niedziela 11 lis 2007, 20:19
- Lokalizacja: Wejherowo
- Kontakt:
no to mam problem
testuję najnowszą wersję...i
Chciałem go wsadzić do H3-ki, własnie teraz....ale BARDZO przydało by się by mikroswitchem DAŁO SIĘ CAŁKOWICIE kontrolować driverek. Albo nie wiem jak, albo nie mogę go wyłączyć switchem, jedynie odcinając zasilanie. A bardzo przydała by się taka funkcja-np. dłuższe przytrzymanie switcha i driverek robi off. Darku, co Ty na to???
Mimo wszystkow sadziłem go do H3. Po to, by klikać. Nie wiem, czy zrobiłem coś nie tak, czy coś źle zaprogramowałem, ale od tego klikania zrobiło mi się tak, ze mam 3 tryby, z czego 1 i 2 zawsze mają taka samą jasność. Bez względu na to, czy programuję jasnośc na 1wszym czy na 2gim-ustawiam ja dla obu-na identyczną. Na 3cim mogę miec tylko najniższy. Jak wchodze w procedurę reg. jasności....zatwierdzam jasnośc to po wyjściu od razu mam następny tryb(strobo)
Kolejna ciekawostka...pamiętacie, jak niektórym gasły LED-y gdy w najniższym trybie poświeciło się na soczewkę? No to mam to samo Myslałęm, w czasie zabawy w programowanie, że mi coś nie styka, a tu led pod lampkę biurkową-gaśnie, oddala-robi się jasniejszy Aha, po tym jak zepsułem te regulacje jasności to próbowałem też regulowac ją przez odłączanie zasilania-efekt ten sam.
testuję najnowszą wersję...i
Chciałem go wsadzić do H3-ki, własnie teraz....ale BARDZO przydało by się by mikroswitchem DAŁO SIĘ CAŁKOWICIE kontrolować driverek. Albo nie wiem jak, albo nie mogę go wyłączyć switchem, jedynie odcinając zasilanie. A bardzo przydała by się taka funkcja-np. dłuższe przytrzymanie switcha i driverek robi off. Darku, co Ty na to???
Mimo wszystkow sadziłem go do H3. Po to, by klikać. Nie wiem, czy zrobiłem coś nie tak, czy coś źle zaprogramowałem, ale od tego klikania zrobiło mi się tak, ze mam 3 tryby, z czego 1 i 2 zawsze mają taka samą jasność. Bez względu na to, czy programuję jasnośc na 1wszym czy na 2gim-ustawiam ja dla obu-na identyczną. Na 3cim mogę miec tylko najniższy. Jak wchodze w procedurę reg. jasności....zatwierdzam jasnośc to po wyjściu od razu mam następny tryb(strobo)
Kolejna ciekawostka...pamiętacie, jak niektórym gasły LED-y gdy w najniższym trybie poświeciło się na soczewkę? No to mam to samo Myslałęm, w czasie zabawy w programowanie, że mi coś nie styka, a tu led pod lampkę biurkową-gaśnie, oddala-robi się jasniejszy Aha, po tym jak zepsułem te regulacje jasności to próbowałem też regulowac ją przez odłączanie zasilania-efekt ten sam.
No i ja tez mam cos ciekawego. Mam wersje 1,4A i dzis mialem okazje zrobic pomiary na zrodle napiecia stabilizowanego z ragulacja. Testowalem XPG-R5. Prad trzymal sie na 1,46A od 6 do 4,2V i raptem zaczal spadac. Przy 4,0V bylo 1,1A i przy 3,7V mialem juz tylko 0,82A.
Czyzby takie wysokie Vf LEDa??? Jutro bede madrzejszy, zrobie taki sam pomiar dla samego LEDa.
Zrobilem taki sam pomiar do wersji 1A z XP-E Q3 i 1A trzymal sie praktycznie do 3,6V.
Mam 2 pytania:
1. Czy moze byc jakis problem w regulacji? To chyba nie sprawa programu, tak?
2. Moge podlaczyc zasilanie LEDa bezposrednio na stykach PCB i zarowno miec podlaczonego driverka? Bo nie chce mi sie odlutowac druciki (styki musze miec plaskie), ale nie chce uszkodzic driwera.
Czyzby takie wysokie Vf LEDa??? Jutro bede madrzejszy, zrobie taki sam pomiar dla samego LEDa.
Zrobilem taki sam pomiar do wersji 1A z XP-E Q3 i 1A trzymal sie praktycznie do 3,6V.
Mam 2 pytania:
1. Czy moze byc jakis problem w regulacji? To chyba nie sprawa programu, tak?
2. Moge podlaczyc zasilanie LEDa bezposrednio na stykach PCB i zarowno miec podlaczonego driverka? Bo nie chce mi sie odlutowac druciki (styki musze miec plaskie), ale nie chce uszkodzic driwera.