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

Jak uruchomić OLED SSD1306 po wybudzeniu Atmega328p bez resetowania?

inspector_electro 27 Gru 2016 10:41 2520 15
REKLAMA
  • #1 16151838
    inspector_electro
    Poziom 22  
    Witam forumowiczów po świętach :).

    Składam zegarek oparty o Atmega328p i wyświetlacz oled na kontrolerze SSD1306.
    Mój problem polega na tym, że nie mogę sobie poradzić z całkowitym wyłączeniem
    wyświetlacza. Zasilanie wyświetlacza wziąłem z portu atmegi po to, aby atmęgą go wyłączać gdy procesor "idzie spać". Taki patent działa, ale po obudzeniu procesora trzeba resetować atmegę, żeby oled wystartował.
    Całość zasilana jest z ogniwa LI-ION 3,7V 120mAh. Gdy atmega jest w trybie power down, a oled wygaszony komendą CLS, wtedy prąd pobierany to około 660uA (mikro).
    Gdy odepnę oled i zostanie atmega z RTC DS1307( bo też jest), to pobór prądu spada do 136uA(mikro).
    Pytanie brzmi:
    Czy znacie jakiś sposób, aby oled wstał po obudzeniu atmegi?
    Może jest jakaś komenda resetująca magistralę i2C. Tak jak pisałem, oleda zasilam z portu atmegi, i po obudzeniu na jednym z portów mam stan wysoki dla oleda. Patent działa, ale trzeba resetować atmegę, a ja chcę aby oled startował razem z procesorem po jego obudzeniu.
    Może istnieje jakiś układ, który załączałby jednocześnie VCC, SCL i SDA oleda?
    Coś w rodzaju ULN2003?
    Macie jakieś pomysły?
    Pozdrawiam
  • REKLAMA
  • #2 16151855
    Sparrowhawk
    Poziom 22  
    A po obudzeniu, reinicjalizujesz ten wyświetlacz, czy od razu wysyłasz do niego dane do wyświetlenia?
    Cytat:
    Może jest jakaś komenda resetująca magistralę i2C
    A po co ją resetować? Skoro DS po wybudzeniu działa, to stan magistrali jest chyba w porządku.
  • #3 16151859
    inspector_electro
    Poziom 22  
    Chodzi mi o dwie rzeczy:
    Całkowite odcięcie oleda od zasilania po przejściu procesora w tryb powerdown, i o ponowną inicjalizację oleda. Może po restarcie i2c oled wstanie?... nie mogę tego ogarnąć.
    Problem w tym, że mój oled nie ma pinu RESET. To by chyba rozwiązało mój problem.
  • #4 16151894
    dasej
    Poziom 32  
    Witam.

    A próbowałeś tak ;
    - włączyć zasilanie I2C
    - inicjowanie I2C
    - włączyć zasilanie oleda
    - inicjowanie oleda.
  • #5 16151902
    inspector_electro
    Poziom 22  
    Nie rozumiem "włączyć zasilanie i2C". I2C działa gdy wstanie procesor.
    Próbowałem już podpinać VCC oleda po odpaleniu procesora, ale się nie inicjuje.
    Oled pozostaje ciemny. Dopiero po resecie proca dalej świeci.
    Program naskrobałem w bascom i dołączona jest biblioteka do tych oledów więc i2C działa z automatu.
  • REKLAMA
  • #6 16151926
    dasej
    Poziom 32  
    Nie znam bascoma ale w c robię tak.
    Operacja tuż po wybudzeniu.

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Dzięki temu uzyskałem pobór prądu 2uA.
  • REKLAMA
  • #7 16151938
    Konto nie istnieje
    Konto nie istnieje  
  • #8 16151951
    inspector_electro
    Poziom 22  
    Poradziłem sobie z oledem w ten sposób że, wywaliłem fabryczny obwód do resetu, i podpiąłem pin reset z paska oleda pod atmegę.
    Kondensator, rezystor i diodę. Podobnie zrobili tu:
    http://forum.atnel.pl/topic7982-90.html

    Teraz jest inny problem. Gdy szybko włączam i wyłączam procesor, tzn power down, to procek mi się zawiesza. Pokażę program.

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


    Procesor ma taktowanie 8MHz wewnętrznie. Ale im wyższe taktowanie, tym więcej prądu zeżre i musiałbym podpinać zewnętrzny kwarc.

    W tej chwili fusebit brown out jest ustawiony na 2.7V. czy mogę go ustawić na 1,8V?
  • #9 16152083
    dasej
    Poziom 32  
    Możesz dać fotkę o którym OLED mówisz dokładnie. Sprawdzę czy mam taki w zapasach i zerknę co można uzyskać.
  • #10 16152093
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #11 16152123
    inspector_electro
    Poziom 22  
    dasej Wyświetlacz ma wielkość 0,96" i 128x64.
    Dziwne ale w googlach nie znalazłem identycznego. Oto fotka:

    Jak uruchomić OLED SSD1306 po wybudzeniu Atmega328p bez resetowania?

    niveasoft Dzięki za spostrzeżenia. Mimo tego że tylko co nie co zrozumiałem
    z Twojej lekcji, to postaram się coś pozmieniać.

    Dodano po 48 [minuty]:

    niveasoft Zastosowałem się do zmiany w programie którą przedstawiłeś, i procesor nie reaguje na PIND.2. Nie wraca do wyświetlania czasu i nie włącza oleda. Próbuję dojść co jest nie tak.

    Dodano po 24 [minuty]:

    Zastosowałem się do Twojej procedury niveasoft. Po wywaleniu CLS, oled jest włączany i wyświetlany jest czas, ale czas stoi. Próba skierowania do odczytu i wyświetlenia czasu komendą getdatetime i displaytime, znów nie włącza oleda.
    I tu nie wiem co jest grane.
  • #12 16154030
    Konto nie istnieje
    Konto nie istnieje  
  • #13 16154042
    Konto nie istnieje
    Konto nie istnieje  
  • #14 16156113
    inspector_electro
    Poziom 22  
    Chwilę mnie nie było, a tu wrze :D

    Jeśli chodzi o wyświetlanie czasu po wybudzeniu procesora, to działa ta procedura od nieveasoft, którą przedstawił wcześniej. Co do samej biblioteki, to wolałem zastosować gotową. Po prostu jest mi wygodniej a to dla tego że nie jestem Bascom-owcem :). Włączanie i wyłączanie oleda jest opanowane.
    Teraz borykam się z PCINT, aby można było wybudzić M328p tymi samymi klawiszami co ustawia się zegar. Niestety jak zwykle nie mogę pojąć tych rejestrów. Nie wiem także, czy można tak skonfigurować przyciski, aby jeden obsługiwał dwie funkcje.
    Program chciałem oprzeć maksymalnie o obsługę 4 przyciskami. Ale gdyby się dało, nawet tymi trzema od ustawiania. Pracuję także nad auto wyłączaniem procka i oleda po upływie 5 sekund od puszczenia dowolnego przycisku. Dojdzie jeszcze odczyt z adc, no bo chciałbym wiedzieć ile zostało energii w akumulatorku.
    Jeśli wszystko się powiedzie, tylko nie wiem kiedy :), to upchnę to wszystko w małą "kopertę" jak zegarek na rękę. Jako ciekawostkę dodam, że zbudowałem ładowarkę indukcyjną, którą będzie ładowany akumulatorek. Odbiornik w trakcie składania. Układ ładowarki już mam i jest to MCP73831T SOT23-5.(odbiornik).
    Najbardziej ogranicza mnie program. Po prostu coś trochę kumam tego Bascoma, ale nie aż tak żeby lawirować jak np. niveasoft.
    Póki mam urlop, to coś będę jeszcze próbował z programem.
REKLAMA