0
Задача 7: избавиться от ручного пересчёта стандартных единиц времени в тики таймера
Что делать НЕ надо: Использовать эти макросы не для констант. Пересчёт в рантайме через флоаты будет убийственно неоптимален, особенно если компилить в avr-gcc без -lm.
+ совмещено с Задачей 8: расширить разрядность таймера для организации системного тика

До внедрения такого (как в задачах 7,8) варианта обработки програмного таймера, мой исходник (с кучей моих функций, не имеющих отношение к таймерной службе) занимал ~1,5кБ. Тоесть у меня был системный тик ровно 1 мс, я в таймерах всегда прописывал задержки в мс. После того как я это переделал, исходник стал занимать 4,6кБ. Свои функции я не трогал, использовал макросы ТОЛЬКО для констант. Такое увеличение это норма при таком подходе? Старый вариант: www.dropbox.com/sh/mv806gbz9ufbtc6/AADouVCpwlRWMT7PXrOTEBooa?dl=0 Вариант после переделки, как в задачах 7,8: www.dropbox.com/sh/s75nzd5z252od6l/AAD2leiC_talRRgo0kTkrsvRa?dl=0
  • avatar
  • Gnusmas
  • 04 августа 2018, 18:59
0
Задача 2: выполнять прерывание с заданным периодом
Что делать НЕ надо: Использовать CTC режим. Он похоронит второй канал и другие ресурсы таймера.
А если используется АТмега 8535,16,32 и Timer0, у которого всего 1 канал, то CTC режим режим удачное решение?
  • avatar
  • Gnusmas
  • 02 августа 2018, 22:13
0
Спасибо за статью.
0
+1
0
Воздержался, для количества.
  • avatar
  • Gnusmas
  • 25 ноября 2017, 01:23
0
Как раз недавно приобрел себе модуль, для «поиграться». Оставил неоднозначное впечатление. Вроде и функционал хороший (регулировка яркости чего стоит), а реализовано действительно как то через жопу (автоинкремент есть, а использовать нормально нельзя). Выкладываю, что накодил (асм 8051): www.dropbox.com/s/wzchjh7dyr8msbf/TM1638.asm?dl=0
0
В озвученной нише (набортный датчик температуры) еще неплохо смотрится LM75 (тот который по I2C). А по цене он вообще самый дешевый их всех цифровых кажется.
0
Разобрался я. Значит дело было в том, что я после отправки байта установки режима чтения клавиатуры (01000010b) не устанавливал линию принудительно на вход. А ведь в этом байте последний битик 0, вот у меня DIO и оставалось в низком уровне, и не давал модулю протолкнуть в МК свои данные. Добавил после отправки этого байта «setb DIO» и все заработало.
0
Обана, интересно… Попробую вечером и так, и эдак.
0
Красный — DIO, зеленый — CLK, синий — STB?
0
По возрастающему (как по даташтиту). По коду не стОит приводить, я пишу на асме под 8051, и там простыня, в который Вы не факт что что-то поймете)) Я из Вашей статьи лишь алгоритм взял, и индикация с полпинка запустилась, а вот с чтением кнопок затык получился, вот и хотелось бы понять, где я затупил…
0
Есть вопрос по чтению кнопок. Посылаю 0x42, делаю паузу 2 мксек, и по фронту клока считываю данные. После 4 принятых байт поднимаю строб, и нигде нет нажатой кнопки(( Что я делаю не так?
+3
Качаем схему на EasyAVR5A, и убеждаемся что пины pb6 pb7 (для сокета DIP28) не подключены к светодиодам, поэтому последние никак не могут зажигатся, при работе с МК в этом корпусе.
0
А меня очень удивил факт, что «пидарнули» с Радиокота. По моим наблядениям там там таких людей любят.
  • avatar
  • Gnusmas
  • 07 апреля 2016, 11:57
0
Получилось запустить, но пришлось отказаться от проверки занятости шины, и проверок состояния флага ошибки. С этими проверками датчик не работает.
  • avatar
  • Gnusmas
  • 12 февраля 2016, 20:35
0
Доброго времени суток. Не получается запустить этот термометр. Пишу на асме под MCS-51. Использую атмеловскую иблиотеку I2C. Делаю все как для чтения памяти EEPROM (которая к слову прекрасно читается и пишеться с помощью этой либы), а оно читает одни нули. Наверняка есть какие-то отличия, надо читать как-то иначе, чем ячейку EEPROM?
  • avatar
  • Gnusmas
  • 10 февраля 2016, 10:35
0
Да, все это так. Сам постоянно # перед значением забываю (привык к AVR). Но насколько удобно под них писать. Я вот когда на AVR-ах пробовал начинать только и мог что чужие готовые проекты повторять, своего с нуля ничего не мог написать. А вот благодаря этому семейству потихоньку учусь, надеюсь когда освоюсь, еще раз штурмовать AVR-ки (+PIC-и зацепить), и потом уже и ARM-ы.
  • avatar
  • Gnusmas
  • 22 ноября 2015, 00:32
0
Извините что встреваю, но 1 вопрос как-то на вопрос не тянет, скорее утверждение. А в чем проявлялась его «говнистость»?
  • avatar
  • Gnusmas
  • 21 ноября 2015, 17:38
0
Да, Com1, железный, потому что грешил на UAB-UART переходник. Контроллер снят с кого-=тго счетчика электроенергии. Возможно ли, что записаная программа не дает стартовать загрузчику?
  • avatar
  • Gnusmas
  • 20 ноября 2015, 22:29
0
Есть AT89C51ED2, только в DIP-корпусе. Не могу увидеть его Flip-ом. Что может мешать? Кварц USART-ный (11,0592 МГц).
  • avatar
  • Gnusmas
  • 20 ноября 2015, 22:11