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] ds1307 - zmiana wartosci klawiszami

janoda 09 Sty 2012 14:30 2386 6
REKLAMA
  • #1 10371797
    janoda
    Poziom 10  
    Witam!

    Próbuję uruchomić program, który umożliwiałby mi klawiszowe ustawienie np. minut. Na razie mam tyle, ale program nie chce działać.

    Kod: text
    Zaloguj się, aby zobaczyć kod



    Proszę o pomoc!

    Z góry dziękuję.
  • REKLAMA
  • #2 10372049
    FastProject
    Poziom 28  
    Po pierwsze nie S1 Alias Portb.4 a S1 Alias PINB.4
    Po drugie, gdzie ustawiasz pin b.4 jako wejście?

    A gdzie masz powrót (Return) z podprogramu Ustaw_min:?

    A po naciśnięciu przycisku w ogóle program wchodzi to tej procedury nastawy minut? Masz waitms 1000 więc musisz naciskać co najmniej 1s.
  • REKLAMA
  • #3 10372072
    janoda
    Poziom 10  
    Przegapiłem:), ale pomimo dodania return też nie działa.

    EDIT:
    Przegapiłem takie oczywiste rzeczy:)) Dzięki za podpowiedź. Poprawię program i dam znać czy działa.

    Pozdrawiam!

    Proszę nie pisać postu "pod" postem, tylko użyć przycisku "zmień".
    Scaliłem 2 wiadomości.
    [zumek]
  • #4 10385501
    janoda
    Poziom 10  
    Witam ponownie!

    Otóż zmodyfikowałem program i teraz wygląda tak...

    Kod: text
    Zaloguj się, aby zobaczyć kod



    ...ale po podłączeniu zasilania zegar pokazuje czas, po czym mniej więcej po 5 sekundach zatrzymuje się, nie wspominając o tym, że Atmega nie reaguje na przycisk S1.

    Czy ktoś miał podobny przypadek? Coś w dalszym ciągu robię nie tak. Rezonator 8MHz mam podłączony na płytce prototypowej bardzo blisko atmegi, a fusebity ustawione są na zewnętrzny rezonator 3-16 MHz. Bez dyrektywy
    Debounce S1 , 0 , Ustaw_min
    zegar odmierza czas bez problemu.
  • REKLAMA
  • #5 10385615
    sp3ots
    Poziom 38  
    Witam !
    Usuń środkową linię z tego fragmentu kodu:
    
    S1 Alias Pinb.4
    Portb.4 = 0
    Set S1
    albo napisz tak:
    S1 Alias Pinb.4
    Portb.4 = 1
    

    W tym fragmencie kodu:
    
    Ustaw_min:
    Minuta = Makebcd(_min)
    Incr Minuta
    If Minuta > 59 Then
    Minuta = 0
    End If
    Call Settime
    Return 
    

    dodałbym opóźnienie po tej linii:
    Incr Minuta
    Dołącz schemat albo opisz do czego zwierasz S1 ?
    Pozdrawiam. Stefan
  • #6 10423345
    janoda
    Poziom 10  
    Witam ponownie!

    Przepraszam, że od razu nie odpowiedziałem, ale musiałem sprawić sobie nową atmegę, ponieważ poprzednią sobie nie chcący usmażyłem:)) A więc kierując się wskazówkami sp3ots'a, przedstawiam swój kod. Wspomnę, że kod działa prawie poprawnie (po przyciśnięciu przycisku minuty zwiększają się o jeden) z tym, że po wartości minut 10 pokazują się wartości 17, potem 24, następnie 37 i 56. Dodam, że przycisk zwieram do masy.

    Kod: text
    Zaloguj się, aby zobaczyć kod


    Jakieś sugestie?

    Pozdrawiam!
  • REKLAMA
  • #7 10446007
    janoda
    Poziom 10  
    Witam ponownie!

    Już sobie poradziłem z ustawieniem czasu. Brakowało paru linijek w kodzie.

    Pozdrawiam!
REKLAMA