Uart В Attiny13 Или Как Вывести Данные Из Мк За 52Р

(цена за 10 штук в магазине Chip and Dip на момент публикации)

UART в ATtiny13 или Как вывести данные из МК за 52р

Я никогда не мог удержаться от покупки различных электронных вещей, и однажды у меня появилось еще 10 штук.

очень маленький МК больше.

Обожаю ATtiny13 — дешево и сердито.

Когда я их купил, я твердо запомнил, что у них есть «Там даже АЦП есть, не говоря уже о таймере!» и был очень рад их низкой цене.

Однако когда я поставил перед ATtiny13 реальную задачу, оказалось, что ему не хватает одной очень важной вещи, а именно: интерфейсы данных (разумеется, не считая GPIO).

Ну а если есть GPIO, то можно писать всё, что угодно! Я подумал и пошёл в гугл.

И не нагуглил красивое готовое решение для avr-gcc. Эта статья о создании (надеюсь) такого решения — добро пожаловать под кат. На самом деле я гуглил около трёх вариантов, но в один пишут на БЫСИКе (даже не знал, что такое возможно), на друг под CVAVR (привет моему первому мигающему светодиоду) и вообще там весь смысловой код на ужасном ассемблере, а тут третий вариант вроде подходящий.

Но какой-то очень странный код. Но он сработал полдюжины раз.

Но блин.

Использование программной памяти: 508 байт, заполнено на 49,6%.

Ну да ладно, главное, чтобы работало и вписывалось, а потом можно читать и рефакторить.

JumpStart состоялся — это главное.



UART в ATtiny13 или Как вывести данные из МК за 52р

Вдумчиво прочитав код, становится понятно, что его автор достоин глубокого уважения.

Этот код похож на код человека, который занимается программированием ОЧЕНЬ недавно, и проблема решена достаточно мощно.

Оно работает. Очень хотел описать несколько тривиальных ошибок для новичков, но после третьей понял, что это очень оффтоп, так что, увы.

В оригинале , код занимался и получением, и отправкой данных, но на самом деле моя задача не требует получения (особенно в основном цикле).

Мне достаточно просто поймать прерывание Pin Change на любой ножке и выдать результаты преобразования A-> D. Поэтому, чтобы похудеть, было решено отказаться от приема.

Вот что получилось после не очень долгого и не очень продуманного рефакторинга:

   

#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){

Теги: #avr #attiny13 #attiny13a #uart #Программирование микроконтроллеров
Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.