[an error occurred while processing this directive]
Ответ: Пишу......
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)
|
|
Описывать не буду - приведу исходник
I2CCONbits.SEN = 1;//Условие старт
while(I2CCONbits.SEN);//Ожидание выполнения условия Старт
I2CTRN = AdrPZU; //Отслыка контр. байта
while(I2CSTATbits.TBF);//Ожидание отсылки контр. байта
while(I2CSTATbits.ACKSTAT);//Ожидание ACK
I2CTRN = AdrInPZUH; //Отслыка старшего байта адреса
while(I2CSTATbits.TBF);//Ожидание отсылки старшего байта адреса
while(I2CSTATbits.ACKSTAT);//Ожидание ACK
I2CTRN = AdrInPZUL; //Отслыка младшего байта адреса
while(I2CSTATbits.TBF); //Ожидание отсылки старшего байта адреса
while(I2CSTATbits.ACKSTAT); //Ожидание ACK
I2CCONbits.RSEN = 1; //Рестарт
while(I2CCONbits.RSEN); //Ожидание выполнения "Рестарт"
I2CTRN = AdrPZU|0x1;//Чтение
while(I2CSTATbits.TBF);//Ожидание отсылки младшего байта адреса
while(I2CSTATbits.ACKSTAT); //Ожидание ACK
I2CCONbits.RCEN = 1; //Разрешение котроллеру читать данные
while(I2CCONbits.RCEN); //Ожиданеи окончания чтения
while(!I2CSTATbits.RBF);//Здесь закисает. Контроллер ждет заполнения буфера приема...
ByteReadFromPZU = I2CRCV; //Чтение буфера приема
I2CCONbits.ACKDT = 0; //NACK
I2CCONbits.ACKEN = 1; //NACK Send
while(I2CCONbits.ACKEN); //Ожидание окончания отсылки NACK
I2CCONbits.PEN = 1; //STOP
while(I2CCONbits.PEN); //Ожидание выполнения условия Стоп
Составить ответ
|||
Конференция
|||
Архив
Ответы
- Ответ: Зачем ты в процедуре чтения отсылаешь адрес. Он у тебя уже установлен. Нужно посылать контрольный и читать. — Serg__ (21.01.2005 12:59, пустое)
- Ответ: — Шумный (21.01.2005 13:05, 112 байт)
- Ответ: — Serg__ (21.01.2005 13:13, 162 байт)
- Ответ: Прошу прощения, там опечаточка в комментариях, но суть от этого не меняется... — Шумный (21.01.2005 13:19, пустое)
- Ответ: — Шумный (21.01.2005 13:16, 153 байт)
- Ответ: Тады попробуй вместо рестарта сделать СТОП и СТАРТ. — Serg__ (21.01.2005 13:20, пустое)
- Ответ: Попробую..... А помогает такое? Не сбросится ли ЕЕПРОМ? — Шумный (21.01.2005 13:27, пустое)
- Ответ: Если питание не выключишь-не сброситься;-). Адрес фиксируется и дальше после чтения делает +1. — Serg__ (21.01.2005 13:33, пустое)
- Ответ: Шина падать перестала. Спасибо. — Шумный (21.01.2005 14:07, пустое)
- Ответ: Спасибо. Шина падать перстала, точнее встает на место даже после операции чтения. Только данные все равно пока не читаются, но это уже дальше надо разбираться. Спасибо. — Шумный (21.01.2005 14:05, пустое)
- Ответ: А ты шину часом не разогнал больше нормы. Там на устаканивание адреса и запись данных нужно паузу сделать. Операция записи дольше делается, чем чтение — Serg__ (21.01.2005 14:23, 70 байт)
- Ответ: А ты сделай так: Start,Control,adr,stop,start,contr,data_write,stop,start,contr,data_read.....или попробуй паузу воткнуть. — Serg__ (21.01.2005 15:07, пустое)
- Ответ: — Шумный (21.01.2005 14:53, 145 байт)
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание
|||
Без кадра
E-mail:
info@telesys.ru