Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.
  • #1
    514242
    Level 20  
    Witam
    problem polega na tym, że po podłączeniu zegara czasu rzeczywistego PCF8583 (schemat i program ze strony http://www.grifo.com/PRESS/BLT_APPL/uk_an5.htm)

    do attiny2313 układ nie działa. Znaczy dioda miga ale tylko gdy zakomentuje instrukcje settime i gettime. Gdy próbuje ustawić czas lub go odczytać ukłąd nie odpowiada.
    Proszę o sprawdzenie czy program jest poprawny.

    Program w załączniku.
  • #2
    514242
    Level 20  
    Po dodaniu rezystorów podciągających działa już wyświetlacz i dioda:) Jednak dalej układ nie odmierza czasu
  • #3
    zumek
    Level 39  
    514242 wrote:
    Po dodaniu rezystorów podciągających działa już wyświetlacz i dioda:) Jednak dalej układ nie odmierza czasu

    A co z ...
    
    Config Sda = ???
    Config Scl = ???

    Czy adres bazowy PCF-ka , to na pewno &HA0 :?:

    Piotrek
  • #4
    514242
    Level 20  
    Sda i Scl są skonfigurowane w kompilatorze (używam Bascom Avr). Adres się zgadza.
  • Helpful post
    #6
    zumek
    Level 39  
    514242 wrote:
    Sda i Scl są skonfigurowane w kompilatorze (używam Bascom Avr). Adres się zgadza.

    A sprawdziłeś czy Twój PCF odpowiada ACK , po wysłaniu jego adresu na magistralę :?:

    Piotrek
  • #7
    514242
    Level 20  
    M. S. wrote:

    No to podciągnij jeszcze linię Sda i Scl.


    No to właśnie było zrobione


    zumek wrote:
    A sprawdziłeś czy Twój PCF odpowiada ACK , po wysłaniu jego adresu na magistralę


    Napisz dokładniej o co chodzi bo nie jestem dobry w temacie

    Dodano po 1 [godziny] 38 [minuty]:

    Udało się to odpalić. Zegar już odlicza. Tylko jeszcze jest taki problem: co kilkanaście sekund jest przeskok o 6 sekund do przodu. Zastanawiam się na rolą kondensatora dołączonego między OSC1 a Vdd.

    Dodano po 11 [minuty]:

    Ehh to wszystko przez kod bcd. Już działa poprawnie.

    Dodano po 33 [minuty]:

    O ile odczyt czasu działa poprawnie to z ustawieniem czasu są problemy.
    Oto fragmenty kodu:
    deklaracja:
    Declare Sub Settime(byval S As Byte , Byval M As Byte , Byval H As Byte , Byval D As Byte , Byval Month As Byte)

    wywołanie:
    Call Settime(12 , 9 , 8 , 29 , 11)

    definicja:
    Sub Settime(s As Byte , M As Byte , H As Byte , D As Byte , Month As Byte)
    'values are stored as BCD values so convert the values first
    S = Makebcd(s) 'seconds
    M = Makebcd(m) 'minuts
    H = Makebcd(h) 'hours
    D = Makebcd(d) 'days
    Month = Makebcd(month) 'months

    I2cstart 'generate start
    I2cwbyte 160 'write address
    I2cwbyte 0 'select control register
    I2cwbyte 8 'set year and day bit for masking
    I2cstop 'generate stop
    I2cstart 'generate start
    I2cwbyte 160 'write mode
    I2cwbyte 2 'select seconds Register
    I2cwbyte S 'write seconds
    I2cwbyte M 'write minuts
    I2cwbyte H 'write hours
    I2cwbyte D 'write days
    I2cwbyte Month 'write months
    I2cstop
    End Sub

    a czas zaczyna odliczać od 00:00:27