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

PIC16F877A - Brak komunikacji I2C z PCF8583, kod w asemblerze

pawel_na_chwile 24 Mar 2015 16:27 1848 0
REKLAMA
  • #1 14557546
    pawel_na_chwile
    Poziom 11  
    Posty: 80
    Ocena: 3
    Wiem że na forum, jest mnóstwo podobnych tematów, gdyż wiele przeczytałem, jednak żaden nie rozwiązuje mojego problemu, proszę więc nie kasować tematu, i jeżeli ktoś może to niech pomoże :-)
    Problem jest następujący, przejrzałem mnóstwo podobnych tematów, na forum i korzystając z google, kod poniżej to przepisany kod z innego programu z pewnej strony który ponoć działał, jednak nadal nie mam komunikacji mikrokontrolera z PCF8583, kod poniżej, proszę może ktoś dostrzega błąd ja nie umiem znaleźć, dodam że kod koniecznie w asemblerze

    ;-------------------------------------------------------------------------
    ;KONFIGURACJA I2C
    ;-------------------------------------------------------------------------

    MOVLW 0X28 ;SŁOWO KONFIGURACYJNE DO I2C
    MOVWF SSPCON
    BANK1
    MOVLW 0X09
    MOVWF SSPADD ;CZĘSTOTLIWOŚĆ TRANSMISJI DLA KWARCU 4MHz
    MOVLW 0X00
    MOVWF SSPSTAT
    BANK0

    ;-------------------------------------------------------------------------
    ;KONFIGURACJA REJESTRU KONTROLNEGO W PCF8583
    ;-------------------------------------------------------------------------

    CALL I2C ;URUCHOM MODUŁ KOMUNIKACJI PO I2C
    CALL I2C_ON ;WŁĄCZ TRANSMISJĘ PO I2C
    MOVLW 0XA0 ;ADRES UKŁADU PCF8583
    CALL I2C_TX ;WYŚLIJ ADRES URZĄDZENIA
    MOVLW 0X00 ;ADRES KOMÓRKI DO KTÓREJ PRZESYTŁAMY DANE
    CALL I2C_TX ;WYŚLIJ ADRES KOMÓRKI
    MOVLW 0X00 ;WARTOŚĆ KONFIGURACYJNA
    CALL I2C_TX ;WYŚLIJ SŁOWO KONFIGURACYJNE
    CALL I2C_OFF ;WYŁĄCZ TRANSMISJĘ PO I2C
    .
    .
    .
    ;************************************************************************
    ;************************************************************************
    ;------------------------------------------------------------------------------
    ;ODCZYT Z PCF8583
    ;------------------------------------------------------------------------------

    CALL I2C
    CALL I2C_ON
    MOVLW 0XA0 ;ADERS ZEGARA
    CALL I2C_TX ;WYSLIJ ADRES
    MOVLW 0X04 ;ADRES KOMÓRKI
    CALL I2C_TX ;WYSYŁANIE ADRESU KOMÓRKI
    CALL I2C_OFF ;BIT STOPU
    MOVLW 0XA1 ;ADRES Z BITEM ODCZYTU
    CALL I2C_TX ;WYŚLIJ ADRES Z BITEM ODCZYTU
    CALL I2C_RX ;ODCZYT DANEJ Z WCZĘSNIEJ PODANEGO ADRESU KOMÓRKI PAMIĘCI
    MOVWF SSPBUF ;ODCZYTANA WARTOŚĆ DO W
    MOVWF GODZINY ;PRZESŁANIE ODCZYTANEJ WARTOŚCI DO REJESTRU GODZINY

    CALL I2C
    CALL I2C_ON
    MOVLW 0XA0 ;ADERS ZEGARA
    CALL I2C_TX ;WYSLIJ ADRES
    MOVLW 0X03 ;ADRES KOMÓRKI
    CALL I2C_TX ;WYSYŁANIE ADRESU KOMÓRKI
    CALL I2C_OFF ;BIT STOPU
    MOVLW 0XA1 ;ADRES Z BITEM ODCZYTU
    CALL I2C_TX ;WYŚLIJ ADRES Z BITEM ODCZYTU
    CALL I2C_RX ;ODCZYT DANEJ Z WCZĘSNIEJ PODANEGO ADRESU KOMÓRKI PAMIĘCI
    MOVWF SSPBUF ;ODCZYTANA WARTOŚĆ DO W
    MOVWF MINUTY ;PRZESŁANIE ODCZYTANEJ WARTOŚCI DO REJESTRU MINUTY

    CALL I2C
    CALL I2C_ON
    MOVLW 0XA0 ;ADERS ZEGARA
    CALL I2C_TX ;WYSLIJ ADRES
    MOVLW 0X02 ;ADRES KOMÓRKI
    CALL I2C_TX ;WYSYŁANIE ADRESU KOMÓRKI
    CALL I2C_OFF ;BIT STOPU
    MOVLW 0XA1 ;ADRES Z BITEM ODCZYTU
    CALL I2C_TX ;WYŚLIJ ADRES Z BITEM ODCZYTU
    CALL I2C_RX ;ODCZYT DANEJ Z WCZĘSNIEJ PODANEGO ADRESU KOMÓRKI PAMIĘCI
    MOVWF SSPBUF ;ODCZYTANA WARTOŚĆ DO W
    MOVWF SEKUNDY ;PRZESŁANIE ODCZYTANEJ WARTOŚCI DO REJESTRU MINUTY
    ;----------------------PROCEDURA KOMUNIKACJI I2C-------------------------
    ;************************************************************************
    ;************************************************************************
    I2C
    BSF SSPCON, SSPEN ;UAKTYWNIENIE MODUŁU I2C
    RETURN

    I2C_ON
    BCF PIR1, SSPIF ;ZERUJ FLAGĘ
    BANK1
    BSF SSPCON2, SEN ;ODBLOKOWANIE STARTU NA SDA I SCL
    BANK1
    GOTO I2C_CZEKAJ

    I2C_TX ;WYSYŁANIE DANYCH PO UPRZEDNIM ZAŁADOWANIU DO W
    MOVWF SSPBUF ;WARTOŚĆ DO WYSŁANIA
    GOTO I2C_CZEKAJ

    I2C_RX ;ODBIÓR DANYCH
    BANK1
    BSF SSPCON2, RCEN ;ODBLOKOWANIE ODBIORU DANYCH
    BANK0
    GOTO I2C_CZEKAJ

    I2C_OFF ;KONIEC TRANSMISJI
    BANK1
    BSF SSPCON2, PEN
    BANK0


    I2C_CZEKAJ ;CZEKANIE NA USTAWIENIE FLAGI
    BTFSS PIR1, SSPIF ;SPAWDZANIE BITU PRZERWANIA PO NADANIU LUB ODBIORZE BAJTU
    GOTO I2C_CZEKAJ
    BCF PIR1, SSPIF
    RETURN
  • REKLAMA
REKLAMA