logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Bascom - problem z drgającym tekstem przy warunku IF-ELSE dla ADC i ładowarki

inspector_electro 18 Kwi 2017 22:41 1662 23
REKLAMA
  • #1 16420900
    inspector_electro
    Poziom 22  
    Witam wszystkich.

    Borykam sie od paru godzin z funkcją ELSE.
    Otóż w programie, gdy ADC wykryje napięcie mniejsze od 3.35V, wtedy ma pojawić się tekst "naladuj" i ikonka pustej baterii. Po wykryciu podpiętej ładowarki ma się wyświetlać tekst
    "laduje" i ikonka baterii z piorunem. Próbuję na różne sposoby z funkcją ELSE i prawie jest ok. Prawie dla tego,
    że napis szybko się zmienia z "naladuj" na "laduje". (drży). Próbowałem z flagą, ale
    nie idzie. Dodam że jeśli napiszę źle składnię, procesor mi sie nie chce wybudzić po naciśnięciu przycisku, a jest ustawiony INT0 powerdown.

    Oto kawałek programu:

    Kod: VB.net
    Zaloguj się, aby zobaczyć kod


    W takiej konfiguracji jest ok, poza zmieniającym się szybko tekstem.
    Pomóżcie.
  • REKLAMA
  • #2 16420926
    Konto nie istnieje
    Konto nie istnieje  
  • #3 16420945
    inspector_electro
    Poziom 22  
    Nie nie to nie tak.
    To jest zegarek z oledem i atmega328. Po podłaczeniu ładowarki czyli "charge_detect alias pind.1" ten pin wykrywa stan wysoki z podpiętej ładowarki, ma się wyświetlić "laduje". Natomiast jeśli napięcie akumulatorka spadnie poniżej 3.35v(mierzy ADC) wtedy ma się wyświetlić "naładuj". W tej składni co podałem to działa ale zmieniają mi się szybko te napisy.

    Drugi przykład podałeś lepszy :). Tylko że przy naładowaniu akumulatora do 4,18v
    bo tak ładuje układ SMD MIcrochipa napis "naładowany" pozostanie na wyświetlaczu. Chyba żeby napisać obsługę wykrycia niskiego stanu i wtedy zresetować oleda?
  • #4 16420956
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #6 16420973
    Konto nie istnieje
    Konto nie istnieje  
  • Pomocny post
    #8 16420987
    Konto nie istnieje
    Konto nie istnieje  
  • #9 16420988
    inspector_electro
    Poziom 22  
    Przy kodzie który podałeś :

    Kod: VB.net
    Zaloguj się, aby zobaczyć kod


    Jest idealnie.

    Dodano po 3 [minuty]:

    Tak pamiętam jak mówiłeś. Ale ja nie uczyłem się BAscoma od podstaw. Znam go co nieco, i zazwyczaj zlepiam program z kilku kawałków. Aczkolwiek robię sam coraz więcej. Do AVR siadam jak mam czas, bo pracuję za granicą i tam nie mam jak.
    Póki co, bardzo ci dziękuję ZNOWU :) za pomoc" - napisanie.

    Apropos tego kodu, to czemu jest zły?
  • #10 16421417
    JacekCz
    Poziom 42  
    inspector_electro napisał:

    Jest idealnie.
    Dodano po 3 [minuty]:
    Tak pamiętam jak mówiłeś. Ale ja nie uczyłem się BAscoma od podstaw. Znam go co nieco, i zazwyczaj zlepiam program z kilku kawałków. Aczkolwiek robię sam coraz więcej. Do AVR siadam jak mam czas, bo pracuję za granicą i tam nie mam jak.
    Póki co, bardzo ci dziękuję ZNOWU :) za pomoc" - napisanie.

    Apropos tego kodu, to czemu jest zły?


    tak a propos uczenia się, ELSE nie jest funkcją
  • REKLAMA
  • #11 16421428
    inspector_electro
    Poziom 22  
    Tak wiem. Tak tylko napisałem.
    Ogólnie to za wcześnie się ucieszyłem. Na czas testów kodu od Niveasoft, miałem wyłączony ADC i wyświetlanie było ok. Po włączeniu z powrotem ADC, procesor nie chce się wybudzić. Znowu jestem w kropce. Siedzę nad tym i kombinuję.

    Tytuł już zmieniłem na DYREKTYWA :)
  • #12 16421459
    Konto nie istnieje
    Konto nie istnieje  
  • #13 16421473
    inspector_electro
    Poziom 22  
    Temat ostatecznie zmieniłem.

    Program działa, jeśli wywalę / "zaremuję" obsługę Wyświetlania baterii-nie napięcia. To jest dziwne, bo adc i reszta jest ok. Ale jek tylko dołożę obsługę wyświetlania ikonek IF-ELSE to procesor nie budzi się. Dodam że automatyczne wyłączanie zrealizowałem na transoptorze, bo inaczej miałem problemy z wybudzaniem.

    Program:

    Kod: VB.net
    Zaloguj się, aby zobaczyć kod
  • #14 16421667
    Konto nie istnieje
    Konto nie istnieje  
  • #15 16421810
    inspector_electro
    Poziom 22  
    Zegar mozna było wyłączyć i włączyć tylko raz. Później już nie reagował. Więc w kodzie powerdown dodałem tylko: LOCK = 1

    Kod: VB.net
    Zaloguj się, aby zobaczyć kod


    Po tym zabiegu włącza się i wyłącza za każdym razem. Był też problem z obsługą
    wyłączenia po określonych sekundach. Przeniosłem ją pod odczyt czasu, czyli :
    Call getdatetime: . Problemy które pozostały to:
    Wzrost poboru prądu o 200 mikroamper.
    Procesor nie wstaje po podpięciu zasilania, nic się nie wyświetla. Dopiero po resecie z Bascoma wstaje. Popróbuję jeszcze.
  • REKLAMA
  • #16 16421837
    Konto nie istnieje
    Konto nie istnieje  
  • #17 16421913
    inspector_electro
    Poziom 22  
    Wyłączenie adc pomogło ograniczyć prąd w trybie powerdown, ale:

    Procesor nie wstaje po podpięciu zasilania. Jeśli włączam zegarek przyciskiem i wyłączam, ADC pracuje. Jednak jeśli wyłączy się po określonej sekundzie, to po włączeniu go przyciskiem ADC nie pracuje.
    Nie mam do tego g.... już siły.

    Kod: VB.net
    Zaloguj się, aby zobaczyć kod



    Tutaj obsługa wyłacznia po określonej sekundzie. PORTD.4 zaświeca na chwilę diodę dransoptora, który oddziaływuje na switch wyłączający zegar.

    Kod: VB.net
    Zaloguj się, aby zobaczyć kod
  • #18 16421983
    Konto nie istnieje
    Konto nie istnieje  
  • #19 16423000
    inspector_electro
    Poziom 22  
    A więc tak.
    Procesor nie chce wstawać lub oled po podpięciu zasilania. Pomaga reset z basoma. Odliczanie nie działa bo auto wyłączenie następuje po około minucie.
    Pobór prądu po wyłączeniu znowu wzrósł do 690 mikro amper. A mój najlepszy wynik był 460 po wyłaczeniu. Dodanie Disable ADC po wyłączeniu INT0 nic nie daje,
    pobór prądu się nie zmienia. Nie rozumiem też konfiguracji detekcji ładowarki.

    Kod: VB.net
    Zaloguj się, aby zobaczyć kod


    Wiem że to portb.2 ale co dalej?
  • #20 16428239
    inspector_electro
    Poziom 22  
    Ogarnąłem PCINT2, ale dalej jest nie dobrze. Procesor nie chce wstawać lub oled po podpięciu zasilania. Pomaga reset z basoma. Odliczanie nie działa bo auto wyłączenie następuje po około minucie.
    Pobór prądu po wyłączeniu znowu wzrósł do 690 mikro amper.
  • #21 16428461
    Konto nie istnieje
    Konto nie istnieje  
  • #22 16429006
    inspector_electro
    Poziom 22  
    Sprawdzę to. A dla czego prąd przy uśpieniu jest znowu duży? Nie pomaga teraz wyłączenie adc. Próbowałem też wyłączenia przerwań, ale nic kurde nie pomaga na obniżenie poboru prądu po uśpieniu. Komenda odlicz była ustawiona na 5. Nie działało to. Gdy ustawię 50, wtedy działa 5 sekund i gaśnie czyli ok.
    No i w końcu, procesor startuje za każdym razem po podaniu zasilania, pod warunkiem że do flagi lock dodam 1.

    Kod: VB.net
    Zaloguj się, aby zobaczyć kod



    Wklejam cały kod:


    Kod: VB.net
    Zaloguj się, aby zobaczyć kod


    Dodano po 4 [minuty]:

    Aha. PCINT2 na razie zostawiłem, bo w zestawie testowym mam inny port do detekcji ładowarki.

    Dodano po 19 [godziny] 49 [minuty]:

    Są postępy :D Udało mi się zejść z poborem prądu do 430 mikro amper. Choć można pewnie jeszcase mniej. Pomogło powyłączanie niektórych portów:

    Kod: VB.net
    Zaloguj się, aby zobaczyć kod


    Nie mogę sobie tylko poradzić z wyświetlaniem statusu baterii, tzn. wyświetla ok. ale przy przejściu z baterii naładowanej na baterię "naładuj" to wraz ze skokiem odczytu ADC skacze mi napis i ikonka baterii. Nie mogę tego ustabilizować. Jeśli uda się to ogarnąć, to praktycznie byłby to ko niec projektu.
    Chyba że coś dołożę.

    Obsługa wyświetlania statusu baterii:


    Kod: VB.net
    Zaloguj się, aby zobaczyć kod




    Pokażę teraz zegarek który noszę już ze 2 miesiące i jest na starym, źle napisanym sofcie. Póki co testuję program w którym mi pomagasz Niveasoft, na innym zestawie, a docelowo dobry już program, wgram do gotowego zegarka.


    Bascom - problem z drgającym tekstem przy warunku IF-ELSE dla ADC i ładowarki Bascom - problem z drgającym tekstem przy warunku IF-ELSE dla ADC i ładowarki Bascom - problem z drgającym tekstem przy warunku IF-ELSE dla ADC i ładowarki Bascom - problem z drgającym tekstem przy warunku IF-ELSE dla ADC i ładowarki Bascom - problem z drgającym tekstem przy warunku IF-ELSE dla ADC i ładowarki
  • #23 16431042
    Konto nie istnieje
    Konto nie istnieje  
REKLAMA