Поиск сообщества
Показаны результаты для тегов 'алгоритм'.
Найдено: 2 результата
-
Возник вопрос теории интерпретатора кода микропроцессора микроконтроллером Возьмём к примеру, всеми любимый КР580ИК80, (опустим сейчас споры зачем, не хватит скорости и т.д.), интересна теория построения такой «Виртуальной машины». В моём понимании алгоритм такой: 1- В памяти микроконтроллера создаётся массив с адресами подпрограмм кодов процессора (в нашем случае КР580ИК80); 2- Ячейки массива имеют названия идентичные соответствующим командам процессора 3- Микроконтроллер выставляет на определённых портах (допустим порт А и В) адрес извлекаемой из внешней памяти команды программы; 4- Считывает данные с порта (допустим С); 5- Выбирает ячейку массива с именем идентичным считанному значению из порта С; 6- Переходит к подпрограмме по адресу записанному в соответствующей ячейке массива; 7- В процессе выполнения подпрограммы происходят соответствующие действия и увеличение (или иное изменение) счетчика команд; 8- Процесс повторяется с шага 3. Так вот если и вправду алгоритм построения данного решения соответствует описанному выше, то у меня возникает вопрос, неужели микроконтроллеру на каждую команду процессора приходится перечёсывать массив ища соответствие, или есть иной путь прямого перехода к соответствующей подпрограмме? Возможно я неправильно понимаю реализацию интерпретатора кода микропроцессора микроконтроллером?
- 4 ответа
-
- микроконтроллер
- микропроцессор
- (и ещё 3 )
-
Здравствуйте. Есть желание делать прошивки более-менее грамотно. Чтобы не изобретать велосипедов хотелось бы увидеть советы, может быть ссылки на к-либо статьи. Я начал делать таймер для водяного насоса, вот на этом подопытном кролике и будет конкретика. Что собираюсь в него впихнуть и зачем: 1. Выход на одно реле. Оно и будет управлять насосом (~240 Вт.) 2. Дисплей - 2 модуля, каждый из 3х 8ми сегментных цифр, внутри модуля соединены для динамической индикации, т.е. 11ти ногие. Показывать будет время в часах/мин/сек ну и закорючки для индикации режимов. 3. Клавиатура - матрица 3*4. Настройка таймера/запуск/остановка. 4. Пищалка - динамик 8 Ом. Для звуковых сигналов о состоянии и при настройке таймера. 5. [Датчик тока/напряжения] его может быть и не стану делать, назначение - косвенно определять количество перекачанной воды, определять отсутствие воды в скважине. Плата готова уже, МК выбран 16LF1823 (на глазок, т.к. они уже есть и задача вроде как не сложная). Дисплей тоже готов и проверян средним пальцем левой ноги )) состоит из ключа подачи питания, 3х микросхем (8 D-триггеров каждая), из которых получился длинный сдвиговый регистр, ну и самих цифр, о которых уже написал. Получилось 3 входа: Power ON, Clk, Data, ну и питание + - . Планируется 4 программы работы: 1)-бесконечная работа с перерывами на восстановление скважины; 2)-30л; 3)-10л; 4)-по времени с клавиатуры. 2 и 3 можно настроить с клавиатуры, вход в режим настройки - долгим удержанием кнопки "OK", настройку можно проводить и в режиме, когда уже идёт перекачка. Запуск 2 коротким нажатием кнопки "отмена", 3 - кнопки "ОК". Запуск по времени просто вводом цифр, перед запуском анализ - если <10 сек, то это не секунды, а минуты. В процессе перекачки звуковые сигналы. После запуска перекачки дисплей гаснет по истечении некоторого времени, для включения - нажать любую кнопку из некоторой группы. По истечении времени перекачки - пикалка звуковой сигнал в теч. некоторого времени, затем выключение в спящий режим. Собираюсь задействовать DAC для пищалки (синусоиду слушать приятнее, чем меандр имхо), для дисплея - SPI, для задержек всяких разных - аппаратный таймер, если будет не лень, хватит ресурсов и вообще звёзды сойдутся, то может ещё ADC понадобится. Получается будут параллельно выполняться функции: 1. опрос клавиатуры 2. индикация 3. звук 4. расчёт оставшегося времени, либо ожидание запуска Делать собираюсь на С с компилятором XC8. Вопрос с чего нАчать. Ну решил начать с алгоритмма, понял что нужны будут отрезки времени со стабильной длительностью/периодичностью, и для отсчёта самих интервалов работы насоса и для опроса клавиатуры и для звука и для дисплея. Посоветуйте где что почитать, чтобы отстойный код не получился. Сейчас есть мысль что понадобится делать программные таймеры и возможно будет желательно конечные автоматы использовать, о которых почти ничего не знаю. По программным таймерам нашёл статью http://chipmk.ru/index.php/spisok-statej/24-uchimsya-programmirovat/120-programmnye-tajmery-na-assemblere, но она на асме, зато показалась хорошей. Есть разные и статьи и литература для начинающих, но там обычно как диодиком помигать, что такое МК и т.п., как правильно делать с точки зрения ресурсов МК, возможности корректировки кода в будущем, добавлении нового функционала мало где встречается, поэтому и нужны советы. Сейчас вопросы - не маловато ли ресурсов у выбранного МК для моих хотелок, как делать программные таймеры и почему они работают с точной периодичностью независимо от основной программы, действительно ли мне нужны конечные автоматы. В общем то разбираться планирую как можно больше самостоятельно, но просьба указать направление, в котором надо самопнуться.