Дальше те, кто знают как изготавливаются платы поймут, что я перевёл рисунок утюгом на текстолит, протравил, залудил и т.д., а те, кто не в курсе — почитайте в интернете про изготовление плат методом ЛУТ — (Лазерно-утюжная технология).
результат я заснять забыл, но думаю, что качество будет видно и на готовой плате:
Видно места, которые не взялись, но ничего страшного не случилось, отстал только полигон.
Дальше нужно было запаять компоненты, на которых я особо останавливаться не буду, только оставлю их список:
$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 килобайта кода в мк и наблюдаем как только-что ожившее устройство начало служить человеку.
Чесно сказать, я испытываю невероятное удовольствие от того, что могу создать нечто такое, что для многих далёкое и не понятное)
Так выглядит устройство без корпуса, корпус буду делать после написания статьи:
youtube.com/embed/gi2ICJdfT_w?feature=oembed» frameborder=»0″ allowfullscreen=»»/>
Схема представляет собой простые электронные часы, которые во время работы интересным образом управляют двоеточием в дисплее и подсветкой «внутри» себя.
Благодаря несложной конструкции она наверняка привлечет внимание юных электронщиков.
Элементы схемы
Принципиальная схема приведена на рисунке 1. Сердцем схемы является микроконтроллер
ATtiny2313,который управляет четырехразрядным 7-сегментным дисплеем (c OA) и тремя кнопками для установки времени. Катоды сегментов подключены к соответствующим выводам микроконтроллера через резисторы, ограничивающие ток, а аноды управляются с помощью транзисторов Q2-Q5. Кварцевый резонатор Ql обеспечивает точность часов.
Дисплей DIS1 имеет выводы DTA и DTC. Это анод и катод светодиодов,составляющих двоеточие дисплея (см. рис)
Вывод 15 микроконтроллера — это выход ШИМ. Он запрограммирован на плавное временное увеличение и уменьшение наполнения выходного сигнала. Как видно по схеме к нему подсоединен вывод DTA дисплея и катод LED1. Светодиоды DTA->DTC зажигаются при подаче на них положительного сигнала,а LED1- при подаче сигнала ШИМ близкого к нулю. Мы получаем красивый эффект плавного загорания и плавного затухания (попеременно) вышеупомянутых светодиодов.
Изготовление часов . ..
не должно вызвать больших затруднении. Расположение элементов показано на рис.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
Простые часы с термометром на микроконтроллере 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.
Исходник статьи: Часы-термометр
схема из интернета
Сначала часики выглядели так:
Немного о схеме. Время задает микросхема ds1307, это часы-календарь, которые работают даже при отключении основного питания благодаря батарейке на 3 вольта. На такой батарейке они могут протикать года два точно. Тактируется микросхема обычным часовым кварцем. Микроконтроллер attiny2313 управляет семисегментником, а так же опрашивает микросхему ds1307, выводя время на дисплей.
Основная проблема внедрения больших семисегментников — их повышенное напряжение питания, им требуется 7.5 в, а вся схема работает от 5 вольт.
вот здесь решение данной проблемы:
Пока ехали индикаторы родилась такая вот схемка, работающая без проблем в протеусе.
И вот наконец они приехали!
фоточки
все индикаторы оказались целыми и работоспособными. Выбрал красный цвет, потому что он меньше мешает мне спатьЗадняя сторона. распиновка старндартная, указана на страничке товара, проблем с подключением не возникло
Для начала построил схему на макетной плате.
Всё худо-бедно заработало, протикало так пару дней, и я решил спаять все капитально на плату. После извращений с разводкой в протеусе родилось вот это:
фоточки
принтера у меня нет, тренируюсь на листике, потом маркером на платукрасота
после купания в хлорном железе. Вышло не очень, но функции выполнять будет
Запаял все компоненты на плату. Детали старался разместить так, чтобы они скрылись за индикаторами, места между индикатором на стойках и платой много, поэтому все вышло аккуратно. Индикаторы съемные.
Первое включение, завелись сразу, все работает, нигде не дымит
Теперь намного лучше, часы видно и днем, и ночью, притом ночью они не мешают спать своим светом.
Традиция говорите?
Схема и программа очень простых часов на микроконтроллере 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)
Схема представляет собой не сложный вариант цифровых электронных часов на основе микроконтроллера ATTINY2313. Так же к ней можно подкючить один или несколько датчиков температуры и сделать «метеостанцию».
Для отображения времени используются большие светодиодные семисегментные индикаторы, я использовал SC18-11GWA с высотой цифр 45 мм. Частота обновления информации на индикаторах — 200 Гц. Режимы будильника, таймера и т.п. не предусмотренны. Есть функция цифровой поправки хода, для улучшения точности. Установка времени выполняется с помощью двух кнопок — первая выбирает изменяемый параметр, вторая изменяет его значение. Реализованы стандартные функции управления от кнопок, например ускорение изменения параметра при продолжительном нажатии.
Для цифровой коррекции хода изменяется продолжительность самой первой минуты каждых суток. Ее продолжительность равна 110 минус значение поправки.
Например, если часы за сутки отстали на 5 секунд, то достаточно увеличить значение поправки на 5 чтобы часы шли точно. При пропадании питания эта поправка сохраняется в энергонизависимой памяти.
Эта фукнция позволяет сделать точность хода не хуже 1 секунды за сутки, или около 6 минут за год.
Кнопка 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 чтобы микроконтроллер не пытался его опросить.
Начну с того, что каждый человек живёт во времени, которое, к огромному сожалению, не возможно остановить. И раз мы живём в этом мире, то давайте следить за временем и не упускать ни минуты, тратя её впустую. Для этого я и сделал это чудесное устройство, по имени часы.
На улице встало солнце, я нарисовал плату и почесал на ксерокс, дабы напечатать плату
Дальше те, кто знают как изготавливаются платы поймут, что я перевёл рисунок утюгом на текстолит, протравил, залудил и т.д., а те, кто не в курсе — почитайте в интернете про изготовление плат методом ЛУТ — (Лазерно-утюжная технология).
результат я заснять забыл, но думаю, что качество будет видно и на готовой плате:
Видно места, которые не взялись, но ничего страшного не случилось, отстал только полигон.
Дальше нужно было запаять компоненты, на которых я особо останавливаться не буду, только оставлю их список:
И пускай вас не смущает длина этого списка, ведь мы собираем устройство на долгие года, и оно должно быть собрано на должном уровне!
Кто желает посмотреть на плату с другой стороны, вот фото:
Как и все устройства, часы нуждаются в программе. В данном случае программа написана на языке 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 килобайта кода в мк и наблюдаем как только-что ожившее устройство начало служить человеку.
Чесно сказать, я испытываю невероятное удовольствие от того, что могу создать нечто такое, что для многих далёкое и не понятное)
Так выглядит устройство без корпуса, корпус буду делать после написания статьи:
И так, часы готовы, а как они работают? Это я демонстрирую в первой половине этого видео (не прошу подписки или чего-то ещё, просто материал)
youtube.com/embed/gi2ICJdfT_w?feature=oembed» frameborder=»0″ scrolling=»yes»> Таким образом, за 2 дня я сделал устройство, которое покажет мне, сколько мне осталось заниматься одним делом и переходить к другому, когда пора идти, или начать что-то важное.
Ну а на этом всё, спасибо тем, кто дочитал до конца, успехов вам в ваших проектах, и как говорится: «треска вам, 47, и до встречи на других частотах! QRZ..»
Автор: TehnoPingvin
Источник
ATtiny2313 — это высокопроизводительный, но маломощный микроконтроллер на основе архитектуры Microchip 8-бит AVR RISC, который имеет 20 контактов, из которых 18 контактов могут использоваться в качестве контактов ввода / вывода.
Номер контакта | Имя контакта | Описание |
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 — это высокопроизводительный, но маломощный микроконтроллер на основе архитектуры 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.
Подробные характеристики ATtiny2313ATtiny2313 — подробные характеристики | |
ЦП | 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 |
Возможность высокого напряжения | № |
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 показаны ниже —
Учебное пособие поПредохранители — чрезвычайно важная часть программирования микросхемы, но они редко получают подробное объяснение.Вам нужно установить их только один раз, но если вы не сделаете это правильно, это катастрофа!
Комментариев? Предложения? Напишите на форум!
Вы знаете о флэш-памяти, 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!
текст
Применение однокристальных контроллеров AVR AT90S, ATtiny, ATmega и ATxmega Для синхронизации ATtiny с кристаллом |
И это был бы такой кристаллический делитель без микроконтроллера. Предназначен для деления кристалла 15 МГц на 68:
Версия микроконтроллера ATtiny25, делающая то же самое, умещается в одном одиночная 8-контактная ИС, из которых нужно обрабатывать только шесть.Весь дизайн внутри контроллера, который выполняет все это несколькими строками кода ассемблера.
Таким образом, из одного монокристалла можно получить разные частоты. А также очень гибкий: просто измените разделитель. С помощью электронной таблицы OpenOffice здесь доступны все разные кристаллы В коммерческом отношении могут быть рассмотрены:
Если ячейка E6 соотв.J6 равно 0,00, тогда может быть сгенерирована точная желаемая частота. хотя бы с одним кристаллом. Какие из них (и те, у которых меньше всего разница, если ни одна из них не равна нулю) видно по зеленому цвету различия в столбцах E соотв. J. Кристаллы с разницей менее 0,1% желаемая частота отображается на желтом фоне.
Убедитесь, что вы вычли единицу из значения делителя CTC, прежде чем записывать это в регистр сравнения таймера / счетчика.
Выходной сигнал доступен на PB0 (OC0A) и, если это необходимо и запрограммировано, на PB1 (OC0B). Оба выхода могут быть обратно фазированными или могут быть фазированы на другой угол.
На практике, с подключенным кристаллом 15 МГц, кристалл работал только запускается ниже рабочего напряжения 4 В. Выше этого кристалла запускается на несколько тактов, но затем перестал работать. Это не изменилось, если Я разделил напряжение на выходе XTAL2 на два резистора перед подачей питания на xtal.Если осциллятор работает, например, 2,7 В, увеличение рабочего напряжение выше 4 В (до 5,5 В) не прекращало колебания. Так что это простая проблема с запуском. Если вы используете рабочее напряжение 5 В, убедитесь, что ATtiny имеет напряжение 3,3 В или ниже, например с резистором, стабилитрон и электролитический конденсатор. Или приготовьте специальный раствор чтобы убедиться, что колебание осциллятора стабильно, перед увеличением рабочего Напряжение.
Я не нашел подобных сообщений о таком глючном оборудовании.к счастью Ко мне был подключен большой конденсатор, поэтому я заметил несколько первых колебаний. В зависимости от количества уже выполненных инструкций порты OCR0A и OCR0B были либо выходными, либо нет. Подобная ошибка может приводить к вы сумасшедший, поэтому не ожидайте, что оборудование будет работать так, как запланировано, желательно и как описан в справочнике устройства.
Дополнительная подсказка для использования подстроечного конденсатора для изменения кристалла
частота немного. Это работает только на входе XTAL1. Не ждите
большой эффект, можно достичь только нескольких Гц и менее 1 кГц.Увеличение
значения конденсатора приводят к увеличению частот, по крайней мере, с моими 15 МГц
кристалл. Внимание: слишком большой колпачок может остановить раскачивание кристалла.
Если вы забудете очистить предохранитель 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 в
тот случай.
Дополнительно можно загрузить следующие документы 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 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 для контроллеров ISPLazyted ISP Синхронный демодулятор контура с кодовой синхронизацией ATtiny2313 или AT90S2 313 ATtiny12
Аналоговый мультиплексор на полупроводниковых конденсаторах для микроконтроллеров Контроллеры AVR или другие с трехсторонними I-контактами
Экспериментальный синхронный демодулятор 1 кГц ATtiny2313 AT90S2313
Таймеры полива сада Вентили и счетчики; нет микроконтроллера
Дверной звонок Privacy Sentry ATtiny12
Модификация будильника с кодом Морзе с ATtiny2313-AT90S2313
Источник: cappels. org ATTINY2313 AT90S2313 Альтернативная ссылка на приложения:
СПИСОК ССЫЛКИ ДЛЯ ЗАГРУЗКИ ФАЙЛОВ (в формате TXT): LINKS-1238.zip
Думаю, многие из вас были сбиты с толку при программировании предохранителей AVR. Я получаю много вопросов новичков, например: «Я программировал Atmega8, но он не работает». Тогда мой стандартный ответ: «Вы трогали биты конфигурации?», И если да, то я почти на 90% уверен, что он сделал это неправильно.Большинство из них ошибочно понимают, что запрограммированный бит предохранителя в конфигурации следует оставлять неотмеченным и наоборот. Давайте посмотрим на широко используемое программное обеспечение для программирования - PonyProg.
Первое, что вы делаете перед программированием микросхемы, это установка битов конфигурации (Atmega8 на картинке):
В первую очередь следует обратить внимание на источники тактовой частоты. Источниками синхронизации Atmega8 управляют четыре бита: CKSEL0, CKSEL1, CKSEL2, CKSEL3.
Как вы, возможно, уже знаете, Atmega8 может иметь 4 разных источника синхронизации:
В таблице вы видите соответствующие настройки 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. Менее стабильный запуск.
Частота в этом режиме рассчитывается по формуле f = 1 / (3RC), в то время как C должно быть не менее 22 пФ. Если CKOPT запрограммирован (не отмечен), тогда включен внутренний конденсатор 36 пФ между XTAL1 и GND, тогда нужен только резистор.
..И снова таблица режимов работы:
И время запуска:
Примечание 1. не используйте эту настройку, когда частота близка к максимальной.
Калиброванный внутренний RC-генератор довольно часто используется, поскольку не требует каких-либо внешних компонентов и может обеспечивать фиксированные тактовые частоты 1, 2, 4 и 8 МГц. Этот режим выбирается путем программирования битов предохранителей в диапазоне от 0001 до 0100. Оставьте бит CKOPT незапрограммированным для этого режима (отмечен).
Режимы работы:
Примечание 1. по умолчанию этот параметр выбран для всех Atmega8 и таблицы параметров запуска:
Примечание 1. по умолчанию эта опция выбрана для всех Atmega8
О калибровке внутреннего RC-генератора читайте в техническом описании устройства.
Внешние часы - это основная ошибка, которую делают новички при запуске своих проектов. Чтобы включить внешний источник синхронизации, вы должны оставить биты CKSEL0, CKSEL1, CKSEL2, CKSEL3 незапрограммированными - это означает, что они отмечены. Люди делают ошибки, проверяя их и думая, что они включают внешние кристаллические резонаторы, а затем задаются вопросом, почему это не работает.
И снова есть таблица запуска внешнего источника синхронизации, управляемая SUT0 и SUT1:
Если вы снимите флажок CKOPT, вы включите конденсатор между XTAL1 и GND.
Вы можете найти всю эту информацию в таблицах данных. Но как всегда - люди забывают их читать.
Если есть какие-либо вопросы или проблемы, не стесняйтесь спрашивать.
Введение:
Это, наверное, самый простой из возможных цифровых светодиодных будильников.
Цель заключалась в том, чтобы получить как можно больше функциональности в простейшем оборудовании, похожем на одно из
Самые простые цифровые часы с 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 (здесь индикатор будильника - отдельный светодиод).
Добавлен: 30. 9. 2014
дом
Мне показалось, что работать со студией 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 |
Чтобы доказать, что верхняя конфигурация работает, я сделал простой проект / программу с мигающим светом. Светодиод переключается примерно за полсекунды. Я подключил светодиод к контакту PB4 attiny13a. Я использовал внутренний кристалл 4,8 МГц в качестве источника тактовой частоты. На выводе сброса я подключил кнопку, чтобы снова запустить микроконтроллер.Вся схема питается от элемента CR2032. Cr2032 представляет собой плоскую батарею на 3,3 В. Attiny во время работы потребляет очень мало энергии. Микроконтроллеры Atmel серии attiny считаются мастерами гибернации. Они могут оставаться в спячке годами при очень небольшом количестве электроэнергии. Принципиальная схема проекта представлена ниже.
ПроектПринципиальная схема Attiny13A Пример Blink.
Для загрузки кода в микроконтроллер я использовал внешний программатор Usbasp.Attiny13a можно запрограммировать, используя его интерфейс icsp. Схема подключения аттини к программатору usbasp приведена ниже. Usbasp может программировать при Vcc = 3,3 В и 5 В. Уровень напряжения можно выбрать с помощью перемычки, установленной на программаторе usbasp. Я выбрал 3.3в. Поскольку я использую аттини с аккумулятором cr2302, рассчитанным на 3,3 В. Лучше работать на одном уровне напряжения. Но вы также можете запрограммировать его на 5В. | Перед программированием attiny13a убедитесь, что вы выбрали правильный программатор в раскрывающемся меню программатора. ПрограмматорUsbasp используется для программирования микроконтроллера attiny13a с использованием arduino ide |
Usbasp программатор программирование микроконтроллер atmel attiny13a
Attiny13a, запрограммированный на Arduino uno
Загрузите код проекта и моделирование. Моделирование выполнено в протео. Папка с кодом содержит файл кода Arduino и файл .hex, который можно записать на микроконтроллер непосредственно для программы с мигающим светодиодом. Пожалуйста, поделитесь с нами своим мнением о проекте.