+megaOlega Опубликовано 15 августа, 2016 Поделиться Опубликовано 15 августа, 2016 прошу пардон, если вопрос не умный, чет не могу понять... (кусок взят из <93с66.blr>) #define SK_H PORTE |= 2 #define SK_L PORTE &= 2^255 #define DI_H PORTE |= 4 #define DI_L PORTE &= 4^255 ........... Proc ShiftOutWord(value) { var Counter; Counter = 16; for(Counter = 0; counter < 16; counter++) { if(Value & 0x8000) DI_H; else DI_L; SK_H; SK_L; // rising edge SK value = value << 1; // next bit } } Длительности DI, SK определяются, временем выполнения операций PORTE |= 2 , PORTE &= 2^255 PORTE |= 4 , PORTE &= 4^255 процем at91sam7s256 c резонатором 18.432 МHz, я правильно понимаю? Ссылка на комментарий Поделиться на другие сайты Поделиться
vilich Опубликовано 15 августа, 2016 Поделиться Опубликовано 15 августа, 2016 Да. Только частота больше, вроде 48 МГц , внутри проца умножитель частоты стоит. Ссылка на комментарий Поделиться на другие сайты Поделиться
+megaOlega Опубликовано 16 августа, 2016 Автор Поделиться Опубликовано 16 августа, 2016 А если надо клоки 1мкс скажем, придется делать в ручную задержки, высчитывать время выполнения операций пересылки)).... да и, в предоставленных описаниях, нет доступа к ресурсам процессора. Как реализовать? библиотек готовых нету? п.с: PORTE |= 2 , PORTE &= 2^255 ; еепром не прощелкает такой clk?....( мин длительность слк 93схх ~0.25мкс, а это больше 10 тактов проца, на 48МНz..) хотя работает))) Ссылка на комментарий Поделиться на другие сайты Поделиться
vilich Опубликовано 16 августа, 2016 Поделиться Опубликовано 16 августа, 2016 Похоже только вручную. Команды выполняются не за один такт, вся работа идет через интерпретатор команд. К таймерам процессора доступа нет. Есть постоянно работящий таймер FAST_TIMER. Вот описание - Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Заархивировано
Эта тема находится в архиве и закрыта для дальнейших ответов.