repstosw 18 17 марта Опубликовано 17 марта (изменено) · Жалоба Нужно прецезионно(равными интервалами) организовать считывание из SFR регистра и вывести сигнал на ножку. Не могу найти достоверные растактовки для инструкций ядра 8051. Встречаются разночтения: в одних источниках пишут, что инструкция DJNZ занимает 2/4 цикла в зависимости от результата, а других - в обоих случаях 2 цикла. Интересуют именно число циклов, без привязки к конкретной частоте. У меня недоверие и вопросы: как может инструкция с условным переходом выполняться одинаковое число тактов? Там всегда будет 2 значения циклов - в случае если переход выполнен, и в случае если перехода не будет. В частности меня интересует число циклов выполнения следующих инструкций: mov A,SFR movx @DPTR,A inc DPTR nop ;1 цикл djnz R2,Label mov A,#0x15 movx @R1,A clr A ;1 цикл ? mov R2,#0x18 sjmp Label Изменено 17 марта пользователем repstosw Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
skripach 6 17 марта Опубликовано 17 марта · Жалоба В разных процессорах по разному. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 212 17 марта Опубликовано 17 марта · Жалоба 1 час назад, repstosw сказал: Не могу найти Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tonyk_av 43 17 марта Опубликовано 17 марта · Жалоба 4 hours ago, repstosw said: Не могу найти достоверные растактовки для инструкций ядра 8051. В старину у 8х51 машинный цикл состоял из 12 тактов синхронизации, потом стал 6, сейчас 1. Причём разные производители МК используют разные реализации системы команд MCS-51. Отсюда возможно разное время выполнения. Нужна точность- используйте МК с DMA. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Harbinger 10 17 марта Опубликовано 17 марта · Жалоба SI44xx, надо понимать? Это надо смотреть мануал конкретно на CIP-51 (силабсовская реализация ядра). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 17 марта Опубликовано 17 марта (изменено) · Жалоба 1 hour ago, tonyk_av said: В старину у 8х51 машинный цикл состоял из 12 тактов синхронизации, потом стал 6, сейчас 1. Меня это не интересует. Меня интересует число машинных циклов для каждой инструкции. Проще говоря, во сколько раз одна инструкция быстрее-медленее другой. 1 hour ago, tonyk_av said: Нужна точность- используйте МК с DMA. Нет такой возможности. Точнее - есть, но только в виде "память - SPI". А DMA типа "SFR - память" - нет. 1 hour ago, Harbinger said: SI44xx, надо понимать? Это надо смотреть мануал конкретно на CIP-51 (силабсовская реализация ядра). Да, он самый! Нужно выставлять ножку в 0 или 1 после заполнения буфера для SPI через DMA. Половина - буфер 128 байт. В буфер кладутся значения SFR-регистра фазы. Требуется очень равными интервалами читать регистр фазы и без джиттера дёргать ножку в 0 и 1 (для IRQ мастер-контроллера). То, что я сделал - работает, фаза дампится в кольцевой буфер для мастер-контроллера, но просмотр отсчётов показал, что есть небольшой джиттер в отсчётах фазы 1-2%. Я помню, умельцы делали на AVR-ках VGA-контроллеры и всякие ГИТС для ТВ с шахматными клетками и полосками - у них всё было ровно: по тактам расчитано. В 8051 такое возможно? Изменено 17 марта пользователем repstosw Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
тау 31 17 марта Опубликовано 17 марта (изменено) · Жалоба 22 минуты назад, repstosw сказал: В 8051 такое возможно? когда то было возможно, давно, но не на С. Причем на силабсе С8051F320 один друг делал TX RX каналы на несущей 13.56 МГц ногодрыганием кодом на асме. И оно работало :) Изменено 17 марта пользователем тау Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 17 марта Опубликовано 17 марта · Жалоба 22 minutes ago, тау said: когда то было возможно, давно, но не на С Здесь пишу на ассемблере sdas8051. Си не использую. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 62 17 марта Опубликовано 17 марта · Жалоба On 3/17/2024 at 12:52 PM, repstosw said: Здесь пишу на ассемблере sdas8051. Си не использую. А таймер для этих целей задействовать не получится ? On 3/17/2024 at 12:52 PM, repstosw said: Здесь пишу на ассемблере sdas8051. Си не использую. https://studfile.net/preview/7484242/page:4/ Вот здесь посмотрите 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 17 марта Опубликовано 17 марта · Жалоба 30 minutes ago, dimka76 said: А таймер для этих целей задействовать не получится ? Такая возможность есть. Но частота опроса регистра должна быть высокой, боюсь что вход и выход из обработчика прерывания по таймеру снизят частоту опроса. 31 minutes ago, dimka76 said: https://studfile.net/preview/7484242/page:4/ Вот здесь посмотрите Спасибо, помогло. Всё-же у Si4463 время выполнения команд ядра 8051 отличается от дефолтного i8051. Первоначально я брал данные о растактовках здесь: https://mp8051.narod.ru/commands.html Подытоживая: mov A,SFR ;2 movx @DPTR,A ;3 inc DPTR ;1 nop ;1 djnz R2,Label ;2/3 mov A,#0x15 ;2 movx @R1,A ;3 clr A ;1 mov R2,#0x18 ;2 sjmp Label ;3 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tonyk_av 43 17 марта Опубликовано 17 марта · Жалоба 1 hour ago, repstosw said: Всё-же у Si4463 время выполнения команд ядра 8051 отличается от дефолтного i8051. Так ведь и было сказано, что 4 hours ago, tonyk_av said: Отсюда возможно разное время выполнения "Дефолтный i8051" (правильно 8x51)- это MCS51 от Intel, которых сейчас днём с огнём не сыскать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Harbinger 10 17 марта Опубликовано 17 марта · Жалоба 6 часов назад, tonyk_av сказал: "Дефолтный i8051" (правильно 8x51)- это MCS51 от Intel, которых сейчас днём с огнём не сыскать. Сыскать можно, 12-тактовые "legacy 8051" до сих пор делают (к примеру, их есть у Nuvoton и Megawin)... но зачем? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться