Люди, кто занимался cygnal-ом, подскажите про smbus? (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено Vlad77 23 октября 2003 г. 15:41

В примере an041.pdf написаны программы мастера и слева, там есть след строчки, прерывания от таймера 3:
void Timer3_ISR (void) interrupt 14
{
SMB0CN &= ~0x40; // Disable SMBus
SMB0CN |= 0x40; // Re-enable SMBus
TMR3CN &= ~0x80; // Clear Timer3 interrupt-pending flag
}

и тоже самое в обработчике прерывания от smbus
.
.
.
if (FAIL) // If the transfer failed,
{
SMB0CN &= ~0x40; // Reset communication
SMB0CN |= 0x40;
SMB_BUSY = 0; // Free SMBus
}
SI=0; // clear interrupt flag
}
В режиме мастера все работает вроде бы нормально, а вот когда 2-ой сигнал подключил как слейв, то он работает только когда отключены прерыавния от таймера3. Что за бит они инвертитуют в SMB0CN (TXMODE), если в даташит написано что он только для чтения? опечатка в программе? или так и должно быть. Может кто расскажет, если соеденял 2 сигнала по smbus, какие есть еще подводные камни? А то, пример то работает, но как то не очень я ему верю, да и тяжко отлаживать программы когда их 2-е, и не знаешь какая работает а какая нет.



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

Ответы



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

E-mail: info@telesys.ru