ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
26 июня
59358 Топик полностью
AlexandrY (24.05.2006 14:12, просмотров: 1) ответил Vit2005 на LPC2138 и реализация 1-wire MicroLan
Прецизионную задержку можно сделать так. Определяем макрос US_DELAY, а саму функцию пишем на asm-е и помещаем в RAM по желанию запрещая прерывания на время выполнения функции. Хотя если думаете применять RTOS то так делать категрически нельзя. Можно использовать Capture/Compare модуль для аппаратного измерения и формирования задержек. <pre> #define SYS_CLK 60000000 #define US_DELAY(t) us_Delay(t*(SYS_CLK/10000000) - 1) /* ********************************************************************************************************* Задержка на (t+1)*10 тактов ********************************************************************************************************* */ #pragma arm void us_Delay(int t) { long r1; __asm { MOV r1,#0 B label1 label2: NOP NOP NOP NOP NOP ADD r1,r1,#1 label1: CMP r1,t BLT label2 NOP } } </pre>