Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Чт янв 21, 2021 17:05:29
Ничего сложнее чем две кнопки я пока не подключал к МК, с микрухами проще. Таймер срабатывает где придется, при этом после срабатывания его надо перезагружать, значит надо разбирать и собирать стек с другим адресом возврата, и из-за двух кнопок я уже экран текста настрочил, и не представляю как это вкорячивать в реальную программу. Просто хардкор.
Чт янв 21, 2021 17:46:27
Не нужно перезагружать. У этого МК не смотрел, а таймеры в 15F204/408 имеют режим с предзагрузкой начальных значений. После переполнения начальные значения загружается автоматически.
Позже посмотрю ДШ на 11-й.
Чт янв 21, 2021 17:58:44
У 11-го простые таймеры как у 8051
Чт янв 21, 2021 19:19:51
Режим с автозагрузкой есть, но он только 8-битный.
Младший регистр тикает, во время переполнения взводится флаг и из старшего в младший подгружается стартовое значение.
Для комфортного, без лишних манипуляций, прерывания в 1 мс 8-битный таймер маловат будет, нужно еще счетчик переполнений добавить.
Единственное, что мне непонятно, это какова частота внутреннего генератора. Нигде об этом явно не пишется.
В 15-х значение генератора устанавливалось в конфигурации на стадии прошивки. С этим непонятно пока.
Чт янв 21, 2021 19:53:04
Zhuk72 писал(а):Единственное, что мне непонятно, это какова частота внутреннего генератора. Нигде об этом явно не пишется.
В 15-х значение генератора устанавливалось в конфигурации на стадии прошивки. С этим непонятно пока.
Некоторые опции устанавливаются в прошивальщике. Частота тоже.
Я вот на STC11F04 искал в даташите, как (не очень нужный) reset переделать в P3.6 Думал, что-то куда-то надо записать или бит поставить, но в даташите ни слова. Оказывается, это галка в прошивальщике.
- Вложения
-
- IRC_freq.png
- (77.04 KiB) Скачиваний: 80
Чт янв 21, 2021 20:04:50
Это картинка про 15F204, я же про него и писал постом выше.
А в 11F04 частота при прошивке не выставляется, там все гораздо хуже.
User can use “MOV @Ri” instruction read RAM unit FC~FF to get the internal oscillator frequency of the factory and read RAM unit F8~FB to get internal oscillator frequency of last used to download programs within the internal oscillator after power on.
И вообще рекомендуют использовать кварц, особенно если планируется использовать УАРТ или другие временно-чувствительные функции, ибо у внутреннего генератора частота очень нестабильна.
Чт янв 21, 2021 20:28:24
Я кажись придумал, что надо сделать с таймером. Там есть режим 0 (13-битный таймер), это сделано для совместимости с MCS-48. Если его просто запустить без загрузки в счетные регистры, он будет считать по кругу, переваливаясь через переполнение, и генерировать прерывания через ~8 мс. Я недавно изображал динамическую индикацию таким способом, там ровно такая-же проблема была.
Прошивалка написала 5,4 МГц. У меня кварц 12МГц. УАРТ, к счастью у них некапризный.
- Вложения
-
- STC11_IRC.png
- (74.76 KiB) Скачиваний: 72
Чт янв 21, 2021 21:43:49
Прошивалка читает данные о частоте из регистров, выше я давал цитату из ДШ.
- Код:
TIMER0INIT: ;1000us@12.000MHz
ORL AUXR,#80H ;Timer clock is 1T mode
ANL TMOD,#0F0H ;Set timer work mode
MOV TL0,#020H ;Initial timer value
MOV TH0,#0D1H ;Initial timer value
CLR TF0 ;Clear TF0 flag
SETB TR0 ;Timer0 start run
RET
Вот готовый код на 12 МГц с прерывание в 1 мс.
В прерывании нужно только добавить загрузку TL0/TH0 теми же значениями.
Чт янв 21, 2021 23:00:02
Прерывание нужно только для активации режима клавиатурного ввода.
При самом вводе работаем обычным опросом порта ЛВК.
А уже по завершении работ с клавиатурой (отсутствие активности энное время) возвращаемся в ожидание воздействия через прерывание.
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.