(цена за 10 штук в магазине Chip and Dip на момент публикации)
Я никогда не мог удержаться от покупки различных электронных вещей, и однажды у меня появилось еще 10 штук.
очень маленький МК больше.
Обожаю ATtiny13 — дешево и сердито.
Когда я их купил, я твердо запомнил, что у них есть «Там даже АЦП есть, не говоря уже о таймере!» и был очень рад их низкой цене.
Однако когда я поставил перед ATtiny13 реальную задачу, оказалось, что ему не хватает одной очень важной вещи, а именно: интерфейсы данных (разумеется, не считая GPIO).
Ну а если есть GPIO, то можно писать всё, что угодно! Я подумал и пошёл в гугл.
И не нагуглил красивое готовое решение для avr-gcc. Эта статья о создании (надеюсь) такого решения — добро пожаловать под кат. На самом деле я гуглил около трёх вариантов, но в один пишут на БЫСИКе (даже не знал, что такое возможно), на друг под CVAVR (привет моему первому мигающему светодиоду) и вообще там весь смысловой код на ужасном ассемблере, а тут третий вариант вроде подходящий.
Но какой-то очень странный код. Но он сработал полдюжины раз.
Но блин.
Использование программной памяти: 508 байт, заполнено на 49,6%.Ну да ладно, главное, чтобы работало и вписывалось, а потом можно читать и рефакторить.
JumpStart состоялся — это главное.
Вдумчиво прочитав код, становится понятно, что его автор достоин глубокого уважения.
Этот код похож на код человека, который занимается программированием ОЧЕНЬ недавно, и проблема решена достаточно мощно.
Оно работает. Очень хотел описать несколько тривиальных ошибок для новичков, но после третьей понял, что это очень оффтоп, так что, увы.
В оригинале , код занимался и получением, и отправкой данных, но на самом деле моя задача не требует получения (особенно в основном цикле).
Мне достаточно просто поймать прерывание Pin Change на любой ножке и выдать результаты преобразования A-> D. Поэтому, чтобы похудеть, было решено отказаться от приема.
Вот что получилось после не очень долгого и не очень продуманного рефакторинга:
Теги: #avr #attiny13 #attiny13a #uart #Программирование микроконтроллеров#define F_CPU 9600000UL #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> uint8_t temp, count, start; volatile uint8_t c; #define BAUD_C 123 #define TxD PB4 #define T_START TCCR0B = (1 << CS01) // F_CPU/8 #define T_STOP TCCR0B = 0 #define T_RESET TCNT0 = 0 ISR(TIM0_COMPA_vect){
-
Научимся Использовать Макрос Ms Access.
19 Oct, 24 -
Козел
19 Oct, 24 -
Секс-Эмпирический
19 Oct, 24 -
Твиттер-Трансляция
19 Oct, 24 -
Кинетические Скульптуры
19 Oct, 24 -
Один Миллиард Показов Прямой Рекламы
19 Oct, 24