[an error occurred while processing this directive]
dsPIC30F2010 и I2C где я не прав?
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Шумный 20 января 2005 г. 17:11

Скажите, пожалуйста, где я не прав. Функция чтения данных из EEPOM 24FC512 "опускает" шину SCL и не поднимает, на чем собственно кночается все...
Вот исходник:
void ReadFromPZU()
{//Функция чтения ByteReadFromPZU из ПЗУ AdrPZU по адресу AdrInPZUH&AdrInPZUL
//Start condition
I2CCONbits.SEN = 1;
while(I2CCONbits.SEN);
//Send I2C address byte and wait till address is transmitted
I2CTRN = AdrPZU;
while(I2CSTATbits.TBF);
while(I2CSTATbits.ACKSTAT);
// Transmit EE ADDR High and wait till address is transmitted
I2CTRN = AdrInPZUH;
while(I2CSTATbits.TBF);
while(I2CSTATbits.ACKSTAT);
IdleI2C();
// Transmit EE ADDR Low and wait till address is transmitted
I2CTRN = AdrInPZUL;
while(I2CSTATbits.TBF);
while(I2CSTATbits.ACKSTAT);//Здесь повисает!!!!!!!!!!
IdleI2C();
//Start condition (Restart)
I2CCONbits.RSEN = 1;
while(I2CCONbits.RSEN);
//Send I2C address byte and Wait till address is transmitted
I2CTRN = AdrPZU|0x1;
while(I2CSTATbits.TBF);
while(I2CSTATbits.ACKSTAT);
// Read data
I2CCONbits.RCEN = 1;
while(I2CCONbits.RCEN);
while(!I2CSTATbits.RBF); //Здесь тоже закисает...
ByteReadFromPZU = I2CRCV;
//Stop I2C and wait till stop sequence is completed
I2CCONbits.ACKDT = 0; //NACK
I2CCONbits.ACKEN = 1; //NACK Send
while(I2CCONbits.ACKEN);
I2CCONbits.PEN = 1; //STOP
while(I2CCONbits.PEN);
}

Спасибо.

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru