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

ATMEGA8 Bascom - Błąd odczytu minut i godzin z RTC PCF8563p po dodaniu funkcji

mleczarz 11 Lip 2014 08:45 1701 4
REKLAMA
  • #1 13786177
    mleczarz
    Poziom 15  
    Witam. Mam następujący problem: buduje sterownik w oparciu o RTC PCF8563p i uruchamiałem kod modułami. Najpierw napisałem procedurę odczytu z RTC
    Kod: text
    Zaloguj się, aby zobaczyć kod

    i test zegara przez 24 godziny działało. Dopisałem kolejne procedury pomiar ADC0, pseudo termostat, ustawianie czasu i jest klops bo nie działa odczyt minut ani godzin. Sekundy zmieniają się i tyle. Gdzie jest problem?
  • REKLAMA
  • #2 13786229
    Kuniarz
    Moderator Projektowanie
    mleczarz napisał:
    Gdzie jest problem?

    Najwyraźniej w pozostałej części programu, której... nie pokazałeś. Jak pomóc ? :P
    Pomogłem? Kup mi kawę.
  • REKLAMA
  • #3 13786841
    mleczarz
    Poziom 15  
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • Pomocny post
    #4 13788083
    Kuniarz
    Moderator Projektowanie
    Troszkę dziwnie wygląda ta pętla główna, ze zmienną "corobic" :) Mogłeś dać po prostu w do-loop wywołania kolejnych procedur i jedną pauzę np. 1 sek. Do tego w procedurze wyświetlania dajesz CLS - nie przeszkadza Ci miganie ?

    Spróbuj dodać na początku dyrektywy ustalające stos :
    $hwstack = 32
    $swstack = 32
    gdyż używasz GOSUB. Może pomyśl o procedurach wywoływanych przez CALL ?

    Dodano po 1 [sekundy]:

    Troszkę dziwnie wygląda ta pętla główna, ze zmienną "corobic" :) Mogłeś dać po prostu w do-loop wywołania kolejnych procedur i jedną pauzę np. 1 sek. Do tego w procedurze wyświetlania dajesz CLS - nie przeszkadza Ci miganie ?

    Spróbuj dodać na początku dyrektywy ustalające stos :
    $hwstack = 32
    $swstack = 32
    gdyż używasz GOSUB. Może pomyśl o procedurach wywoływanych przez CALL ?
    Pomogłem? Kup mi kawę.
  • #5 13794139
    mleczarz
    Poziom 15  
    Pozmieniałem sporo w programie. Zastosowałem się do sugestii skrócenia głównej pętli teraz praktycznie jest bardzo krótka a na końcu ma instrukcję waitms 400. Zauważyłem że program jest bardzo wrażliwy na długość głównej pętli gdy tylko znalazła się jedna linijka za dużo program odczytywał tylko wartość sekund z PCF8563P. Stosy ustawiłem na 128 a i to za mało przy długiej głównej pętli. Dodałem kilka zmiennych bitowych jako flagi i to pomogło. Wszystkie odczyty z podprogramach generują flagi i na tej podstawie ustawiają stany na portach wykonawczych.
REKLAMA