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

 
 
 
Reply to this topicStart new topic
> Зацикливание программы при формировании СТАРТ 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
ar__systems
сообщение Aug 30 2013, 02:36
Сообщение #2


self made
****

Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795




читайте внимательнее мануал, SSP1IF и не должен устанавливаться.
Go to the top of the page
 
+Quote Post
Yaumen
сообщение Aug 30 2013, 04:52
Сообщение #3


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

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



Цитата(ar__systems @ Aug 30 2013, 05:36) *
читайте внимательнее мануал, SSP1IF и не должен устанавливаться.


Я понимаю, что Вы скорее всего говорите об заметке 1 раздела "25.6 I2C MASTER MODE":
Цитата
When in Master mode, Start/Stop detection is masked and an interrupt is generated when the SEN/PEN bit is cleared and the generation is complete.


Но я руководствовался алгоритмом раздела "25.6.6.4 Typical Transmit Sequence":
Цитата
1. The user generates a Start condition by setting the SEN bit of the SSP1CON2 register.
2. SSP1IF is set by hardware on completion of the Start.
3. SSP1IF is cleared by software.
4. The MSSP1 module will wait the required start time before any other operation takes place.
...


Ну и чему верить? Где правда?
Go to the top of the page
 
+Quote Post
ar__systems
сообщение Aug 30 2013, 11:29
Сообщение #4


self made
****

Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795



Цитата(Yaumen @ Aug 29 2013, 23:52) *
Я понимаю, что Вы скорее всего говорите об заметке 1 раздела "25.6 I2C MASTER MODE":


Но я руководствовался алгоритмом раздела "25.6.6.4 Typical Transmit Sequence":


Ну и чему верить? Где правда?

Хм, да, забавно, а саму шину смотрели, старт там генерируется?
Go to the top of the page
 
+Quote Post
Yaumen
сообщение Aug 30 2013, 12:58
Сообщение #5


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

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



Цитата(ar__systems @ Aug 30 2013, 14:29) *
Хм, да, забавно, а саму шину смотрели, старт там генерируется?


Мда, нашел в чем была проблема, но никак на это не мог подумать.
Оказалось, что проблема была во внутренних подтягивающих резисторах, даже не смотря на то, что внешние резисторы имеются, внутренние отключать нельзя. Как только вернул в установки порта по умолчанию, все заработало как часы!!!
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 7th July 2025 - 03:55
Рейтинг@Mail.ru


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