реклама на сайте
подробности

 
 
> Зацикливание программы при формировании СТАРТ I2C
Yaumen
сообщение Aug 29 2013, 14:24
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 187
Регистрация: 22-06-05
Из: Минск, Беларусь
Пользователь №: 6 213



Все привет.
Сразу хочу предупредить, с PIC процессорами опыта маловато, возможно именно из-за этого возникла проблема.
Суть ее в следующем, написал код мастера шины I2C для процессора PIC16F1823, вот фрагмент, генерирующий СТАРТ:

Код
       ;//////////////////////////////////////////////////////////////
       ;// ПЕРЕДАЕМ ИМПУЛЬС СТАРТ
        BANKSEL SSP1CON2
        clrf    SSP1CON2
        bsf     SSP1CON2,SEN               ;ПЕРЕДАЕМ ИМПУЛЬС СТАРТА
       ;//////////////////////////////////////////////////////////////
       ;// ЖДЕМ ПЕРЕДАЧИ ИМПУЛЬСА СТАРТ
        BANKSEL PIR1
read_i2c_wait_start:
        BANKSEL PIR1
        btfss   PIR1,SSP1IF
        goto    read_i2c_wait_start
        bcf     PIR1,SSP1IF


Цикл read_i2c_wait_start становится бесконечным, т.е. почему-то флаг SSP1IF не устанавливается.
Не могу понять почему!

На всякий случай привожу фрагмент инициализации I2C
Код
        BANKSEL SSP1STAT
        clrf    SSP1STAT               ; HIGH SPEED MODE (400 kHz), SMBus disabled
        BANKSEL SSP1CON1
        movlw   (BIT(SSPEN) | BIT(SSPM3)); I2C MASTER ENABLED (CLOCK = FOSC / (4 * (SSP1ADD+1)))
        movwf   SSP1CON1
        BANKSEL SSP1CON2
        clrf    SSP1CON2
        BANKSEL SSP1CON3
        clrf    SSP1CON3
        BANKSEL SSP1MSK
        clrf    SSP1MSK
        BANKSEL SSP1ADD
        movlw   ClockValue             ;СКОРОСТЬ РАБОТЫ I2C
        movwf   SSP1ADD
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 16:47
Рейтинг@Mail.ru


Страница сгенерированна за 0.01966 секунд с 7
ELECTRONIX ©2004-2016