8-900-374-94-44
[email protected]
Slide Image
Меню

Часы на микроконтроллере attiny2313: ATtiny2313. 1.0 2.0 —

Содержание

Часы за два дня на attiny2313 и ds1307 / Хабр

Мотив
Начну с того, что каждый человек живёт во времени, которое, к огромному сожалению, не возможно остановить. И раз мы живём в этом мире, то давайте следить за временем и не упускать ни минуты, тратя её впустую. Для этого я и сделал это чудесное устройство, по имени часы.


Начнём!

На улице встало солнце, я нарисовал плату и почесал на ксерокс, дабы напечатать плату

Дальше те, кто знают как изготавливаются платы поймут, что я перевёл рисунок утюгом на текстолит, протравил, залудил и т.д., а те, кто не в курсе — почитайте в интернете про изготовление плат методом ЛУТ — (Лазерно-утюжная технология).
результат я заснять забыл, но думаю, что качество будет видно и на готовой плате:

Видно места, которые не взялись, но ничего страшного не случилось, отстал только полигон.
Дальше нужно было запаять компоненты, на которых я особо останавливаться не буду, только оставлю их список:

  • AtTiny2313 — 8ми битный микроконтроллер
  • ds1307 — микросхема-счётчик с неплохой точностью
  • часовой кварц на 32. 768кГц
  • 2 резистора на 10 КОм
  • 7 резисторов на 10 Ом
  • 1 резистор на 5.2 КОм
  • 4 резистора на 1 КОм
  • 4 транзистора КТ315 (их современные братья)
  • буззер на 5 вольт
  • 2 тактовые кнопки (угловой монтаж)
  • 4 индикатора (10011-BSR) общий анод
  • тантал на 47 микрофарад
  • и гнездо питания и угловым креплением (диаметр отверстия — 5.1мм, диаметр центр. контакта — 1.5мм)

И пускай вас не смущает длина этого списка, ведь мы собираем устройство на долгие года, и оно должно быть собрано на должном уровне!
Кто желает посмотреть на плату с другой стороны, вот фото:

Программа

Как и все устройства, часы нуждаются в программе. В данном случае программа написана на языке BASIC в BASCOM AVR. Этот язык очень удобный для программирования, так как код понятный, эффективный и занимает не много места на микроконтроллере. Писать программу с ноля я не стал, а взял исходник одной статьи сайта паяльник.
Кто интересуется — найдёт, я же просто оставлю доработанный мною код тут:
$regfile = "attiny2313.dat"
$crystal = 8000000

Dim Count As Byte
Dim Number(4) As Integer
Dim Pointmem As Byte
Dim Point As Bit
Dim Mine As Byte
Dim Hour As Byte
Dim Seco As Byte
Config Porta.1 = Output
Porta.1 = 1
Waitms 10
Porta.1 = 0
Waitms 70
Porta.1 = 1
Waitms 10
Porta.1 = 0
Config Portb = Output
Config Porta.0 = Output
Config Portd.2 = Output
Config Portd.3 = Output
Config Portd.6 = Output
Config Sda = Portd.5
Config Scl = Portd.4
Config Pind.0 = Input
Portd.0 = 1
Config Pind.1 = Input
Portd.1 = 1
Config Timer1 = Timer , Prescale = 64
On Timer1 Awake:
Config Timer0 = Timer , Prescale = 64
On Ovf0 Refresh
Dig1 Alias Porta.0 : Dig2 Alias Portd.2 : Dig3 Alias Portd.3 : Dig4 Alias Portd.6
Enable Interrupts
Enable Ovf0
Enable Timer1
Start Timer1

Hour = 0
Mine = 0

If Pind.1 = 0 And Pind.0 = 0 Then
Porta.1 = 1
Waitms 100
Porta.1 = 0
Hour = 0
Mine = 0
Seco = 1

Seco = Makebcd(seco)
I2cstart
I2cwbyte &HD0
I2cwbyte 0
I2cwbyte Seco
I2cstop

Mine = Makebcd(mine)
I2cstart
I2cwbyte &HD0
I2cwbyte 1
I2cwbyte Mine
I2cstop

Hour = Makebcd(hour)
I2cstart
I2cwbyte &HD0
I2cwbyte 2
I2cwbyte Hour
I2cstop
Waitms 1000
Porta.
1 = 1 Waitms 10 Porta.1 = 0 End If Do I2cstart I2cwbyte &HD0 I2cwbyte &H00 I2cstart I2cwbyte &HD1 I2crbyte Seco , Ack I2crbyte Mine , Ack I2crbyte Hour , Nack I2cstop Seco = Makedec(seco) Mine = Makedec(mine) Hour = Makedec(hour) If Seco = 80 Then Seco = 10 Seco = Makebcd(seco) I2cstart I2cwbyte &HD0 I2cwbyte 0 I2cwbyte Seco I2cstop End If If Hour > 9 Then Number(1) = Hour / 10 Number(1) = Abs(number(1)) Else Number(1) = 20 End If Number(2) = Hour Mod 10 If Mine > 9 Then Number(3) = Mine / 10 Number(3) = Abs(number(3)) Else Number(3) = 0 End If Number(4) = Mine Mod 10 If Pind.1 = 0 Then Porta.1 = 1 Waitms 10 Porta.1 = 0 If Mine = 59 Then Mine = 0 Else Incr Mine End If Mine = Makebcd(mine) I2cstart I2cwbyte &HD0 I2cwbyte 1 I2cwbyte Mine I2cstop Else If Pind.0 = 0 Then Porta.1 = 1 Waitms 10 Porta.1 = 0 If Hour = 23 Then Hour = 0 Else Incr Hour End If Hour = Makebcd(hour) I2cstart I2cwbyte &HD0 I2cwbyte 2 I2cwbyte Hour I2cstop End If End If Waitms 250 Loop Awake: If Point = 1 Then Porta.
1 = 1 Waitus 10 Porta.1 = 0 End If Toggle Point Return Refresh: Reset Dig1 : Reset Dig2 : Reset Dig3 : Reset Dig4 Incr Count : If Count > 4 Then Count = 1 If Count = 2 And Point = 1 Then Pointmem = Number(2) + 10 Portb = Lookup(pointmem , Digits) Else Portb = Lookup(number(count) , Digits) End If Select Case Count Case 1 : Set Dig1 Case 2 : Set Dig2 Case 3 : Set Dig3 Case 4 : Set Dig4 End Select Return Digits: Data &B00101000 , &B01111011 , &B00110100 , &B00110010 , &B01100011 Data &B10100010 , &B10100000 , &B00101011 , &B00100000 , &B00100010 Data &B00001000 , &B01011011 , &B00010100 , &B00010010 , &B01000011 Data &B10000010 , &B10000000 , &B00001011 , &B00000000 , &B00000010 Data &B11111111

Прошиваем почти 2 килобайта кода в мк и наблюдаем как только-что ожившее устройство начало служить человеку.
Чесно сказать, я испытываю невероятное удовольствие от того, что могу создать нечто такое, что для многих далёкое и не понятное)
Так выглядит устройство без корпуса, корпус буду делать после написания статьи:

И так, часы готовы, а как они работают? Это я демонстрирую в первой половине этого видео (не прошу подписки или чего-то ещё, просто материал)

Заключение

Таким образом, за 2 дня я сделал устройство, которое покажет мне, сколько мне осталось заниматься одним делом и переходить к другому, когда пора идти, или начать что-то важное.
Ну а на этом всё, спасибо тем, кто дочитал до конца, успехов вам в ваших проектах, и как говорится: «треска вам, 47, и до встречи на других частотах! QRZ..»

Часы с подсветкой — Готовые проекты — — Сообщество

Схема представляет собой простые электронные часы, которые во время работы интересным образом управляют двоеточием в дисплее и подсветкой «внутри» себя.
Благодаря несложной конструкции она наверняка привлечет внимание юных электронщиков.

                                           Элементы схемы

                               

Принципиальная схема приведена на рисунке 1. Сердцем схемы является микроконтроллер
ATtiny2313,который управляет четырехразрядным 7-сегментным дисплеем (c OA) и  тремя кнопками для установки времени. Катоды сегментов подключены к соответствующим выводам микроконтроллера через резисторы, ограничивающие ток, а аноды управляются с помощью транзисторов Q2-Q5. Кварцевый резонатор Ql обеспечивает точность часов.
 Дисплей DIS1 имеет выводы DTA и DTC. Это анод и катод светодиодов,составляющих двоеточие дисплея (см. рис)

                                      

Вывод 15 микроконтроллера — это выход ШИМ.  Он  запрограммирован на плавное временное увеличение и уменьшение наполнения выходного сигнала. Как видно по схеме к нему подсоединен вывод DTA дисплея и катод LED1. Светодиоды DTA->DTC зажигаются при подаче на них положительного сигнала,а LED1- при подаче сигнала ШИМ близкого к нулю. Мы получаем красивый эффект плавного загорания и плавного затухания (попеременно) вышеупомянутых светодиодов.

 Часы могут питаться от любого источника с напряжением мин. 4,5 В. В случае источника с более высоким напряжением (например, 9 В) используется стабилизатор IC2.

                                                 Изготовление часов . ..

не должно вызвать больших затруднении. Расположение элементов показано на рис.2, а печатная плата в формате Sprint-Layout 6.0 находится в архиве. Имееся два варианта печатных плат: Первый вариант-с выводными R и C. Второй вариант — те же C и R в СМД исполнении.  LED1 лучше взять синего или белого цвета. Микроконтроллер устанавливается на панельку. Дисплей также ставится на панельку (см. фото 1),вырезанную из 14-ножечной панельки.
 

                                             

Теперь о блоке питания.
 Можно использовать USB-порт или другой 5-вольтовый источник. В этом случае стабилизатор IC2 не нужен — ставим  перемычку (закорачиваем две крайние площадки). Если  используется источник питания с более высоким напряжением, нужно припаять стабилизатор.
Затем припаиваем шнур питания. Продевая кабель через отверстия, сделанные для этой цели в плате, мы защищаем его от случайного вытягивания.
  Вы должны запрограммировать микроконтроллер ATtiny2313. Прошивка для него находится в архиве. В дополнение к загрузке программы в память,надо изменить два fuscbits:
отключить деление  тактовой частоты на 8 и выбрать внешний кварцевый генератор в диапазоне 3-8 МГц в качестве источника тактовой частоты. После этих действий мы помещаем процессор на панельку, проверяем  не перепутали ли полярность питания при пайке кабеля и, если все хорошо, ставим дисплей и включаем питание.

 

                                 

                                                   Ввод в работу часов

Часы должны показывать 12.00 после запуска. Можно  сразу наблюдать световой эффект от светодиодов. Чтобы установить время, нажмите верхнюю кнопку S1(SET)  — должны гореть только цифры часа (не цифры минут). С помощью кнопок S2(+) и S3(-) устанавливаем требуемые часы и подтверждаем установку кнопкой S1. Те же операции производим  при установке минут.

                                

Материал взят из журнала Elektronika dla Wszystkich за 2014.04

Часы с термометром на микроконтроллере

Подробности
Категория: Микроконтроллеры
Опубликовано 15. 06.2016 13:34
Автор: Admin
Просмотров: 2142

Простые часы с термометром на микроконтроллере AVR ATtiny2313 с выводом информации на семисегментный индикатор. Часы используют для отсчета времени микросхему DS1307 — часы реального времени и источником резервного питания в 3 В. Температура измеряется при помощи датчика температуры DS18B20.

 Текущее значение времени и температуры происходит поочередно сначала время а потом температура с нтервалом в 4 секунды. Формат отображения времени ЧЧ.ММ (часы,минуты). Первый ноль не отображается. О ходе отсчета времени сигнализирует мигающая точка.

 Точность отображения температуры составляет десятые доли градуса. Погрешность в интевале температуры от -10 до 85 градусов составляет порядка +/- 0.5. В другом диапазоне точность уже +/- 2 градуса.

Температура замеряется 1 раз в минуту. Измеренное значение отправляется в память контроллера в которой может хранится пять послених измеренных значения. Измеренная температура округляется до целого значения. На дисплее имеются специальные символы повашения температуры (стрелка вверх) и понижения температуры (стрелка вниз), которые показывают как изменилась температура повисилась она или понизилась.

 Если нажать на кнопке «меньше» то на дисплее сразу отобразится время. Если кнопку «больше» то отобразится температура последнего измеренного значения и начнется новый процесс измеерения температуры и новое значение отобразиться на дисплее в этом случае точность составит десятые доли и в таком формате будет отображатся в течении минуты. Если датчик температуры неисправен или отсутсвует подключение то будет оторажаться только время.

Схема часов с термометром на микроконтроллере

 

Представленные схемы отличаются только общим выводом индикатора анод и катод. Индикаторы работают в динамической индикации. Динамическая индикация раелизована программно. Каждый семисегментный индикатор включается с интервалом 100 раз за 1 секунду. остальное время выключен. 

Прошивка для микроконтроллера

В архиве имеются файлы Proteus и сама прошивка написана на ассемблере. Прошивка может работать для двух вышеприведенных схем, для схемы с индикатором с общим катодом и схемы индикатора с общим анодом. При прошивке микроконтроллера важно выствыить fuse-биты: CKSEL3, CKSEL1, CKSEL0, SUT0, BODLEVEL1, BODLEVEL0.

Скачать: прошивка микроконтроллера

Вход в режим усановки времени осуществляется нажатием и удерживанием кнопки «ввод». После того как пройдет 3 секунды начнется режим установки минут. Для того чтобы устаноыить новое значение времени нужно использовать кнопки «больше» и «менеше». Для того чтобы перейти в режим установки часов необходимо нажать на кнопку «ввод». Для того чтобы сохранить выбранное время нужно также нажать и удерживать кнопку «ввод» после этого программа выйдет из режима установки времени. Если после этих всех операций в течении 10 секунд не будет нажата какия нибудь кнопка то часы перейдут в рабочее состояние и новое значение времени не будет сохраненно.

Для устройства необходимы две печатные платы из одностороннего стеклотекстолита который имеет размеры 50 на 100 мм, на одной плате устанавливаются индикатор с кнопками, а на другой сами часы. Равзодка платы в формате SpringLayout.

Индикатор или дисплей собран на двух семисегментных индикаторах FYD-8021BS-11, каждый имеет 2 разряда и имеют общий анод.

Вместо указаных на схеме вернхних включающих транзисторов платы можно использовать другие к примеру KT361B.

Исходник статьи: Часы-термометр

  • < Назад
  • Вперёд >
Добавить комментарий

Часы на здоровенных семисегментниках

Когда я начинал свое знакомство с микроконтроллерами, сразу собрал часы по схеме из интернета

схема из интернета


Под рукой был небольшой 4-х символьный семисегментник с общим анодом, который с расстояния 3 метра было не очень хорошо видно, хотелось большего, и я откопал эти семисегментники на али. Пошастав по форумам удалось найти способ подключить большие семисегментники с напряжением питания 7.5 вольт к микроконтроллеру, после чего я сразу же заказал их.

Сначала часики выглядели так:

Немного о схеме. Время задает микросхема ds1307, это часы-календарь, которые работают даже при отключении основного питания благодаря батарейке на 3 вольта. На такой батарейке они могут протикать года два точно. Тактируется микросхема обычным часовым кварцем. Микроконтроллер attiny2313 управляет семисегментником, а так же опрашивает микросхему ds1307, выводя время на дисплей.

Основная проблема внедрения больших семисегментников — их повышенное напряжение питания, им требуется 7.5 в, а вся схема работает от 5 вольт.

вот здесь решение данной проблемы:

Пока ехали индикаторы родилась такая вот схемка, работающая без проблем в протеусе.
И вот наконец они приехали!

фоточки

все индикаторы оказались целыми и работоспособными. Выбрал красный цвет, потому что он меньше мешает мне спать

Задняя сторона. распиновка старндартная, указана на страничке товара, проблем с подключением не возникло

Для начала построил схему на макетной плате.

Всё худо-бедно заработало, протикало так пару дней, и я решил спаять все капитально на плату. После извращений с разводкой в протеусе родилось вот это:

фоточки

принтера у меня нет, тренируюсь на листике, потом маркером на плату

красота

после купания в хлорном железе. Вышло не очень, но функции выполнять будет

Запаял все компоненты на плату. Детали старался разместить так, чтобы они скрылись за индикаторами, места между индикатором на стойках и платой много, поэтому все вышло аккуратно. Индикаторы съемные.

Первое включение, завелись сразу, все работает, нигде не дымит

Теперь намного лучше, часы видно и днем, и ночью, притом ночью они не мешают спать своим светом.

Традиция говорите?

Простые часы на микроконтроллере AVR

Схема и программа очень простых часов на микроконтроллере AVR с использованием микросхемы реального времени DS1307

Доброго дня уважаемые радиолюбители!
Приветствую вас на сайте “Радиолюбитель“

Сегодня, уважаемые радиолюбители, вашему вниманию предлагается очень простая схема часов на микроконтроллере AVR и часов реального времени с последовательным интерфейсом I2C DS1307.

Конструкция собрана на микроконтроллере ATyni26 (просто именно этот МК был под рукой). Но вы можете применить любой другой МК, главное чтобы у него было 13 свободных входов – 11 для вывода текущего времени на четырехразрядный семисегментный светодиодный индикатор и 2 вывода – на кнопки установки и коррекции времени.

Схема часов:

В схеме применены следующие детали:
— Микроконтроллер – ATyni26 в DID корпусе
– Часы реального времени – DS1307 в DIP корпусе
– Кварц – 32,768 кГц, с входной емкостью 12 пф (можно взять с материнской платы компьютера), от этого кварца зависит точность хода часов
– резервное питание DS1307 – 3 вольтовый литиевый элемент CR2032
– 4-разрядный семисегментный светодиодный индикатор – FYQ-5641UB -21 с общим катодом (ультраяркий, голубого цвета свечения)
– все транзисторы – NPN-структуры, можно применить любые (КТ3102, КТ315 и их зарубежные аналоги), я применил ВС547С
– микросхемный стабилизатор напряжения типа 7805
– все резисторы мощностью 0,25 ватт
– полярные конденсаторы на рабочее напряжение 50 вольт
Ток потребления устройством составляет до 30 мА.
Для питания конструкции можно использовать любое ненужное зарядное устройство от телефона или подходящий блок питания с выходным напряжением 7-9 вольт.
Общение микроконтроллера с часами DS1307 происходит по шине I2C и организовано программным путем.
Батарейку резервного питания часов DS1307 можно и не ставить, но в этом случае, при пропадании напряжения в сети, текущее время придется устанавливать заново.
Печатная плата устройства не приводится, конструкция была собрана в корпусе от неисправных механических часов. Светодиод (с частотой мигания 1 Гц) служит для разделения часов и минут в конструкции.

Работа программы.
Тактовая частота работы микроконтроллера – 1 мГц (заводская установка, FUSE-биты трогать и устанавливать не надо). Размер программы – 1 килобайт.
При запуске программы происходит:
— запуск таймера Т0 с предустановленной частотой СК/8 и вызовом прерывания по переполнению (при такой предустановленной частоте вызов прерывания происходит каждые 2 миллисекунды)
– инициализация портов (порты РА0-6 и РВ0-3 настраиваются на вывод, РА7 и РВ6 на ввод)
– инициализация шины I2C (выводы РВ4 и РВ5)
– при первом запуске, или повторном запуске при отсутствии резервного питания DS307, проверяется 7 бит (СН) нулевого регистра DS1307 и происходит переход в первоначальную установку текущего времени. При этом, кнопка S1 – для установки времени, кнопка S2 – переход к следующему разряду. Установленное время – часы и минуты записываются в DS1307 (секунды устанавливаются в ноль), а также вывод SQW/OUT (7-й вывод) настраивается на генерацию прямоугольных импульсов с частотой 1 Гц
– разрешается глобальное прерывание
– программа переходит в цикл с опросом копки S2
При переполнения счетчика таймера Т0 программа переходит к обслуживанию прерывания (каждые 2 мс):
– считывается текущее время с DS1307 которое записывается в четыре переменные SRAM (десятки часов, единицы часов, десятки минут, единицы минут)
– подпрограммой вывода текущего времени производится динамическая индикация текущего времени на светодиодном индикаторе
– при нажатии кнопки S2 программа запрещает глобальное прерывание и переходит в подпрограмму коррекции времени (кнопками S1 и S2 устанавливаются десятки и единицы минут, затем, с 0 секунд, нажатием кнопки S2 происходит запись уточненного времени в DS1307, разрешение глобального прерывания и возвращение в основную программу).

Примененные в схеме часы DS1307 позволяют выводить на индикацию секунды, минуты, часы, день недели, дату и год.
Если в схеме вместо светодиодных индикаторов применить LCD дисплей, к примеру WH0802 (двухстрочный, с выводом восьми символов в строке) или аналогичный, то можно организовать полноценные часы с полным выводом текущего времени, а питание устройства организовать от гальванических элементов или аккумуляторных батарей.

Расположение выводов микроконтроллера ATyni26:

Расположение выводов DS1307:

Типовая схема подключения D1307:

Рекомендуемая схема подключения кварца к DS1307:

Общение микроконтроллера с часами реального времени DS1307 организовано программным путем, поэтому в схеме можно применить микроконтроллер у которого нет аппаратного модуля I2C.

Программа написана в среде Algorithm Builder, и если вы используете эту программную среду, то сможете ознакомиться с алгоритмом общения микроконтроллера с другими устройствами по шине I2C (в алгоритме подробно прокомментирована каждая строчка).


  Даташит DS1307 на русском (312.1 KiB, 1,959 hits)

  Часы на ATyni26 в Algorithm Builder (8.2 KiB, 1,889 hits)

  Программа часов на ATyni26 в HEX коде (3.1 KiB, 1,745 hits)

  Схема часов в формате sPlan7 (119.3 KiB, 6,972 hits)



safval/BigLedClock: Led clock on ATTINY2313

Краткое описание

Схема представляет собой не сложный вариант цифровых электронных часов на основе микроконтроллера ATTINY2313. Так же к ней можно подкючить один или несколько датчиков температуры и сделать «метеостанцию».

Для отображения времени используются большие светодиодные семисегментные индикаторы, я использовал SC18-11GWA с высотой цифр 45 мм. Частота обновления информации на индикаторах — 200 Гц. Режимы будильника, таймера и т.п. не предусмотренны. Есть функция цифровой поправки хода, для улучшения точности. Установка времени выполняется с помощью двух кнопок — первая выбирает изменяемый параметр, вторая изменяет его значение. Реализованы стандартные функции управления от кнопок, например ускорение изменения параметра при продолжительном нажатии.

Настройка и использование

Установка времени и поправки

Для цифровой коррекции хода изменяется продолжительность самой первой минуты каждых суток. Ее продолжительность равна 110 минус значение поправки.

Например, если часы за сутки отстали на 5 секунд, то достаточно увеличить значение поправки на 5 чтобы часы шли точно. При пропадании питания эта поправка сохраняется в энергонизависимой памяти.

Эта фукнция позволяет сделать точность хода не хуже 1 секунды за сутки, или около 6 минут за год.

  1. Нажать кнопку SW2 для входа в режим настройки (при включении питания часы автоматически переходят в режим настройки, этот пункт нужет только если часы уже работают и требуется откорректировать их показания).
  2. Кнопкой SW3 установить требуемые показания разряда часов.
  3. Нажать кнопку SW2.
  4. Кнопкой SW3 установить требуемые показания разряда минут.
  5. Нажать кнопку SW2.
  6. Кнопкой SW3 установить предварительно расчитаное значения цифровой поправки хода.
  7. Нажать кнопку SW2 для возврата в режим отображения времни. В момент возврата внутренний счетчик секуд будет обнулен.

Регулировка яркости

Кнопка SW3 также используется для выбора дневного или ночного режима яркости, при нажатии на нее в обычном режиме работы яркость индикаторов уменшается. Востановление яркости произойдет автоматически примерно через 8 часов, или при повторном нажатии.

Использование термометра

Если датчик температуры подключен к микроконтроллеру через кнопку, при ее замыкании, микроконтроллер определяет наличие датчика и выводит на индикатор измеренное значение температуры. При размыкании кнопки происходит возврат в режим отображения времени, если же датчик подключен напрямую или кнопка остается замкнутой в течении длительного времени, то температура отображается в течении 30 секунд, после чего каждые 5 секунд будет происходить переключение режима отображения часы-термометр.

Схема

Кнопка SW1 предназначена для подключения датчика температуры. Можно подключить несколько датчиков, каждый через свою кнопку, например для измерения температуры в доме и на улице, или подключить один датчик напрямую, без кнопки, все эти варианты поддерживаются программой. Кнопками SW2 и SW3 выполняется настройка часов как описано выше. Резисторы R1-R8 должны быть расчитаны на мощность 0,5 Вт. Конденсатор С5 надо разместить на минимальном растоянии от выводов питания микроконтроллера, для дополнительной защиты от помех в схему можно также добавть еще два таких же конденсатора подключеных паралельно выводам питания микросхем D2, D3 (выводы 7 и 14). Точность можно дополнительно настроить изменением емкости конденсаторов С3 и С4.

В качестве датчика температуры исползьзуется микросхема DS18B20 или ее полный аналог. Использовать неполный аналог, например DS1820 нельзя, т.к. из-за различий в протоколе температура будет отображаться неправильно.

Светодиодные индикаторы должны быть с общим катодом, в зависимости от их мощности подбираются номиналы резисторов R1-R8.

Для работы часов необходим блок питания обеспечивающий ток не менее 300 мА при напряжении 12-15 вольт.

Настройка fuses для записи программы в микроконтроллер показана на этом рисунке.

Программа

В папке src две верси прошивки, если датчик температуры не нужен, то лучше использовать версию 2 чтобы микроконтроллер не пытался его опросить.

Изменения в версии 2

  • Добавлена программная регулировка яркости.
  • Добавлена защита от перезапусков при импульсных помехах по питанию
  • Поправка хода храниться в EEPROM.

Изменения в версии 3

  • Добавлена поддержка датчика температуры DS18B20.
  • В режиме отображения времени добавлена мигающая точка между часами и минутами.
  • Отключен автоматический выход из режима установки времени по таймауту.
  • Изменена структура программы.

Часы за два дня на attiny2313 и ds1307

Мотив

Начну с того, что каждый человек живёт во времени, которое, к огромному сожалению, не возможно остановить. И раз мы живём в этом мире, то давайте следить за временем и не упускать ни минуты, тратя её впустую. Для этого я и сделал это чудесное устройство, по имени часы.

Начнём!

На улице встало солнце, я нарисовал плату и почесал на ксерокс, дабы напечатать плату

Дальше те, кто знают как изготавливаются платы поймут, что я перевёл рисунок утюгом на текстолит, протравил, залудил и т.д., а те, кто не в курсе — почитайте в интернете про изготовление плат методом ЛУТ — (Лазерно-утюжная технология).
результат я заснять забыл, но думаю, что качество будет видно и на готовой плате:

Видно места, которые не взялись, но ничего страшного не случилось, отстал только полигон.
Дальше нужно было запаять компоненты, на которых я особо останавливаться не буду, только оставлю их список:

  • AtTiny2313 — 8ми битный микроконтроллер
  • ds1307 — микросхема-счётчик с неплохой точностью
  • часовой кварц на 32.768кГц
  • 2 резистора на 10 КОм
  • 7 резисторов на 10 Ом
  • 1 резистор на 5. 2 КОм
  • 4 резистора на 1 КОм
  • 4 транзистора КТ315 (их современные братья)
  • буззер на 5 вольт
  • 2 тактовые кнопки (угловой монтаж)
  • 4 индикатора (10011-BSR) общий анод
  • тантал на 47 микрофарад
  • и гнездо питания и угловым креплением (диаметр отверстия — 5.1мм, диаметр центр. контакта — 1.5мм)

И пускай вас не смущает длина этого списка, ведь мы собираем устройство на долгие года, и оно должно быть собрано на должном уровне!
Кто желает посмотреть на плату с другой стороны, вот фото:

Программа

Как и все устройства, часы нуждаются в программе. В данном случае программа написана на языке BASIC в BASCOM AVR. Этот язык очень удобный для программирования, так как код понятный, эффективный и занимает не много места на микроконтроллере. Писать программу с ноля я не стал, а взял исходник одной статьи сайта паяльник. Кто интересуется — найдёт, я же просто оставлю доработанный мною код тут:

$regfile = "attiny2313. dat"
$crystal = 8000000

Dim Count As Byte
Dim Number(4) As Integer
Dim Pointmem As Byte
Dim Point As Bit
Dim Mine As Byte
Dim Hour As Byte
Dim Seco As Byte
Config Porta.1 = Output
Porta.1 = 1
Waitms 10
Porta.1 = 0
Waitms 70
Porta.1 = 1
Waitms 10
Porta.1 = 0
Config Portb = Output
Config Porta.0 = Output
Config Portd.2 = Output
Config Portd.3 = Output
Config Portd.6 = Output
Config Sda = Portd.5
Config Scl = Portd.4
Config Pind.0 = Input
Portd.0 = 1
Config Pind.1 = Input
Portd.1 = 1
Config Timer1 = Timer , Prescale = 64
On Timer1 Awake:
Config Timer0 = Timer , Prescale = 64
On Ovf0 Refresh
Dig1 Alias Porta.0 : Dig2 Alias Portd.2 : Dig3 Alias Portd.3 : Dig4 Alias Portd.6
Enable Interrupts
Enable Ovf0
Enable Timer1
Start Timer1

Hour = 0
Mine = 0

If Pind.1 = 0 And Pind.0 = 0 Then
Porta.1 = 1
Waitms 100
Porta.1 = 0
Hour = 0
Mine = 0
Seco = 1

Seco = Makebcd(seco)
I2cstart
I2cwbyte &HD0
I2cwbyte 0
I2cwbyte Seco
I2cstop

Mine = Makebcd(mine)
I2cstart
I2cwbyte &HD0
I2cwbyte 1
I2cwbyte Mine
I2cstop

Hour = Makebcd(hour)
I2cstart
I2cwbyte &HD0
I2cwbyte 2
I2cwbyte Hour
I2cstop
Waitms 1000
Porta. 1 = 1
Waitms 10
Porta.1 = 0
End If

Do
I2cstart
I2cwbyte &HD0
I2cwbyte &H00
I2cstart
I2cwbyte &HD1
I2crbyte Seco , Ack
I2crbyte Mine , Ack
I2crbyte Hour , Nack
I2cstop
Seco = Makedec(seco)
Mine = Makedec(mine)
Hour = Makedec(hour)

If Seco = 80 Then
Seco = 10
Seco = Makebcd(seco)
I2cstart
I2cwbyte &HD0
I2cwbyte 0
I2cwbyte Seco
I2cstop
End If

If Hour > 9 Then
Number(1) = Hour / 10
Number(1) = Abs(number(1))
Else
Number(1) = 20
End If

Number(2) = Hour Mod 10

If Mine > 9 Then
Number(3) = Mine / 10
Number(3) = Abs(number(3))
Else
Number(3) = 0
End If

Number(4) = Mine Mod 10

If Pind.1 = 0 Then
Porta.1 = 1
Waitms 10
Porta.1 = 0
If Mine = 59 Then
Mine = 0
Else
Incr Mine
End If

Mine = Makebcd(mine)
I2cstart
I2cwbyte &HD0
I2cwbyte 1
I2cwbyte Mine
I2cstop
Else

If Pind.0 = 0 Then
Porta.1 = 1
Waitms 10
Porta.1 = 0
If Hour = 23 Then
Hour = 0
Else
Incr Hour
End If
Hour = Makebcd(hour)
I2cstart
I2cwbyte &HD0
I2cwbyte 2
I2cwbyte Hour
I2cstop
End If
End If

Waitms 250
Loop

Awake:
If Point = 1 Then
Porta. 1 = 1
Waitus 10
Porta.1 = 0
End If
Toggle Point
Return

Refresh:
Reset Dig1 : Reset Dig2 : Reset Dig3 : Reset Dig4
Incr Count : If Count > 4 Then Count = 1
If Count = 2 And Point = 1 Then
Pointmem = Number(2) + 10
Portb = Lookup(pointmem , Digits)
Else
Portb = Lookup(number(count) , Digits)
End If
Select Case Count
Case 1 : Set Dig1
Case 2 : Set Dig2
Case 3 : Set Dig3
Case 4 : Set Dig4
End Select
Return

Digits:

Data &B00101000 , &B01111011 , &B00110100 , &B00110010 , &B01100011
Data &B10100010 , &B10100000 , &B00101011 , &B00100000 , &B00100010
Data &B00001000 , &B01011011 , &B00010100 , &B00010010 , &B01000011
Data &B10000010 , &B10000000 , &B00001011 , &B00000000 , &B00000010
Data &B11111111

Прошиваем почти 2 килобайта кода в мк и наблюдаем как только-что ожившее устройство начало служить человеку.
Чесно сказать, я испытываю невероятное удовольствие от того, что могу создать нечто такое, что для многих далёкое и не понятное)
Так выглядит устройство без корпуса, корпус буду делать после написания статьи:

И так, часы готовы, а как они работают? Это я демонстрирую в первой половине этого видео (не прошу подписки или чего-то ещё, просто материал)

Заключение

Таким образом, за 2 дня я сделал устройство, которое покажет мне, сколько мне осталось заниматься одним делом и переходить к другому, когда пора идти, или начать что-то важное.
Ну а на этом всё, спасибо тем, кто дочитал до конца, успехов вам в ваших проектах, и как говорится: «треска вам, 47, и до встречи на других частотах! QRZ..»

Автор: TehnoPingvin

Источник

ATtiny2313 8-битный микроконтроллер AVR — вывод, характеристики, техническое описание, работа, приложения

ATtiny2313 — это высокопроизводительный, но маломощный микроконтроллер на основе архитектуры Microchip 8-бит AVR RISC, который имеет 20 контактов, из которых 18 контактов могут использоваться в качестве контактов ввода / вывода.

ATtiny2313 Конфигурация контактов

Номер контакта

Имя контакта

Описание

1

СБРОС / dW / PA2

Порт A BIt 2 или RESET используется в основном для программирования или dW

2

PD0 / RXD

Двунаправленный контакт ввода / вывода порта D, бит 0 или получение данных UART

3

PD1 / TXD

Двунаправленный контакт ввода / вывода порта D, бит 1 или передача данных через UART

4

PA1 / XTAL2

Порт A BIt 1 или Crystal Out

5

PA0 / XTAL1

Порт A Бит 0 или Кристалл В

6

PD2 / CKOUT / XCK / INT0

Двунаправленный вывод ввода / вывода порта D, бит 2 или внешнее прерывание 0, или выход системных часов, или часы USART для синхронной передачи

7

PD3 / INT1

Контакт двунаправленного ввода-вывода порта D, бит 3 или внешнее прерывание 1

8

PD4 / T0

Двунаправленный вывод ввода / вывода порта D Бит 4 или таймер 0 Выход / счетчик

9

PD5 / OC0B / T1

Двунаправленный вывод ввода / вывода порта D Бит 5 или выходное сравнение совпадают по выходу или таймеру 1, выход / счетчик

10

ЗЕМЛЯ

Контакт заземления MCU

11

PD6 / ICP

Контакт двунаправленного ввода-вывода порта D, бит 6 или входной захват

12

PB0 / AIN0 / PCINT0

Двунаправленный вывод ввода / вывода порта B Бит 0 или аналоговый компаратор 0 или изменение вывода Источник прерывания

13

PB1 / AIN1 / PCINT1

Двунаправленный вывод ввода / вывода порта B Бит 1 или аналоговый компаратор 1 или изменение вывода Источник прерывания

14

PB2 / OC0A / PCIN2

Двунаправленный вывод ввода / вывода порта B Бит 2 или совпадение вывода сравнения A на выходе или изменение вывода Источник прерывания

15

PB3 / OC1A / PCINT3

Двунаправленный вывод ввода / вывода порта B Бит 3 или совпадение вывода сравнения A на выходе или изменение вывода Источник прерывания

16

PB4 / OC1B / PCINT4

Двунаправленный вывод ввода / вывода порта B Бит 4 или сравнение выходного сигнала совпадают с выходом или изменением вывода Источник прерывания

17

PB5 / MOSI / DI / SDA / PCINT5

Двунаправленный вывод ввода / вывода порта B, бит 5 или SPI MOSI, также используется в программировании или I2C SDA или источнике прерывания изменения вывода

18

PB6 / MISO / DO / PCINT6

Двунаправленный вывод ввода / вывода порта B, бит 5 или SPI MISO, также используется в источнике прерывания программирования или смене вывода или трехпроводном универсальном интерфейсе. Вывод данных

19

PB7 / UCSK / SCL / PCINT7

Двунаправленный вывод ввода / вывода порта B Бит 7 или трехпроводной режим Универсальный последовательный интерфейс или I2C SCL или источник прерывания изменения вывода или SCK для программирования

20

VCC

Положительный вывод MCU (+ 5 В)

Характеристики и характеристики микроконтроллера ATtiny2313

ATtiny2313 — упрощенные функции и спецификации

ЦП

8-битный AVR

Количество контактов

20

Рабочее напряжение (В)

1.8-5,5 В

Количество контактов ввода / вывода

18

Модуль АЦП

Нет

Модуль таймера

8 бит (1), 16 бит (1)

Компараторы

1

Модуль ЦАП

Нет

Периферийные устройства связи

1-UART, 2-SPI, 1-I2C

Внешний осциллятор

Есть

Внутренний осциллятор

8 МГц

Программная память (КБ)

2 КБ

Скорость процессора (MIPS)

20 MIPS

байтов RAM

128

Данные EEPROM

128 байтов

Примечание. Полную техническую информацию можно найти в листе данных ATtiny2313 по ссылке внизу этой страницы.

Продукт, альтернативный ATtiny2313

Альтернативные продукты для микроконтроллера ATtiny2313 перечислены ниже —

  1. ATtiny2313A (точная альтернатива с новой версией)
  2. ATtiny417
  3. ATtiny28L
  4. ATtiny48
  5. ATmega88PA
  6. ATmega8A
  7. ATmega8515
  8. ATmega8535
  9. ATmega645A
  10. ATmega6490

Знакомство с ATtiny2313

ATtiny2313 — это высокопроизводительный, но маломощный микроконтроллер на основе архитектуры Microchip 8-бит AVR RISC, который имеет 20 контактов, из которых 18 контактов могут использоваться в качестве контактов ввода / вывода.

Он имеет мощную архитектуру инструкций, которая обеспечивает скорость обработки 1 MIPS на МГц при балансировке энергопотребления при одновременной обработке высокоскоростной производительности. Скорость может достигать 20 MIPS при использовании максимальной частоты 20 МГц. ATtiny2313 также поставляется с функцией отладки на кристалле debugWIRE, внутрисистемным программируемым портом SPI, режимами ожидания с низким энергопотреблением, отключением питания и режимами ожидания. В нем также используется программируемая схема обнаружения пониженного напряжения.

Имеет широкий диапазон рабочего напряжения, от 1 до 1.От 8 В до 5,5 В. Таким образом, его можно использовать для операций на логическом уровне 1,8 В, 3,3 или 5,0 В. Однако работа в диапазоне 0–4 МГц поддерживается входным напряжением 1,8 В для ATtiny2313V. Для частоты до 10 МГц минимальное напряжение требуется 2,7 В для ATtiny2313, а для операций 20 МГц требуется минимальное напряжение 4,5–5,5 В.

На изображении ниже показана подробная схема контактов ATtiny2313.

Подробные характеристики ATtiny2313

ATtiny2313 — подробные характеристики

ЦП

8-битный AVR RISC

Архитектура

8

Размер памяти программ (Кбайт)

2

RAM (байты)

128

EEPROM / HEF

128

Количество выводов

20

Макс. Частота процессора (МГц)

20

Выбор периферийных контактов (PPS)

Внутренний осциллятор

4 МГц

№ компараторов

1

№Операционного усилителя

0

Кол-во каналов АЦП

0

Максимальное разрешение АЦП (бит)

АЦП с вычислением

0

Количество преобразователей ЦАП

0

Максимальное разрешение ЦАП

Внутреннее опорное напряжение

Обнаружение нулевого пересечения

№8-битных таймеров

1

Количество 16-битных таймеров

1

Таймер измерения сигнала

0

Аппаратный таймер ограничения

0

№Выходов ШИМ

4

Максимальное разрешение ШИМ

1024

Угловой таймер

0

Математический ускоритель

№Модуля UART

1

№ модуля SPI

2

№ модуля I2C

1

№ USB-модуля

0

Оконный сторожевой таймер (WWDT)

CRC / сканирование

Генератор с числовым программным управлением

Кап. Сенсорные каналы

4

Сегментный ЖК-дисплей

0

Минимальная рабочая температура (* C)

-40

Максимальная рабочая температура (* C)

85

Минимальное рабочее напряжение (В)

1.8 / (от 2,7 до 10 МГц) / (от 4,5 до 20 МГц)

Максимальное рабочее напряжение (В)

5,5

Возможность высокого напряжения

Программирование микроконтроллера AVR Микроконтроллеры

PIC могут быть запрограммированы с помощью различного программного обеспечения, доступного на рынке.Есть люди, которые до сих пор используют язык ассемблера для программирования микроконтроллеров AVR. Приведенные ниже сведения относятся к наиболее продвинутому и распространенному программному обеспечению и компилятору, которые были разработаны самой Atmel (теперь Microchip).

Для программирования микроконтроллера AVR нам понадобится IDE (интегрированная среда разработки), в которой происходит программирование. Компилятор, в котором наша программа преобразуется в читаемую форму MCU, называемую HEX-файлами.

IDE: Atmel Studio 7

Компилятор: AVR и ARM Toolchains

Microchip предоставила все эти два программного обеспечения бесплатно.Их можно скачать прямо с их официальной страницы. Я также предоставил ссылку для вашего удобства. После загрузки установите их на свой компьютер. Если у вас возникнут проблемы, вы можете опубликовать их в комментарии ниже.

Чтобы сделать дамп или загрузить наш код в AVR, нам понадобится устройство под названием ATAtmel-ICE. Программатор / отладчик ATATmel — ICE — это простой внутрисхемный отладчик, который управляется ПК с программным обеспечением Atmel Studio на платформе Windows.Программатор / отладчик ATAtmel-ICE является неотъемлемой частью набора инструментов разработчика. Базовая схема программирования ATtiny2313 показана ниже.

Помимо этого официального программатора, пользователи также используют USB ASP AVR Programming Device для недорогих программных решений.

В дополнение к этому нам также понадобится другое оборудование, такое как плата Perf или макет, паяльная станция, микросхемы AVR, кварцевые генераторы, конденсаторы и т. Д.

Компоненты, связанные с АРН

USB ASP AVR программатор, плата для разработки AVR, кварцевые генераторы, конденсаторы, адаптер 12 В, регулятор напряжения 7805.

2D Модель

Размеры ATtiny2313 показаны ниже —

Учебное пособие по

AVR — Предохранители

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

Комментариев? Предложения? Напишите на форум!

Вы знаете о флэш-памяти, eeprom и RAM как о частях микросхемы. Я не упомянул, что есть также 3 байта постоянного (под постоянным я имею в виду, что они остаются после отключения питания, но вы можете менять их столько раз, сколько захотите) хранилища, называемого предохранителями. Предохранители определяют, как будет работать чип, есть ли у него загрузчик, с какой скоростью и напряжением он любит работать и т. Д.Обратите внимание, что, несмотря на то, что они называются «предохранителями», они могут быть повторно настроены и не имеют ничего общего с защитой от перегрузки (как предохранители в доме).

Предохранители задокументированы в технических паспортах, но лучший способ проверить предохранители — это посмотреть на калькулятор предохранителей, такой как вычислитель предохранителей avr из проекта palmavr

.

Щелкните эту ссылку в новом окне и выберите ATtiny2313 для расчета предохранителей

Мы будем использовать быструю настройку, поэтому используйте эти меню, а не флажки.

Первый вариант — как тактовая частота микросхемы. Каждый процессор использует часы, часы отслеживают время для чипа, как правило, одна инструкция ассемблерного кода запускается за каждый тактовый цикл. Один на вашем ПК имеет часы, которые работают с тактовой частотой 1 ГГц или выше. Этот маленький чип работает намного медленнее. Если вы посмотрите на меню, вы увидите огромный список опций, но, внимательно присмотревшись, вы увидите, что есть две группы: Clock Source , Clock Startup

Источник тактовой частоты может быть одним из следующих:
Внешняя тактовая частота, Внутренняя тактовая частота 8 МГц, Внутренняя тактовая частота 4 МГц, Внутренняя тактовая частота 128 кГц, Внешний кристалл (0.4-0,9 МГц), внешний кристалл (0,9–3,0 МГц), внешний кристалл (3,0–8,0 МГц)
или Внешний кристалл (8,0 МГц +)

Clock Startup может быть одним из следующих:
14CK + 0 мс, 14CK + 4 мс, 14CK + 65 мс
.

Внешние часы означает, что сигнал прямоугольной формы подается на вывод CLOCK-IN . Это довольно редко, если у вас нет микросхемы, генерирующей часы. Не используйте это, если вы не уверены, что имеете в виду
Internal Clock означает, что внутри микросхемы есть небольшой осциллятор, он не очень точный, но подходит для большинства проектов, у которых нет проблем с точной синхронизацией.Часы меняются в зависимости от температуры и напряжения источника питания. Вы можете выбрать частоту 8 МГц, 4 МГц или 128 кГц. Тактовая частота 128 кГц предназначена для приложений с очень низким энергопотреблением, когда очень медленная работа чипа помогает экономить электроэнергию. Наличие внутреннего генератора означает, что нам не нужно подключать кристалл, и мы можем использовать контакты часов для наших собственных гнусных целей.
Внешний кристалл
Если вам нужна особая тактовая частота, например, 3,58 МГц или 12 МГц, или высокоточные часы, которые не будут дрейфовать с температурой, вам понадобится внешний кристалл или генератор.

Кристаллы

выглядят примерно так: Керамические генераторы выглядят так:

Кристаллы бывают разных упаковок, они могут быть цилиндрическими или больше, чем показано на изображении. В обоих случаях скорость указывается сверху или сбоку, почти всегда в МГц.

Время запуска — это время, в течение которого источник тактовых импульсов должен успокоиться с момента первого включения питания. Всегда выбирайте самую длинную настройку 14CK + 65 мс , если вы не знаете, что вашему источнику тактовых импульсов требуется меньше времени, а 65 мс — слишком долго, чтобы ждать.

По умолчанию микросхемы, которые поставляются с завода, имеют внутреннюю тактовую частоту 8 МГц с запуском 14CK + 65 мс.

Следующая опция — это Clock Out на PortD2 , что в основном означает, что независимо от входного тактового сигнала (внутреннего, внешнего, кварцевого и т. Д.) Прямоугольная волна той же частоты будет появляться на выводе D2 . Это полезно, если вы отлаживаете тактовую частоту или хотите использовать часы для управления другим чипом.

По умолчанию на чипах, которые идут с завода, это отключено.

Этот предохранитель заставляет чип делить тактовую частоту на 8. Итак, если источник тактовой частоты установлен на Internal 8MHz и у вас установлен этот предохранитель, тогда вы действительно будете работать на 1 МГц.

По умолчанию на чипах, которые поступают с завода, эта функция включена.

Этот предохранитель превращает вывод Reset в обычный вывод вместо специального вывода. Если вы включите этот предохранитель, вы больше не сможете программировать чип с помощью ISP .Я бы посоветовал вам никогда не устанавливать этот предохранитель, если вы действительно не хотите.

По умолчанию у микросхем, которые идут с завода, это отключено (то есть сброс включен)

Эти предохранители устанавливают напряжение для включения схемы защиты Brownout . «Понижение напряжения» в этом случае такое же, как когда энергосистема становится чрезмерно облагаемой налогом из-за того, что тысячи людей используют свои кондиционеры летом: напряжение падает, и радиочасы, возможно, перестают работать.Отключение микросхемы означает, что напряжение питания слишком низкое, чтобы она могла надежно работать с тактовой частотой.

Например, attiny2313 может работать так же быстро на частоте 20 МГц, но только при напряжении питания от 4,5 до 5,5 В. Если напряжение ниже этого, он может работать нестабильно, стирая или перезаписывая RAM и EEPROM. Также может запускаться случайный фрагмент флеш-программы. Чтобы этого не произошло, установите напряжение пониженного напряжения на 4,3 В, затем, если напряжение упадет, микросхема отключится до тех пор, пока напряжение не вернется.Затем он будет сброшен и начнется заново.

Если микросхема предназначена для работы при 5 В, установите пониженное напряжение на 4,3 В. Если микросхема может работать до 3,3 В, вы можете установить снижение напряжения на 1,8 В. Если микросхема является микросхемой, «совместимой с низким напряжением», такой как attiny2313V (которая может работать до 1,8 В, если она работает на частоте 4 МГц или меньше), вы можете установить снижение напряжения на 1,8 В. Вы можете прочитать классы скорости и напряжения на первой странице таблицы данных.

По умолчанию микросхемы, которые поступают с завода, не имеют функции обнаружения потемнения, однако я предлагаю вам установить ее, если можете.Если у вас есть загрузчик или вы храните данные в EEPROM, вы должны установить BOD!

текст

Xtal работа контроллеров ATtiny

Xtal работа контроллеров ATtiny Дорожка: Главная => Обзор AVR => Приложения => ATtiny с кристаллами Diese Seite на немецком языке:
Применение однокристальных контроллеров
AVR AT90S, ATtiny, ATmega и ATxmega
Для синхронизации ATtiny с кристаллом
Простая задача: вместо этого нужно тактировать ATtiny с помощью внешнего кристалла. использования неточного внутреннего RC-генератора в качестве источника синхронизации.И из этот источник синхронизации должен быть точным прямоугольником с желаемой частотой. сгенерировано. Простая задача, но есть много препятствий и вещей, которые вы можете сделать неправильно или не работают должным образом. Вот несколько советов, как это сделать.

И это был бы такой кристаллический делитель без микроконтроллера. Предназначен для деления кристалла 15 МГц на 68:

  • Кварцевый генератор, состоящий из двух вентилей И-НЕ, генерирует часы сигнал.
  • Считается в 8-битном счетчике.
  • При достижении 68, которое обнаруживается логическим элементом И-НЕ, триггер D-типа запускается, инвертированный выход которого привязан к входу данных. Положительный выход передает желаемый сигнал с точной 110,294 кГц.
  • С небольшой задержкой, комбинацией RC и другим логическим элементом NAND, счетчик очищается до поступления следующего сигнала счета.
Всего необходимо три 14-контактных ИС и 42 контакта. обработано.

Версия микроконтроллера ATtiny25, делающая то же самое, умещается в одном одиночная 8-контактная ИС, из которых нужно обрабатывать только шесть.Весь дизайн внутри контроллера, который выполняет все это несколькими строками кода ассемблера.

1 Генератор прямоугольников, управляемый xtal

Вам нужно иметь точный поворот прямоугольника? Просто сделайте это:
  1. Для синхронизации ATtiny с внешним кристаллом.
  2. Используйте внутренний таймер / счетчик в режиме CTC (сброс таймера при сравнении) и разделите часы на целое число.
  3. Запишите этот делитель минус 1 в регистры сравнения таймера, с 8-битным таймером для сравнения A, с 16-битным таймером для сравнения A или в ICR (регистр захвата ввода).
  4. Настройте выходные контакты OCnA и / или OCnB для включения режима сравнения совпадений.
  5. Настройте выходные контакты OCnA и / или OCnB как выходы, установив их биты направления данных.
  6. Запустите таймер, записав биты предварительного делителя в TCCR0B.
Больше ничего делать не нужно, никаких прерываний или какого-либо дополнительного кода. выполняется, поэтому переведите контроллер в спящий режим или войдите в неопределенный цикл. Таймер / счетчик берет на себя управление и генерирует красивую и точную прямоугольник качели.

Таким образом, из одного монокристалла можно получить разные частоты. А также очень гибкий: просто измените разделитель. С помощью электронной таблицы OpenOffice здесь доступны все разные кристаллы В коммерческом отношении могут быть рассмотрены:

  • введите частоту, которая будет сгенерирована в ячейку D3,
  • , если вы хотите установить предварительный делитель частоты не на 1, а на более высокое значение просто введите настройки бита предварительного делителя частоты CLKPS ,
  • считывает значение предварительного делителя таймера / счетчика и делитель CTC для каждого xtal из столбцов B и C (для 8-битного TC) соответственно. из столбцов G и H (для 16-битного TC), если это «-«, кристалл не может быть для этого использован,
  • частота, которая действительно генерируется, может быть считана из столбцов D соотв. Я,
  • разница между реально генерируемой частотой и желаемой можно прочитать из столбца E соотв. J в процентах по сравнению с желаемым (нет +/-, только абсолютная разница) или в столбцах F соотв. K в Гц.
Клетки со знаком «-» отмечают невозможные комбинации.

Если ячейка E6 соотв.J6 равно 0,00, тогда может быть сгенерирована точная желаемая частота. хотя бы с одним кристаллом. Какие из них (и те, у которых меньше всего разница, если ни одна из них не равна нулю) видно по зеленому цвету различия в столбцах E соотв. J. Кристаллы с разницей менее 0,1% желаемая частота отображается на желтом фоне.

Убедитесь, что вы вычли единицу из значения делителя CTC, прежде чем записывать это в регистр сравнения таймера / счетчика.

2 Аппаратное обеспечение

Это полное железо. Два керамических конденсатора по 18 пФ в любом случае необходимо следить за тем, чтобы кристалл раскачивался.

Выходной сигнал доступен на PB0 (OC0A) и, если это необходимо и запрограммировано, на PB1 (OC0B). Оба выхода могут быть обратно фазированными или могут быть фазированы на другой угол.

На практике, с подключенным кристаллом 15 МГц, кристалл работал только запускается ниже рабочего напряжения 4 В. Выше этого кристалла запускается на несколько тактов, но затем перестал работать. Это не изменилось, если Я разделил напряжение на выходе XTAL2 на два резистора перед подачей питания на xtal.Если осциллятор работает, например, 2,7 В, увеличение рабочего напряжение выше 4 В (до 5,5 В) не прекращало колебания. Так что это простая проблема с запуском. Если вы используете рабочее напряжение 5 В, убедитесь, что ATtiny имеет напряжение 3,3 В или ниже, например с резистором, стабилитрон и электролитический конденсатор. Или приготовьте специальный раствор чтобы убедиться, что колебание осциллятора стабильно, перед увеличением рабочего Напряжение.

Я не нашел подобных сообщений о таком глючном оборудовании.к счастью Ко мне был подключен большой конденсатор, поэтому я заметил несколько первых колебаний. В зависимости от количества уже выполненных инструкций порты OCR0A и OCR0B были либо выходными, либо нет. Подобная ошибка может приводить к вы сумасшедший, поэтому не ожидайте, что оборудование будет работать так, как запланировано, желательно и как описан в справочнике устройства.

Дополнительная подсказка для использования подстроечного конденсатора для изменения кристалла частота немного. Это работает только на входе XTAL1. Не ждите большой эффект, можно достичь только нескольких Гц и менее 1 кГц.Увеличение значения конденсатора приводят к увеличению частот, по крайней мере, с моими 15 МГц кристалл. Внимание: слишком большой колпачок может остановить раскачивание кристалла.

3 Замена предохранителей

По умолчанию ATtiny работает со своим внутренним RC-генератором, деленным на 8. Чтобы включить внешний кристалл, необходимо заменить предохранители следующим образом:
  1. CLKDIV8 должен быть выключен, оставьте этот предохранитель включенным только в том случае, если вы действительно хотите разделить частоту кристалла на 8.
  2. CLKSEL необходимо заменить на внешний низкоскоростной . кристалл (e.грамм. с 32,768 кГц) или на внешний кристалл осциллятор . Несмотря на то, что Studio 4.19 не предлагает внешний кристалл он работает, чтобы установить предохранитель на внешний кварцевый генератор хотя там только кристалл прикреплен. Пункты меню в Studio 4.19 сбивает с толку, потому что позволяет только низкоскоростной кристалл.
Следует соблюдать особую осторожность, если вы используете кристалл 32,768 кГц. До Эта замена предохранителя обеспечивает выполнение следующих отдельных шагов:
  1. Уменьшите частоту ISP ниже 8 кГц.Если у вашего программиста нет такого варианта, откажитесь от этого на столь раннем этапе.
  2. Отключить предохранитель CLKDIV8 .
  3. Выберите низкоскоростной внешний кварцевый вариант с длительным запуском процедура.
Дополнительная проблема заключается в том, что Studio отказывается программировать флэш-память или EEPROM. с частотами ISP ниже 5 кГц. Поскольку клоны STK500 не предлагают Частота интернет-провайдера от 5 до 8 кГц вы не сможете запрограммировать ATtiny. Клоны AVRISP-MKII предлагают частоту 6 кГц, и это нормально.

Если вы забудете очистить предохранитель CLKDIV8, ваш ATtiny будет недоступен больше, потому что Studio отказывается программировать флэш-память или память EEPROM с помощью тактовая частота менее 5 кГц. В этом случае только параллельное программирование высокого напряжения может использоваться для оживления чипа (что возможно с STK500).

Если вам нужны не прямоугольники, а чистая синусоида, вам придется отфильтровать эти прямоугольники с сетью фильтров RC.

Такие RC-фильтры, здесь одноступенчатые, глушат или подавляют более высокие частоты. Их амплитуда падает тем быстрее, чем выше частота.Здесь R = 100 кОм и RC-фильтр C = 3 мкФ в действии. Первая гармоника прямоугольника на 3 Гц уже немного затухает, результат виден на верно.

Это еще не похоже на синус, но это тоже не прямоугольник.

Если мы инвестируем второй R и второй C того же размера, мы получаем форма волны, которая уже ближе к синусоиде.

Еще больше синусоиды: 3-ступенчатый RC-фильтр в действии. Зеленая кривая на конец фильтра очень похож на синусоидальную волну.

Обратите внимание, что на каждом этапе мы теряем некоторую амплитуду. Здесь он падает от 0,79 В pp до 0,32 В pp , приблизительно с коэффициентом 2.

Это тот же фильтр с четырьмя ступенями и напряжением на всех четырех конденсаторы.

Если вам нужна более высокая амплитуда, выберите конденсатор или резистор меньшего размера. Это конденсатор емкостью 1 мкФ, в три раза меньше.

Тем, кто хочет играть с разнообразными параметрами (количество этапов, резисторы и конденсаторы и др. ) могу сделать это с моим Lazarus-Pascal программное обеспечение, которое я скомпилировал для Win64 как исполняемый здесь (упаковано). Если вам нужен Исходный код Lazarus, а затем сообщите мне.

Если запустить исполняемый файл, это выглядит так.
Если вы выберете комбинацию RC из двух полей выбора в нижнем левом окне эта комбинация вычисляется и отображается. Выпадающий переключатель N позволяет уменьшить и увеличить количество ступеней RC. Если вы нажмете на цветные кнопки, вы можете выбрать цвет кривой.если ты выберите цвет белый , кривая рассчитывается, но не отображается.

Практически все параметры можно отрегулировать. Если вы нажмете на поле ввода становится желтым. Вы можете редактировать запись. если ты хотите закончить редактирование, просто нажмите клавишу Enter и применяется новый параметр. Если ваша запись неверна понял, поле ввода станет красным.

Поля ввода понимают сокращения для кратных, например как k или K , или M , а также m , u для µ, n или p .

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

Если вы нажмете на отображаемое изображение, вы можете сохранить изображение как файл PNG- или BMP-графики.

Обратите внимание, что если вы выберете определенные небольшие комбинации RC для низкочастотный вход, программное обеспечение моделирования обнаруживает числовые переполнения. Выберите несколько более высоких R и / или C в тот случай.

5 Программное обеспечение и загрузки

Программное обеспечение ассемблера можно скачать с здесь.Список задокументирован ниже.

Дополнительно можно загрузить следующие документы OpenOffice:

Исходный код:
 
;
; *********************************
; * Осциллятор Xtal с ATtiny25 *
; * (C) 2019, автор: DG4FAC *
; *********************************
;
.nolist
.include "tn25def.inc"; Определить устройство ATtiny25
.список
;
; **********************************
; АППАРАТНОЕ ОБЕСПЕЧЕНИЕ
; **********************************
;
; Устройство: ATtiny25, Корпус: 8-контактный PDIP_SOIC
;
; _________
; 1 / | 8
; СБРОС o-- | СБРОС VCC | --o +5 В
; XTAL1 o-- | PB3 PB2 | --o
; XTAL2 o-- | PB4 PB1 | --o Osc out 2
; 0 V o-- | GND PB0 | --o Osc out 1
; 4 | __________ | 5
;
;
; **********************************
; А Д Й У С Т А Б Л Е К О Н С Т
; **********************************
;
. equ clock = 15000000; 15 МГц, ваша xtal частота
.equ fOut = 100; Ваша желаемая частота
.equ cClkPresc = 1; Ваше значение предделителя часов
.equ cUseOC0B = 1; Используйте OC0B как обратный выход
;
; **********************************
; Ф И Х Е Д К О Н С Т А Н Т С
; **********************************
;
; Получите значение предварительного делителя из часов и частоты
.if (часы / fOut / cClkPresc / 2) <= 256
  .equ cPresc = 1
  .equ cCsPresc = 1
  .еще
  .if (часы / fOut / cClkPresc / 2/8) <= 256
    .equ cPresc = 8
    .equ cCsPresc = 2
    .еще
    .if (часы / fOut / cClkPresc / 2/64) <= 256
      .equ cPresc = 64
      .equ cCsPresc = 3
      .еще
      .if (часы / fOut / cClkPresc / 2/256) <= 256
        .equ cPresc = 256
        .equ cCsPresc = 4
        .еще
        .if (часы / fOut / cClkPresc / 2/1024)> 256
          .error "Слишком низкая желаемая частота!"
          .еще
          .equ cPresc = 1024
          .equ cCsPresc = 5
          .endif
        .endif
      .endif
    .endif
  . endif
;
; Вывести делитель и сравнить значение
.equ divider = (((((часы + fout / 2) / fOut + cClkPresc / 2) / cClkPresc + cPresc / 2) / cPresc) +1) / 2
.equ cCtc = делитель - 1; Значение CTC
;
; **********************************
; Р Е Г И С Т Е Р С
; **********************************
;
.def rmp = R16; Многоцелевой регистр
;
; **********************************
; М А И Н П Р О Г Р А М И Н И Т
; **********************************
;
.cseg
.org 000000
;
Основной:
  sbi DDRB, DDB0; Выход направления PB0
  cbi PORTB, PORTB0; Очистить выход OC0A
  ldi rmp, cCtc; Записать значение CTC
  out OCR0A, rmp; для сравнения регистра A
  .if cUseOC0B == 1
    sbi DDRB, DDB1; Выход направления PB1
    sbi PORTB, PORTB1; Установить выход OC0B
    out OCR0B, rmp; и B
    ldi rmp, (1 << WGM01) | (1 << COM0A0) | (1 << COM0B0); Режим CTC, переключение OC0A и OC0B
    .еще
    ldi rmp, (1 << WGM01) | (1 << COM0A0); Режим CTC, переключить OC0A
    .endif
  out TCCR0A, rmp; в порту управления TC0 A
  ldi rmp, cCsPresc; Настройка предделителя
  выход TCCR0B, об / мин; в порту управления TC0 B
  ldi rmp, 1 << SE; Включение сна, режим ожидания
  выход MCUCR, об / мин
Петля:
  спать ; Идти спать
  rjmp loop
;
; Конец исходного кода
 
 
Это симуляция с указанными выше настройками программного обеспечения.

© 2019 Автор: http://www.avr-asm-tutorial.net

Atmel AT90S2313 ATTINY2313 Приложения - Проекты электроники Схемы

Еще лучший ЖК-измеритель на основе Atmel AVR ATTINY861 Довольно хороший ЖК-измеритель на основе AVR ATtiny2313 AT90S2313 Определение LC с помощью генератора резонансной развертки ATtiny23023 ATtiny23023 AT90S-23 AT90S1200A Еще немного... Electronics Projects, Atmel AT90S2313 ATTINY2313 Applications «Проект AVR, проекты микроконтроллеров, схемы pwm,» Дата 2019/08/01

Еще лучший измеритель LC на основе Atmel AVR ATTINY861

Довольно хороший измеритель LC на основе AVR ATtiny2313 AT90S2313

Определение LC с помощью измерения резонансной частоты ATtiny2313 AT90S2313

MAX038 Генератор развертки функций с маркерами ATtiny2313 AT90S1200A

Немного более серьезный измеритель частоты-счетчик Генератор частот ATTiny2313

AT2000 AT2000 9-000 AT2000 9-000 Цифровой измеритель частоты AT2000 AT2000 AT2139 в миллиомметре ATtiny2313 AT90S2313

Цифровой индикатор напряженности РЧ поля ATtiny2313 AT90S2313

Зонд напряженности РЧ поля AT90S1200A

LTD - Недорогое устройство телеметрии; Сканирующий вольтметр ATMega8 с выходом кода Морзе ATMega8

Монитор сигналов

с ЖК-дисплеем ATtiny2313 AT90S2313

Интерфейс терминала

с беспроводным соединителем минимальной массы ATtiny2313 AT90S2313

Сканирующий вольтметр

с беспроводным соединителем минимальной массы ATMega8

9902 ЖК-дисплей с беспроводным ответвителем минимальной массы ATtiny2313 AT90S2313

Крошечные настраиваемые контурные антенны для беспроводного ответвителя минимальной массы

Цифровая беспроводная связь для настольного устройства ATtiny12

RS-232 для канала передачи данных беспроводного прибора ATtiny2313 AT90S2313

Частотомер с беспроводным каналом передачи данных ATtiny2313 AT90S2313

FM-передатчик с кварцевой опорной системой ФАПЧ Управление частотой с использованием LMX1601 ATtiny2313 AT90S2313

1750-метровый низкополосный источник радиочастотной модуляции с амплитудно-модуляцией ATtiny2313 AT90S2313

Двухрежимный AM-приемник прямого преобразования для 1 81. 818 кГц Lowfer ATtiny2313 AT90S2313

AttoBasic Byte-Wide интерпретатор для ATtiny2313 и AT90S2313

AttoBasic AT90S8515-ATMEGA8515 и ATmega163

Программа мониторинга микропрограмм AVR Контроллеры AVR CapART с памятью AVR 9000 на микросхеме 9000 Контроллеры AVR 9000 с памятью AVR 9000 Контроллеры памяти AVR 9000 на микросхеме U000

DS: инструмент для тестирования и разработки интерфейса DS ATtiny2313 AT90S2313

DS: Часы-календарь-будильник с интерпретатором на основе EEPROM и интерфейсом DS ATtiny12

DS: 3-канальный 8-битный ЦАП EEPROM с интерфейсом DS ATtiny12

ATtiny12 Fuse Restorer AT90S1200A

Драйвер EEPROM для контроллеров 24LC64 128 и 256 AVR

8-канальный PWM PWM-код Контроллеры AVR

Последовательный программатор AVR AT90S1200A ATtiny2313 AT90S2313

AVR 8- и 20-контактный адаптер программирования

Адаптер Lazyted ISP

для контроллеров ISP

Lazyted ISP Синхронный демодулятор контура с кодовой синхронизацией ATtiny2313 или AT90S2 313 ATtiny12

Аналоговый мультиплексор на полупроводниковых конденсаторах для микроконтроллеров Контроллеры AVR или другие с трехсторонними I-контактами

Экспериментальный синхронный демодулятор 1 кГц ATtiny2313 AT90S2313

Таймеры полива сада Вентили и счетчики; нет микроконтроллера

Дверной звонок Privacy Sentry ATtiny12

Модификация будильника с кодом Морзе с ATtiny2313-AT90S2313

Источник: cappels. org ATTINY2313 AT90S2313 Альтернативная ссылка на приложения:

СПИСОК ССЫЛКИ ДЛЯ ЗАГРУЗКИ ФАЙЛОВ (в формате TXT): LINKS-1238.zip

Программирование битов предохранителей AVR - настройки генератора

Думаю, многие из вас были сбиты с толку при программировании предохранителей AVR. Я получаю много вопросов новичков, например: «Я программировал Atmega8, но он не работает». Тогда мой стандартный ответ: «Вы трогали биты конфигурации?», И если да, то я почти на 90% уверен, что он сделал это неправильно.Большинство из них ошибочно понимают, что запрограммированный бит предохранителя в конфигурации следует оставлять неотмеченным и наоборот. Давайте посмотрим на широко используемое программное обеспечение для программирования - PonyProg.

Первое, что вы делаете перед программированием микросхемы, это установка битов конфигурации (Atmega8 на картинке):

В первую очередь следует обратить внимание на источники тактовой частоты. Источниками синхронизации Atmega8 управляют четыре бита: CKSEL0, CKSEL1, CKSEL2, CKSEL3.

Как вы, возможно, уже знаете, Atmega8 может иметь 4 разных источника синхронизации:

  • Внешний кристалл или резонатор;
  • Внешний низкочастотный кристалл;
  • Внешний RC-генератор или откалиброванный внутренний RC-генератор;
  • Внешний источник синхронизации.

В таблице вы видите соответствующие настройки CKSEL0..3

Как вы могли заметить, для большинства из них осталось несколько настроек.

Внешний кристалл или резонатор

Внешний кристалл или резонатор

может быть установлен от 1010 до 1111 (обратите внимание, что запрограммирован «0», а «1» означает незапрограммированный). Эти диапазоны оставлены для выбора времени запуска микроконтроллера для стабилизации характеристик генератора перед первой командой.

Если вы подключаете внешний кварцевый генератор или резонатор к XTAL1 и XTAL2

Появляется еще один бит предохранителя CKOPT. Этот бит выбирает два разных режима усилителя генератора. Если CKOPT запрограммирован (не отмечен), тогда осциллятор колеблется с полным выходом rail-to-rail. Это удобно, когда среда зашумлена или использует XTAL2 для управления другим микроконтроллером или буфером. Но с другой стороны, для этого требуется больше мощности. Если CKOPT не запрограммирован (отмечен), то раскачка меньше, и энергопотребление уменьшается. Обычно, если резонатор имеет частоту до 8 МГц, оставьте CKOPT (отмечено = не запрограммировано) и запрограммировано (не отмечено флажком) выше 8 МГц.В таблице вы видите выбираемые режимы кварцевого генератора:

битов CKSEL0, SUT0 и SUT1, в этом случае, используются для выбора времени запуска микроконтроллера - сколько тактов нужно ждать перед выполнением первой команды. Эти настройки необходимы для обеспечения стабильности керамических резонаторов и кристаллов.

Примечание 1. Это быстрое время запуска - не подходит для кристаллов;

Примечание 2. Наиболее часто используется с керамическими резонаторами для обеспечения стабильного запуска.Это нормально для использования с кристаллами, но устройство не работает на максимальной частоте.

Итак, если вы хотите стабильного запуска системы, лучше оставить CKSEL0, SUT0 и SUT1 запрограммированными (не отмеченными флажками), что означает время запуска около 65 мс.

Генератор низкой частоты

Для CKSEL0, CKSEL1, CKSEL2, CKSEL3 установлен только один бит - 1001 (не отмечено, отмечено, отмечено, не отмечено) для низкочастотного генератора. Низкочастотный кристалл - это типичный тактовый кристалл с частотой 32768 кГц.Основными опциями для этого режима являются установка времени запуска кристалла с помощью предохранителей SUT0 и SUT1.

Примечание 1. Менее стабильный запуск.

Внешний RC-генератор

Частота в этом режиме рассчитывается по формуле f = 1 / (3RC), в то время как C должно быть не менее 22 пФ. Если CKOPT запрограммирован (не отмечен), тогда включен внутренний конденсатор 36 пФ между XTAL1 и GND, тогда нужен только резистор.

..

И снова таблица режимов работы:

И время запуска:

Примечание 1. не используйте эту настройку, когда частота близка к максимальной.

Калиброванный внутренний RC-генератор

Калиброванный внутренний RC-генератор довольно часто используется, поскольку не требует каких-либо внешних компонентов и может обеспечивать фиксированные тактовые частоты 1, 2, 4 и 8 МГц. Этот режим выбирается путем программирования битов предохранителей в диапазоне от 0001 до 0100. Оставьте бит CKOPT незапрограммированным для этого режима (отмечен).

Режимы работы:

Примечание 1. по умолчанию этот параметр выбран для всех Atmega8 и таблицы параметров запуска:

Примечание 1. по умолчанию эта опция выбрана для всех Atmega8

О калибровке внутреннего RC-генератора читайте в техническом описании устройства.

Внешние часы

Внешние часы - это основная ошибка, которую делают новички при запуске своих проектов. Чтобы включить внешний источник синхронизации, вы должны оставить биты CKSEL0, CKSEL1, CKSEL2, CKSEL3 незапрограммированными - это означает, что они отмечены. Люди делают ошибки, проверяя их и думая, что они включают внешние кристаллические резонаторы, а затем задаются вопросом, почему это не работает.

И снова есть таблица запуска внешнего источника синхронизации, управляемая SUT0 и SUT1:

Если вы снимите флажок CKOPT, вы включите конденсатор между XTAL1 и GND.

Примеры правильного программирования источников синхронизации Atmega8

  • Кристалл 8 МГц с медленно нарастающей мощностью:
  • 2 МГц керамический резонатор с быстрым увеличением мощности:
  • Стабильная частота резонатора 32768 кГц при запуске:
  • Внешний RC-генератор 4 МГц с внутренним C, позволяющим быстро нарастать мощность:
  • Если вы хотите получить максимальную отдачу от Atmega: выберите быстрорастущую мощность 16 МГц:

Вы можете найти всю эту информацию в таблицах данных. Но как всегда - люди забывают их читать.

Если есть какие-либо вопросы или проблемы, не стесняйтесь спрашивать.

Самый простой светодиодный будильник с AVR

Самый простой светодиодный будильник с AVR

Введение:
Это, наверное, самый простой из возможных цифровых светодиодных будильников. Цель заключалась в том, чтобы получить как можно больше функциональности в простейшем оборудовании, похожем на одно из Самые простые цифровые часы с AVR.Помимо времени и 3 типов режимов будильника, это устройство также может отображать дату и день недели. Имеет дату с исправлением високосных лет и автоматически переключается на летнее время и обратно. Яркость светодиодного дисплея регулируется.
Описание:
В основе этого будильника лежит микроконтроллер Atmel AVR ATtiny2313A (ATTiny2313, ATTiny2313V). Программа для загрузки и установки битов конфигурации доступна ниже.Он имеет 4-значный светодиодный дисплей. Катоды светодиодных дисплеев подключаются к порту B, анодов к битам 0, 1, 4 и 6 порта D. Использование сверхяркого дисплея позволяет отказаться от обычного транзисторы усиления тока. Дисплей управляется мультиплексом. Он состоит из четырех одноразрядных семисегментных светодиодных дисплеев. с общим анодом, например LD-S056UPG-C (14 мм чистый зеленый). Вторая и четвертая цифры на дисплее перевернуты, так что вторая точка образуют верхнюю точку двоеточия, а точка с четвертой цифрой образует индикатор тревоги.Вращение отображаемых чисел осуществляется аппаратно. (Обратные отрезки a-d, b-e, c-f). Таким образом, порт PB0, например, подключен ко всем сегментам, расположенным вверху. Часы нуждаются в питании около 5В. ATTiny2313 работает до 2,7 В, ATtiny2313A и ATTiny2313V до 1,8 В. При таком низком напряжении дисплей может не работать, но он может пригодиться при добавлении резервного аккумулятора. Потребление при 5 В составляет от 15 до 30 мА, в зависимости от количества горящих сегментов (большая часть потребляемой мощности приходится на светодиодный дисплей). Точность часов контролируется кристаллом 4 МГц. Регулировка C1 и C2 позволяет точно настроить скорость бега (меньшее значение - более быстрый бег). Конденсатор C3 следует разместить как можно ближе к микроконтроллеру IO1.
Управление:
Управление часами осуществляется с помощью 2-х кнопок: «Режим» и «+» . Кнопка «Mode» позволяет переключаться между 3 режимами отображения и 4 ступенями настройки будильника:
• Отображение времени, дня недели и даты.
• Отображение времени и даты
• Отображение только времени
• Установить будильник - часы
• Установить будильник - десятки минут
• Установить будильник - раз в минуту
• Режим будильника - выключен (0) / одиночный (1) / рабочие дни (5) / каждый день (7)
Кнопка «+» позволяет установить будильник в режиме настройки будильника. В режиме времени / дня / даты устанавливает яркость светодиодного дисплея (1/32, 1/16, 1/8, 1/4, 1/2, полная). Индикатор будильника горит, когда будильник включен.Мигает, когда вы находитесь в режиме настройки будильника.
Настройка:
Длительное нажатие «Mode» позволяет вам установить время и дату. Затем вы можете установить: часы, десятки минут, минут, десятки секунд, день недели, день, месяц, год и включить / выключить автоматическое время. Вы проходите через шаги, используя «Режим» . Используйте "+" для установки значения. Автоматическая установка времени (Au) позволяет включить или отключить автоматический переход на летнее время (DST) и обратно.«Au1» = включено, «Au0» = отключено.

Программа для загрузки:
исходный код на Ассемблере (ASM)
скомпилирован в HEX-файле (2028 B)
Как записать программу в AVR описано здесь .

Могу послать вам запрограммированный микроконтроллер. Для дополнительной информации щелкните здесь.

Схема простейшего светодиодного будильника с AVR ATtiny2313A / ATtiny2313V / ATtiny2313.


Установка битов конфигурации.


Часы с включенным будильником


Часы с отключенным будильником


Дата


День недели


Отображать


Видео - тестирование простейшего светодиодного будильника с AVR (здесь индикатор будильника - отдельный светодиод).

Добавлен: 30. 9. 2014
дом

Микроконтроллер Atmel Attiny13a

, запрограммированный с использованием Arduino Ide

Мне показалось, что работать со студией atmel немного сложно.Atmel studio - это тяжелое программное обеспечение, оно занимает слишком много времени на компиляцию, занимает большую часть системной оперативной памяти, библиотеки не очень хорошо объяснены, и, прежде всего, сообщество помощи невелико. Поэтому я решил запрограммировать микроконтроллеры серии atmel attiny с помощью arduino ide. Arduino ide напрямую не поддерживает микроконтроллеры серии atmel attiny. Чтобы создать серию attiny, запрограммированную на arduino ide. Мы должны установить некоторые плагины в системные файлы arduino ide. В этом посте я объясню, как установить плагины серии attiny для arduino ide и какие изменения нам нужно внести в системные файлы arduino, чтобы сделать серию attiny распознаваемой arduino ide.После установки совместимости серии я объясню небольшой проект, который я сделал с использованием микроконтроллера atmel attiny13a. Я запрограммировал микроконтроллер attiny13a на arduino ide с помощью внешнего программатора usbasp. Я также запрограммировал и микроконтроллер attiny13a с автономным Arduino как icsp.

Для установки подключаемого модуля arduino ide для микроконтроллера atmel attiny13a. Загрузите файл, указанный ниже.


Извлеките.rar файл. Вы получите папку с именем attiny13. Найдите каталог установки файлов Arduino. Найдите папку Hardware в каталоге установки arduino. Обычно это C: \ Program Files (x86) \ Arduino \ hardware. Поместите папку attiny13 в папку оборудования. Перезапустите arduino ide, и под опцией плат вы найдете опции attiny13a. Attiny13a будет указан с пятью различными конфигурациями часов. Во всех конфигурациях используется небольшой внутренний источник синхронизации.Я проверил все источники часов, и они работают нормально. Но некоторые пользователи в Интернете говорят, что им сложно создавать надлежащие задержки. Я проверил функцию delay () для каждого источника часов, и она у меня сработала правильно.

Выбор микроконтроллера

Attiny13a в arduino ide

Общий вывод attiny13a для использования с arduino ide приведен ниже. D0-D5 обозначает цифровые выводы, а A0-A1 обозначает аналоговые выводы.Итак, attiny с arduino ide имеет 5 цифровых контактов и два аналоговых контакта.

Распиновка

Attiny13a для arduino ide

Мигающий светодиод с Atmel Attiny13A, Arduino Ide и Proteaus Simulation

Чтобы доказать, что верхняя конфигурация работает, я сделал простой проект / программу с мигающим светом. Светодиод переключается примерно за полсекунды. Я подключил светодиод к контакту PB4 attiny13a. Я использовал внутренний кристалл 4,8 МГц в качестве источника тактовой частоты. На выводе сброса я подключил кнопку, чтобы снова запустить микроконтроллер.Вся схема питается от элемента CR2032. Cr2032 представляет собой плоскую батарею на 3,3 В. Attiny во время работы потребляет очень мало энергии. Микроконтроллеры Atmel серии attiny считаются мастерами гибернации. Они могут оставаться в спячке годами при очень небольшом количестве электроэнергии. Принципиальная схема проекта представлена ​​ниже.

Проект

Принципиальная схема Attiny13A Пример Blink.

Программирование Attiny13a с помощью программатора UsbAsp

Для загрузки кода в микроконтроллер я использовал внешний программатор Usbasp.Attiny13a можно запрограммировать, используя его интерфейс icsp. Схема подключения аттини к программатору usbasp приведена ниже. Usbasp может программировать при Vcc = 3,3 В и 5 В. Уровень напряжения можно выбрать с помощью перемычки, установленной на программаторе usbasp. Я выбрал 3.3в. Поскольку я использую аттини с аккумулятором cr2302, рассчитанным на 3,3 В. Лучше работать на одном уровне напряжения. Но вы также можете запрограммировать его на 5В.
Примечание : При использовании внешнего программатора, такого как usbasp, код может быть загружен в микроконтроллер только с помощью опции Sketch> Upload using Programmer .

Перед программированием attiny13a убедитесь, что вы выбрали правильный программатор в раскрывающемся меню программатора.

Программатор

Usbasp используется для программирования микроконтроллера attiny13a с использованием arduino ide

Usbasp программатор программирование микроконтроллер atmel attiny13a

Программирование attiny13a с использованием Arduino uno в качестве Isp

Attiny13a можно запрограммировать с помощью arduino uno. Код можно загрузить, выполнив следующие простые шаги.
  • Подключите arduino к ПК.
  • Выберите правильный порт и плату Arduino, в нашем случае «Arduino Uno».
  • Загрузите на Arduino скетч «ArduinoISP», приведенный в примерах. Дождитесь загрузки скетча. После загрузки переходите к следующему шагу.
  • Выберите «Arduino as ISP» в раскрывающемся меню «Программист».
  • Выберите правильный порт.
  • Выберите «ATtiny13A standalone 4.8Mhz» в раскрывающемся меню Board.
  • Откройте скетч, который вы хотите загрузить на attiny13a, и загрузите код, нажав кнопку загрузки.

Attiny13a, запрограммированный на Arduino uno

Загрузите код проекта и моделирование. Моделирование выполнено в протео. Папка с кодом содержит файл кода Arduino и файл .hex, который можно записать на микроконтроллер непосредственно для программы с мигающим светодиодом. Пожалуйста, поделитесь с нами своим мнением о проекте.

Смотрите видео о проекте здесь…

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *