Jump to content
Atreides

Програмный UART atmega16

Recommended Posts

Добрый день. Мне требуется реализовать программный юарт на атмеге16. Он нужен для того, чтобы принятые по нему данные отправить на аппаратный юарт. В интернете нашел примеры кода, но понять его мне трудно. Прошу вас словами в общих чертах объяснить принцип реализации программного юарта. Буду рад примерам, которые, на ваш взгляд, являются наиболее простыми и понятными. Заранее спасибо.

Share this post


Link to post
Share on other sites

Изготовление 2-х слойных плат от 2$, а 4-х слойных от 5$!

Быстрое изготовление прототипа платы всего за 24 часа! Прямая доставка с нашей фабрики!

Смотрите видео о фабрике JLCPCB: https://youtu.be/_XCznQFV-Mw

Посетите первую электронную выставку JLCPCB https://jlcpcb.com/E-exhibition чтобы получить купоны и выиграть iPhone 12, 3D-принтер и так далее...

6 часов назад, Alex сказал:

Хм...
https://yandex.ru/search/?lr=2&clid=2063927&msid=1507717605.69763.22885.8805&text=USART интерфейс Просто множество статей с описанием интерфейса.
В чём конкретно проблема ? Что не понятно в интерфейсе ?

Спасибо за ответ. Проблема в реализации программного (дополнительного) юарта на языке СИ на атмеге16, так как одного встроенного аппаратного не хватает для моих нужд. В интернете нахожу несколько статей с примерами, но большинство из них - сухой код, немного разбавленный комментариями. Я ни в коем случае не прошу написать мне готовый код, мне интересна сама логика рассуждений, которую я так и не могу усвоить: как работать с таймером, прерываниями и т.д. 

Share this post


Link to post
Share on other sites

Безмостовые ККМ для 99% КПД!

Схема коррекции коэффициента мощности (ККМ) на основе так называемого «тотемного столба» (Totem Pole) обладает минимально возможными потерями и потенциально может обеспечить самые жесткие требования к энергоэффективности источников питания. Компания Wolfspeed представляет референсную разработку – плату ККМ CRD-02AD065N на базе собственных карбид-кремниевых MOSFET и диодов с наилучшими в отрасли характеристиками.

Подробнее

Гибридные IGBT - сила Si и SiC в одном корпусе!

Компания Infineon представила новые гибридные IGBT-транзисторы на 650 В, которые сочетают в себе преимущества технологий TRENCHSTOP и CoolSiC. Использование SiC-диода Шоттки позволяет значительно расширить возможности IGBT и снизить уровень энергии, необходимой для включения транзистора (Eon), а также уменьшить потери на переключение.

Подробнее

3 часа назад, Atreides сказал:

как работать с таймером, прерываниями и т.д. 

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

Share this post


Link to post
Share on other sites

Вебинар «Параметры выше, цена ниже. Обновление в линейке AC/DC- и DC/DC-преобразователей MORNSUN» (26.01.2021)

Приглашаем 26 января на бесплатный вебинар, посвящённый преимуществам и отличиям новых источников питания и DC/DC-преобразователей Mornsun. На вебинаре будут рассмотрены изолированные и неизолированные DC/DC-преобразователи последнего, четвертого, поколения (R4) и компактные модульные источники питания второго и третьего поколений (семейства LS/R3 и LD/R2) на плату. Рассмотрим новую группу продукции – встраиваемые источники питания в кожухе.

Подробнее

Только что, Alex сказал:

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

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

Share this post


Link to post
Share on other sites

Если вкраце. Ловим прерывание по первому спадающему фронту (начало старт-бита), запускаем таймер на полбита, запрещаем внешнее прерывание. В прерывании от таймера перестраиваем его на время в один бит и начинаем считать биты до 9, ловя каждый раз прерывание по таймеру и считывая состояние ПИНа в переменную. На последнем бите отрубаем прерывание по таймеру и разрешаем внешнее прерывание (для начала следующего байта). Байт принят.
И так принимаем каждый байт по-очреди.

Share this post


Link to post
Share on other sites

Вот именно это я и хотел узнать! Большое спасибо!

Edited by Alex
Убрал цитату

Share this post


Link to post
Share on other sites

а может можно одним аппаратным обойтись? Rx на прием от одного, а по Tx передача дальше....

Share this post


Link to post
Share on other sites
В 11.10.2017 в 23:09, Alex сказал:

запускаем таймер на полбита

почему на полбита если можно полтора?


Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Share this post


Link to post
Share on other sites
5 часов назад, COKPOWEHEU сказал:

полбита

Через полбита убеждаемся, что стартовый ноль всё ещё присутствует на входе. Если нет, то завершаем процедуру без приёма байта - ложное срабатывание по INT. Получается некая защита от импульсных помех на входной линии.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Сообщения

    • Неверно. Выпрямитель с удвоением  потребляет ток от обмотки трансформатора в 2,2 раза больше, чем ток выдаваемый. Поэтому обмотка трансформатора должна быть на 2,7 ампера 6,8 вольт , а не на 1-1,5 а. И всё это бред,соединять параллельно накалы. Очень трудно будет получить  пульсации 0,2мв при токе 1,2а. И маленький ТОР  ТТП - 15 невозможно намотать проводом 1,2мм
    • У меня два таких "усовершенствованных" КИТа. Один со всеми возможными доработками, с порезанными дорожками и подачей отдельного стабилизированного напряжения на ОУ. Осталось заменить R13 на сопротивление 18к. Думаю, что эта замена ничего не изменит...Гам.. есть г....но - Это такой способ привлечь начинающих и просто желающих что-то "спаять ? Главный вопрос: Почему никто не видит ЛБП Шелестова ? Вот его характеристики: плавная регулировка напряжения в диапазоне от 0 до 30 В; напряжение пульсации при токе 3 А не более 1 мВ; плавная регулировка тока ограничения (защиты) от 0 до 3 А; коэффициент нестабильности по напряжению не хуже 0,001%/В; коэффициент нестабильности по току не хуже 0,01%/В; У кого есть рабочая печатка под ЛБП Шелестова ?
    • Не похожа. Смотри внимательно, как в Фениксе выполнен УН.
    • уж больно она похожа на такие как Рассомаха, Безупречный, Honey Badger... И вроде такого типа диф каскады не принято стабилизировать, так CRC или "електронный увеличитель емкости" (вроде правильно перевел с буржуйского) ставят и все...
    • Судя по предложенным замерам 601 куда лучше 307 : дрейф 16мВ вместо "до 90мВ" у самого Шушурина.   
    • Сегодня начал разбирать ,нашел 2шт:6П16Б  , новые Кто спрашивал ?  

  • Драйверы шаговых двигателей: TMC2100 TMC2130 TMC2208 TMC2209 TMC5160 TMC5161

  • Similar Content

    • By Обычный Человек
      Микроконтроллер ATmega328p, внешний кварц 16МГц. Компилятор avr-gcc с оптимизацией O1

      Написал код для управление шаговым двигателем. Работает так: требуемая скорость задается переменной STP1_ReqSpeed, дальше с частотой 100Гц срабатывает таймер TIM0, который высчитывает с какой частотой надо подавать сигналы на вход шагового драйвера. TIM1 работает в режиме частотно импульсной модуляции и по прерыванию меняет значение пина на противоположное.

      Управление работает, скорость регулируется, но по какой то причине случаются пропуски шагов. Чаще всего во время ускорения. Количество пропусков от 0 до 4, обычно 2-3, длятся 32мс.

      Из кода вырезал неиспользуемое. Заменить прерывания на аппаратный ШИМ возможности нет. Как убрать эти пропуски?
      Осциллограммы:
       
       
    • By Артур Измаилов
      1.Создать схему в которой два светодиоды загораются в следующей последовательности:  1 и 2, 2 и 3, 3 и 4, …, 15 и 16, 1 и 2 и т.д. (т.е. создается эффект движения двух светодиодов).
      Дано условие выше. Решение задачи нужно представить в Proteus. Код для программирования пишу в AtmelStudio 7. Схему собрал в Proteus. Вывел 16 светодиодов через 2 порта (Порт B и Порт D). МК использовал ATMEGA 8 вариации в корпусе DIP с 28 ножками (SPDIL28). 
      До этого смог написать схему, чтобы работали светодиоды в последовательности 1.2.3.4.5....16.1.2.3.4 и тд. Делал через оператор FOR. Однако с этим кодом начались проблемы. Помогите пожалуйста. 
      Нижу представил изображение кода. 
      Заранее спасибо!
       

    • By Lisitsin
      Собираем компьютер ZX Spectrum на микроконтроллерах AVR своими руками!
      Проект открытый, все исходники и информация проекта по ссылке
      https://yadi.sk/d/9S2S0ZmNqsLykQ
      Проект печатной платы выполнен в PCAD-2006, программное обеспечение разработано в AVRStudio  4b401
      Здесь отвечу на все возникающие вопросы и помогу со сборкой и запуском
    • By O5-14
      По поводу этого https://cxem.net/mc/mc220.php девайса. Как напоминалка паролей думал сделать, только в моих краях 1604 нету( Под wg12864 нет случаем модификации ? 
      И что такое значит "Текстовые файлы должны быть в обычном txt формате и без форматирования" - первая часть понятна. А без форматирования ? Одна длинная строка ? Пробелы-то хоть можно ?
    • By Karl-Ieronim
      Коллеги, всем привет. 
      Увидел вот такой проект. 
      Несмотря на явную привлекательность что-то совсем мало повторивших. 
      Может кто-то из завсегдатаев форума делал этот проект? 
      Интересует ваше мнение: хочу повторить, но не силен в программировании, поэтому беспокоюсь на счёт подводных камней с которыми не смогу справиться. 
×
×
  • Create New...