Оглавление
- О возможностях среды разработки
- Step 2: Setting Up the IDE
- 8 битный AVR микроконтроллер с 1 КБ внутрисистемно программируемой Flash памяти
- Способ программирования новых МК серии ATtiny
- Плата Digispark с Arduino Attiny85
- Скетчи на ATtiny84
- Supported clock frequencies
- Используем переходную плату
- Начинаем с простого скетча
- Programming Attiny13a with UsbAsp Programmer
- Programming attiny13a using Arduino uno as Isp
- Serial support
- Скетчи на ATtiny84
- Getting started with MicroCore
- Programmers
- Обозначения индексов микроконтроллеров
- Программирование контроллеров AVR AtTiny13 / 25
- Blink led with Atmel Attiny13A, Arduino Ide and Proteaus Simulation
- Step 3: Programming
О возможностях среды разработки
Arduino IDE имеет встроенный набор плат и микроконтроллеров, с которыми можно работать; в её основе лежит классический программатор AVR, кстати, благодаря ему и можно обращаться к устройству командами на Си.
Однако не всегда удобно и рационально использовать предложенные микроконтроллеры. Согласитесь, что глупо брать плату с парой десятков выводов для работы с 1 датчиком и 1 исполнительным механизмом, в роли которого может быть:
- сервопривод;
- транзистор;
- светодиод;
- соленоид и т. д.
Поэтому сторонние разработчики создали целый ряд совместимых плат. Работать с ними можно через Arduino IDE, используя простые команды встроенного языка. Для этого были переписаны загрузчики и библиотеки команд.
Step 2: Setting Up the IDE
- Open the arduino IDE and connect your Arduino
- Go to file > Examples > ArduinoISP
- Check you have the correct board & port selected (Tools > Board/Serial Port)
- Press the upload button
This will program your arduino board to be used as an ISP (in system programmer)
We now need to set up the IDE to recognise our ATTiny13A as an arduino compatible chip
- Download and extract this file: https://github.com/tekstop/attiny/tree/Arduino1
- Copy the folder «attiny» from the extracted ZIP to the /hardware/ folder in your arduino IDE installation directory
We then need to offset the clock speed (not a very elegant solution, but i’m working on it!):
- Open Hardware/attiny/boards.txt
- Scroll to the bottom of the file, this last few lines contains the data relevant to our chip
- Change «attiny13.build.f_cpu=9600000L» to «attiny13.build.f_cpu=1000000L»
This will correct delay times etc.
- Open the Arduino IDE again
- Go to Tools>Board and select «ATtiny13 (internal 9.6 MHz clock)»
8 битный AVR микроконтроллер с 1 КБ внутрисистемно программируемой Flash памяти
Документация:
1158 Kb Engl Описание микросхемы ATtiny2313 Предварительная информация | ||
Rus Система команд и архитектура | ||
Програмное обеспечение | ||
Инструментальные средства для 8-разрядных AVR-микроконтроллеров | ||
Примеры применения микроконтроллеров AVR в устройствах управления 3-фазными бесколлекторными электродвигателями постоянного тока |
Отличительные особенности:
- Высококачественный низкопотребляющий 8- битный AVR микроконтроллер
- Передовая RISC архитектура
— 120 команд, большинство которых выполняется за один тактовый цикл
— 32 8 битных рабочих регистра общего применения
— Полностью статическая архитектура - Энергонезависимая память программ и данных
— 1 КБ внутрисистемно программируемой Flash памяти программы, способной выдержать 10 000 циклов записи/стирания
— 64 байта внутрисистемно программируемой EEPROM памяти данных, способной выдержать 100 000 циклов записи/стирания
— 64 байта встроенной SRAM памяти (статическое ОЗУ)
— Программируемая защита от считывания самопрограммируемой Flash памяти программы и EEPROM памяти данных - Характеристики периферии
— Один 8- разрядный таймер/счетчик с отдельным предделителем и два ШИМ канала
— 4 канальный 10 битный АЦП со встроенным ИОН
— Программируемый сторожевой таймер со встроенным генератором
— Встроенный аналоговый компаратор - Специальные характеристики микроконтроллера
— Встроенный отладчик debugWIRE
— Внутрисистемное программирование через SPI порт
— Внешние и внутренние источники прерывания
— Режимы пониженного потребления Idle, ADC Noise Reduction и Power-down
— Усовершенствованная схема формирования сброса при включении
— Программируемая схема обнаружения кратковременных пропаданий питания
— Встроенный откалиброванный генератор - Порты ввода — вывода и корпусное исполнение
— 8 выводные PDIP и SOIC корпуса: 6 программируемых линий ввода-вывода - Диапазон напряжения питания
— от 1.8 до 5.5 В - Индустриальный рабочий температурный диапазон
- Потребление
— Активный режим:
290 мкА при частоте 1 МГц и напряжении питания 1.8 В
— Режим пониженного потребления
0.5 мкА при напряжении питания 1.8 В
Блок- схема ATtiny13:
Расположение выводов ATtiny13:
Общее описание:
ATATtiny13 — низкопотребляющий 8 битный КМОП микроконтроллер с AVR RISC архитектурой. Выполняя команды за один цикл, ATtiny13 достигает производительности 1 MIPS при частоте задающего генератора 1 МГц, что позволяет разработчику оптимизировать отношение потребления к производительности.
AVR ядро объединяет богатую систему команд и 32 рабочих регистра общего назначения. Все 32 регистра непосредственно связаны с арифметико-логическим устройством (АЛУ), что позволяет получить доступ к двум независимым регистрам при выполнении одной команды. В результате эта архитектура позволяет обеспечить в десятки раз большую производительность, чем стандартная CISC архитектура.
ATtiny13 имеет следующие характеристики: 1 КБ внутрисистемно программируемой Flash память программы, 64 байтную EEPROM память данных, 64 байтное SRAM (статическое ОЗУ), 6 линий ввода — вывода общего применения, 32 рабочих регистра общего назначения, 8 битный таймер/счетчик со схемой сравнения, внутренние и внешние источники прерывания, 4 канальный 10 битный АЦП, программируемый сторожевой таймер со встроенным генератором и три программно инициализируемых режима пониженного потребления. В режиме Idle останавливается ядро, но ОЗУ, таймер/счетчик, АЦП, аналоговый компаратор и система прерываний продолжают функционировать. В режиме Power-down регистры сохраняют свое значение, но генератор останавливается, блокируя все функции прибора до следующего прерывания или аппаратного сброса. В режиме ADC Noise Reduction останавливается вычислительное ядро и все модули ввода-вывода за исключением АЦП, что позволяет минимизировать шумы при выполнении преобразования.
Прибор изготовлен по высокоплотной энергонезависимой технологии изготовления памяти компании Atmel. Встроенная ISP Flash позволяет перепрограммировать память программы в системе через последовательный SPI интерфейс программой-загрузчиком, выполняемой в AVR ядре, или обычным программатором энергонезависимой памяти.
ATtiny13 поддерживается различными программными средствами и интегрированными средствами разработки, такими как компиляторы C, макроассемблеры, программные отладчики/симуляторы, внутрисхемные эмуляторы и ознакомительные наборы.
Главная —
Микросхемы —
DOC —
ЖКИ —
Источники питания —
Электромеханика —
Интерфейсы —
Программы —
Применения —
Статьи
Способ программирования новых МК серии ATtiny
Одним из самых больших изменений в этих МК подвергся интерфейс программирования. В новой серии МК ATtiny применен интерфейс, получивший название Unified Program and Debug Interface (UPDI), – универсальный интерфейс программирования и отладки. В этом интерфейсе задействован вывод МК Reset/UPDI. Для программирования МК по интерфейсу UPDI и подачи корректных сигналов на вывод Reset/UPDI мы будем использовать плату Arduino Nano. После программирования МК плата Arduino Nano больше не понадобиться. Схема подключения платы Arduino Nano к МК изображена на Рисунке 4.
Рисунок 4. | Схема подключения Arduino Nano в качестве UPDI программатора к МК ATtiny1614. |
Шаг 1. Настраиваем плату Arduino Nano в качестве программатора
В секции загрузок доступен для скачивания архив SpenceKonde — jtag2updi.zip. Распакуйте архив в папку со скетчами Arduino и запрограммируйте плату Arduino Nano. Этот архив содержит скетч, который превращает Arduino Nano в UPDI программатор.
Примечание:
не пугайтесь, что файл jtag2updi.ino пустой, фактически, весь код находится в других файлах.
Чтобы предотвратить запись Arduino скетчей в плату Arduino Nano при программировании МК ATtiny1614, необходимо отключить линию Reset на Arduino. Сделать это можно, добавив конденсатор емкостью 10 мкФ между линией Reset Arduino и GND (см. Рисунок 4). Короткий импульс сброса будет сбрасывать только МК ATtiny1614, а не Arduino. Плату Arduino можоно сбросить нажатием кнопки сброса в течение более длительного времени.
Между выводами D6 Arduino и Reset/UPDI МК ATtiny1614 необходимо включить резистор 4.7 кОм. Также необходимо подключить МК к питанию +5 В и GND (на плате Arduino Nano).
Шаг 2. Установка поддержки плат megaTinyCore в Arduino IDE
Пакет поддержки плат в Arduino IDE устанавливается с помощью менеджера плат. Для этого необходимо:
- В меню «Настройки» (Preferences) добавить ссылку http://drazzy.com/package_drazzy.com_index.json в менеджер дополнительных плат;
- Запустить менеджер плат (Tools – Boards — Board Manager);
- Найти в списке платы «megaTinyCore by Spence Konde» и нажать кнопку «Установить» (Install).
Шаг 3. Выбор программатора
После того как пакет дополнительных плат «megaTinyCore by Spence Konde» был установлен в Arduino IDE, в меню «Инструменты» (Tools) выбираем (Рисунок 5):
- Плату «ATtiny1614/ATtiny1604/ATtiny814/ATtiny804/ATtiny414/ATtiny404/ATtiny214/ATtiny204»;
- Тактовая частота: 16 МГц;
- COM-порт, к которому подключен наш программатор на плате Arduino Nano;
- Программатор: — «jtag2updi(megaTinyCore)».
Рисунок 5. | Выбор типа платы и программатора для работы с МК ATtiny1614 в Arduino IDE. |
При выполнении этих настроек убедитесь, что вы выбрали МК, который собираетесь запрограммировать. Кроме того, слеудет учитывать, что некоторые библиотеки не буду работать на тактовой частоте 20 МГц (например, Adafruit Neopixel), поэтому тактовую частоту нужно выбирать ниже – 16 МГц, а если МК питается от напряжения 3.3 В, то 8 МГц.
Плата Digispark с Arduino Attiny85
Совместимые платы могут как превосходить по характеристикам и размерам стандартные ардуино, так и быть меньше их, как было сказано выше. Отличным примером такой платы будет Digispark.
Характеристики платы довольно скромные, она поставляется с микроконтроллером, подготовленным для работы, arduino attiny85 – он представлен в восьминогом корпусе SOIC или более крупных размеров – DIP8. Характеристики весьма непритязательные:
- постоянной памяти – 8 Кб, для программного кода и 512 для исполняемого;
- так как доступно всего 8 выводов (ножек), вычтем две плюс и минус питания – получится 6 цифровых пинов, из которых 4 – это ADC и 2 PWM (ШИМ);
- доступно только аппаратное прерывание;
- контроллер работает на частотах от 1 до 20 МГц;
- в зависимости от конкретного чипа напряжения питания различны от 1.8 до 5.5 Вольт;
- в режиме энергосбережения потребляет мизерный ток в 0.1 мкА, при самом низком напряжении питания в 1.8 Вольт.
У оригинального digispark интересная конструкция, для его прошивки не нужно использовать micro USB кабель или USB-UART. Плата разведена таким образом, что, просто вставив ее в USB порт вашего компьютера, вы получите возможность программировать микроконтроллер.
Плата не только маленькая, но и очень простая – её сборка не займет много времени, и совершенно не составит труда для начинающих. Как собрать клон digispark своими руками мы расскажем немного позже.
Скетчи на ATtiny84
Итак, у нас Arduino Uno. Как же нам запрограммировать нашу «тиньку»? Для этого используется такое устройство, как программатор. Он необходим для того, чтобы залить в контроллер прошивку.
Мы можем превратить в него нашу Arduino. И делается это элементарно, путем заливки скетча ArduinoISP.
Делаем программатор и собираем схему
Открываем соответствующий скетч «Файл → Примеры → ArduinoISP» и заливаем его. Все, превращение завершено. Теперь необходимо правильно собрать схему, чтобы прошить «тиньку». Обратимся к коду скетча, который был только что залит. Даже не к коду, а к комментарию перед ним.
Сначала подключим светодиоды таким образом, как описано в комментарии, не забывая резисторы. После сборки схемы и подачи питания, светодиод, подключенный к пину 9 «Heartbeat» будет моргать, обозначая нормальное функционирование. Если этого не произошло, то ищите ошибки в подключении.
Теперь надо подключить пины 10-13 к ATtiny. Чтобы узнать распиновку последней, обратимся к даташиту, который можно скачать с сайта Atmel , производителя этих контроллеров. На второй странице расположена картинка, описывающая распиновку.
Основываясь на даташите и комментарии из скетча, можем составить следующую таблицу подключения:
Arduino UNO | ATtiny84 | |
---|---|---|
Reset | 10 | 4 |
MOSI | 11 | 7 |
MISO | 12 | 8 |
SCK | 13 | 9 |
Теперь подключим светодиод и переменный резистор.
Резистор необходимо подключить в пину №6 (PA7), поскольку этот пин может быть входом для аналого-цифрового преобразователя, а светодиод — к любому другому, например, к 10 (PA3).
О нумерации пинов
Стоит немного рассказать о различии нумерации пинов в Arduino и при использовании «чистого» С. В Arduino пины нумеруются последовательно и исключаются системные (питание, земля и т.д.), а в реальности все немного иначе. Все выводы контроллера можно охарактеризовать двумя парметрами: номер порта (порт А, порт В и т.д.) и номер вывода (1..8).
На сайте Arduino можно найти карту пинов. Она выглядит следующим образом:
Для используемой нами ATtiny84 нумерация будет аналогична. В библиотеке Arduino-tiny, о которой речь пойдёт далее, можно найти следующую таблицу соответствия:
// ATMEL ATTINY84 / ARDUINO
//
// +-\/-+
// VCC 1| |14 GND
// (D 0) PB0 2| |13 AREF (D 10)
// (D 1) PB1 3| |12 PA1 (D 9)
// PB3 4| |11 PA2 (D 8)
// PWM INT0 (D 2) PB2 5| |10 PA3 (D 7)
// PWM (D 3) PA7 6| |9 PA4 (D 6)
// PWM (D 4) PA6 7| |8 PA5 (D 5) PWM
// +—-+
В соответсвии с назначением каждой ножки контроллера, аналоговые пины (те, у которых есть вход АЦП) нумеруются в скетче по каналу АЦП.
Напримем, пин сфизическим номером 11 может быть входом для второго канала АЦП (ADC2), поэтому в скетче он будет называться A2.
Теперь необходимо научить среду программирования Arduino понимать тот факт, что мы используем другой контроллер.
Учим среду разработки
Первым делом необходимо скачать библиотеку arduino-tiny , содержащую в себе все необходимое.
Далее заходим в настройки Arduino и смотрим расположение папки со скетчами.
Переходим в эту папку и создаем там новую с названием «hardware». А в ней еще одну, «tiny». Копируем содержимое скачанного ранее архива в эту папку.
И последнее действие — переименовываем файл «Prospective Boards.txt» в «boards.txt». Теперь перезагружем среду разработки и идем в меню «Сервис → Плата».
Можно видеть, то добавилось много новых пунктов.
Программируем ATtiny84
Выбираем в качестве нужного устройства «Сервис → Плата → ATtiny84 @ 8 MHz (internal oscillator; BOD disabled)» поскольку у нас нету внешнего кварца, который задает частоту работы контроллера. В качестве программатора выберем — «Сервис → Программатор → Arduino as ISP».
В качестве кода берем уже написанный нами код для светодиода и подстроечного резистора и изменяем там номера пинов.
// Номер пина для светодиода
// Номер аналогового пина
// В эту переменную считываем значение с аналогового входа
// Настраиваем пин светодиода на выход
// Считываем значение
// val содержит значение из диапазона 0..1023, а диапазон значений для analogWrite
// 0..255. Для этого делим val на 4
Supported clock frequencies
The ATtiny13 has several internal oscillators, and these are the available clock frequencies:
- 9.6 MHz internal oscillator (default)
- 4.8 MHz internal oscillator
- 1.2 MHz internal oscillator
- 600 kHz internal oscillator *
- 128 kHz internal watchdog oscillator *
If you want other or higher clock frequencies, you can apply an external clock source. Note that the ATtiny13 requires an external clock signal, and is not able to drive a resonator circuit itself. You may use a quartz crystal oscillator or a crystal driver (shown in ).
Supported external clock frequencies:
- 20 MHz external oscillator
- 16 MHz external oscillator
- 12 MHz external oscillator
- 8 MHz external oscillator
- 1 MHz external oscillator
Select the ATtiny13 in the boards menu, then select the clock frequency. You’ll have to hit «Burn bootloader» in order to set the correct fuses. Make sure you connect an ISP programmer, and select the correct one in the «Programmers» menu. * Make sure to use one of the «slow» programmer options when using the 600 or 128 kHz option (e.g USBtinyISP (slow)).
Используем переходную плату
Одна из проблем при экспериментировании с этими новыми МК заключается в том, что они поставляются только в корпусах для поверхностного монтажа (SMD). Это затрудняет их использование на макетных платах. Для этой цели была разработана плата-адаптер, которая позволит использовать МК ATtiny1614 как стандартный элемент в форм-факторе DIL (Dual-In-Line). Принципиальная схема платы-адаптера изображена на Рисунке 2.
Рисунок 2. | Принципиальная схема платы адаптера (SOIC-DIL) для МК ATtiny1614. |
Плата была разработана в САПР Eagle, и проектные файлы доступны для скачивания в разделе загрузок (Рисунок 3). Стоит заметить, что расположение выводов переходной платы DIL форм-фактора отличается от расположения выводов МК в SMD корпусе. Сделано это было специально, чтобы плата адаптера получилась односторонней и ее можно было изготовить в домашних условиях по ЛУТ-технологии, сохранив стандартную ширину 0.3 дюйма. Выводы UPDI/Reset, VCC и GND выведены на отдельную планку, поэтому программатор можно подключить к МК, даже когда плата-адаптер уже запаяна на другую плату (в устройстве).
Рисунок 3. | Проект платы адаптера (SOIC-DIL) для МК ATtiny1614 в САПР Eagle. |
Начинаем с простого скетча
Собирать мы будем устройство с потенциометром и светодиодом. В зависимости от угла поворота потенциометра будет изменяться яркость светодиода.
Подключаем к Arduino ледующим образом: светодиод подключаем к цифровому пину №6 (поскольку на нем есть возможность генерации ШИМ-сигнала, за счет которого будет регулироваться яркость светодиода), а потенциометр — к аналоговому пину №0.
Скетч содержит следующий код:
- pwm-adc.ino
-
// Номер пина для светодиода int ledPin = 6; // Номер аналогового пина int analogPin = A0; // В эту переменную считываем значение с аналогового входа int val = ; void setup() { // Настраиваем пин светодиода на выход pinMode(ledPin, OUTPUT); } void loop() { // Считываем значение val = analogRead(analogPin); // val содержит значение из диапазона 0..1023, а диапазон значений для analogWrite // 0..255. Для этого делим значение на 4 analogWrite(ledPin, val 4); }
Programming Attiny13a with UsbAsp Programmer
To download the code in the microcontroller i used Usbasp external programmer. Attiny13a can be programmed by using its icsp interface. The connection diagram of the attiny with usbasp programmer is given below. Usbasp can program at Vcc= 3.3v and 5v. You can select the voltage level using a jumper installed on the usbasp programmer. I selected the 3.3v. Since i am running the attiny with cr2302 coin cell rated at 3.3v. Its better to work on the same voltage level. But you can also program it at 5v.Note: If using an external programmer such as usbasp the code can only be uploaded to microcontroller by using the Sketch>Upload using Programmer option. |
Before Programming the attiny13a please make sure that you selected the right programmer from the programmer drop down menu.
|
Usbasp programmer programming atmel attiny13a microcontroller
Programming attiny13a using Arduino uno as Isp
Attiny13a can be programmed using arduino uno. Code can be uploaded using the following simple steps.
- Connect arduino to PC.
- Select the right Port and arduino board, in our case “Arduino Uno”.
- On arduino upload the sketch “ArduinoISP” given in the examples. Wait for sketch to be uploaded. Once uploaded move to next step.
- Select “Arduino as ISP” from the Programmer drop down menu.
- Select the right Port.
- Select the “ATtiny13A standalone 4.8Mhz” from the Board drop down menu.
- Open the sketch you want to upload to the attiny13a and upload the code by pressing the upload button.
Attiny13a programmed with Arduino uno
Download the project code and simulation. Simulation is made in proteaus. The code folder contains the arduino code file and .hex file that can be burned to microcontroller directly for blink led program. Please give us your feed back on the project.
Serial support
MicroCore features a brilliant, ultra-lightweight software UART library called picoUART, wrapped by . This means you can use regular if you need to. Note that the baud rate has to be defined at compile-time and cannot be defined in the sketch. The table below shows a list of which clock frequencies use which baud rates by default. If you need a different baud rate for a specific clock frequency, you may modify the .
If you want to use the UART functionality you will have to have the right hardware connected to the right pins on the ATtiny13. See the for more information. Also, please have a look at the provided serial example sketches.
Clock | Baud rate |
---|---|
(External) 20 MHz | 115200 |
(External) 16 MHz | 115200 |
(External) 12 MHz | 115200 |
(External) 8 MHz | 115200 |
(External) 1 MHz | 19200 |
(Internal) 9.6 MHz | 115200 |
(Internal) 4.8 MHz | 57600 |
(Internal) 1.2 MHz | 19200 |
(Internal) 600 kHz | 9600 |
(Internal) 128 kHz | Not supported |
Internal oscillator calibration
The internal 9.6 and 4.8 MHz internal oscillators (yes, these are separate in some silicon revisions) in the ATtiny13 are usually not very accurate. This is acceptable for many applications, but when you’re using an asynchronous protocol like UART, ±3-4% off simply won’t work. To solve this problem MicroCore provides a user-friendly Oscillator calibration sketch that calculate a new OSCCAL value based on a received character over UART. All you need to do is to load the sketch, select the correct baud rate in the serial monitor, select No line ending and send the character many times ( , …). After a few tries, you should gradually see readable text in the serial monitor. After the calibration value has stabilized it’s automatically stored in EEPROM address 0 for future use. This value is not loaded by default, but has to be loaded «manually» in your sketch like so:
// Check if there exist any OSCCAL value in EEPROM addr. 0 // If not, run the oscillator tuner sketch first uint8_t cal = EEPROM.read(); if (cal < 0x80) OSCCAL = cal;
The reason why it checks if the calibration value is less than 0x80 is that the OSCCAL value can only be 0x7F or less, and the default value when the EEPROM is erased and empty is 0xFF. The code snippet above is just a primitive way to check if a value that could be loaded into the OSCCAL register is present.
Huge thanks to Ralph Doncaster for providing his excellent picoUART library and his oscillator calibration code. None of this would be close to possible if it weren’t for his brilliant work!
Скетчи на ATtiny84
Итак, у нас Arduino Uno. Как же нам запрограммировать нашу «тиньку»? Для этого используется такое устройство, как программатор. Он необходим, чтобы залить прошивку в контроллер. Мы можем превратить нашу Arduino в программатор. Это элементарно делается путём заливки скетча ArduinoISP.
Делаем программатор и собираем схему
Открываем соответствующий скетч «Файл → Примеры → ArduinoISP» и заливаем его. Все, превращение завершено. Теперь необходимо правильно собрать схему, чтобы прошить «тиньку». Обратимся к коду скетча, который был только что залит. Даже не к коду, а к комментарию перед ним.
- ArduinoISP.ino
-
// This sketch turns the Arduino into a AVRISP // using the following arduino pins: // // pin name: not-mega: mega(1280 and 2560) // slave reset: 10: 53 // MOSI: 11: 51 // MISO: 12: 50 // SCK: 13: 52 // // Put an LED (with resistor) on the following pins: // 9: Heartbeat - shows the programmer is running // 8: Error - Lights up if something goes wrong (use red if that makes sense) // 7: Programming - In communication with the slave
Сначала подключим светодиоды таким образом, как описано в комментарии, не забывая резисторы. После сборки схемы и подачи питания, светодиод, подключенный к пину 9 «Heartbeat» будет моргать, обозначая нормальное функционирование. Если этого не произошло, то ищите ошибки в подключении.
Arduino UNO | ATtiny84 | |
---|---|---|
Reset | 10 | 4 |
MOSI | 11 | 7 |
MISO | 12 | 8 |
SCK | 13 | 9 |
Теперь подключим светодиод и переменный резистор.
Резистор необходимо подключить в пину №6 (PA7), поскольку этот пин может быть входом для аналого-цифрового преобразователя, а светодиод — к любому другому, например, к 10 (PA3).
О нумерации пинов
Стоит немного рассказать о различии нумерации пинов в Arduino и при использовании «чистого» кода C. В Ардуино пины нумеруются последовательно и исключаются системные (питание, земля и т. д.), а в реальности всё немного иначе. Все выводы контроллера можно охарактеризовать двумя парметрами: номер порта (порт А, порт В и т.д.) и номер вывода (1..8).
Для используемой нами ATtiny84 нумерация будет аналогична. В библиотеке Arduino-tiny, о которой речь пойдёт далее, можно найти следующую таблицу соответствия:
// ATMEL ATTINY84 / ARDUINO // // +-\/-+ // VCC 1| |14 GND // (D 0) PB0 2| |13 AREF (D 10) // (D 1) PB1 3| |12 PA1 (D 9) // PB3 4| |11 PA2 (D 8) // PWM INT0 (D 2) PB2 5| |10 PA3 (D 7) // PWM (D 3) PA7 6| |9 PA4 (D 6) // PWM (D 4) PA6 7| |8 PA5 (D 5) PWM // +----+
В соответсвии с назначением каждой ножки контроллера, аналоговые пины (те, у которых есть вход АЦП) нумеруются в скетче по каналу АЦП.
Напримем, пин сфизическим номером 11 может быть входом для второго канала АЦП (ADC2), поэтому в скетче он будет называться A2.
Теперь необходимо научить среду программирования Arduino понимать тот факт, что мы используем другой контроллер.
Программируем ATtiny84
Выбираем в качестве нужного устройства «Сервис → Плата → ATtiny84 @ 8 MHz (internal oscillator; BOD disabled)» поскольку у нас нету внешнего кварца, который задает частоту работы контроллера. В качестве программатора выберем — «Сервис → Программатор → Arduino as ISP».
В качестве кода берем уже написанный нами код для светодиода и подстроечного резистора и изменяем там номера пинов.
- attiny.ino
-
// Номер пина для светодиода int ledPin = 2; // Номер аналогового пина int analogPin = A2; // В эту переменную считываем значение с аналогового входа int val = ; void setup() { // Настраиваем пин светодиода на выход pinMode(ledPin, OUTPUT); } void loop() { // Считываем значение val = analogRead(analogPin); // val содержит значение из диапазона 0..1023, а диапазон значений для analogWrite // 0..255. Для этого делим val на 4 analogWrite(ledPin, val4); }
Getting started with MicroCore
Ok, so you have downloaded and installed MicroCore, but how do you get the wheels spinning? Here’s a quick start guide:
- Hook up your microcontroller as shown in the .
- Open the Tools > Board menu item, and select ATtiny13.
- Select your prefered BOD option. Read more about BOD .
- Select your prefered clock frequency. 9.6 MHz internal oscillator is the default setting. Do not use the external oscillator option if you don’t have an external clock source. Remember that a regular two pin crystal will not work on the ATtiny13.
- If you want you can change the compiler flags for further optimization. Leave this on the default setting if you don’t know what compiler flags are.
- Select what kind of programmer you’re using under the Programmers menu. Use one of the slow programmers if you’re using the 600 or 128 kHz oscillator option, e.g USBtinyISP (slow).
- Hit Burn Bootloader to burn the fuses. The «settings» are now stored on the microcontroller!
- Now that the correct fuse settings is sat you can upload your code by using your programmer tool. Simply hit Upload, and the code will be uploaded to the microcontroller.
- If you want to do some changes; change the BOD option for instance, you’ll have to hit Burn Bootloader again.
Programmers
When the ATtiny13 is running from the internal 600 or 128 kHz oscillator, it may be too slow to interact with the programming tool. That’s why this core adds some additional programmers to the list, with the suffix (slow). These options makes the programmers run at a lower clock speed, so the microcontroller can keep up.
Select your microcontroller in the boards menu, then select the clock frequency. You’ll have to hit «Burn bootloader» in order to set the correct fuses and upload the correct bootloader.
Make sure you connect an ISP programmer, and select the correct one in the «Programmers» menu.
Обозначения индексов микроконтроллеров
После обозначения базовой версии и серии микроконтроллера, через дефис идет индекс, указывающий вариант исполнения микроконтроллера.Индекс состоит из 1-2 цифр, которые означают максимальную частоту, на которой микроконтроллер может стабильно работать при нормальном для него напряжении питания, и из 1-3 букв, которые обозначают вариант корпуса, температурный диапазон работы, и особенности изготовления.Первая буква (или две буквы) после частоты обозначает тип корпуса:P — корпус DIP (PDIP)A — корпус TQFPM — корпус MLFTS — корпус SOT-23 (ATtiny4/5/9/10)J — корпус PLCCA — корпус UDFN/USONC — корпус CBGACK — корпус LGAS — корпус EIAJ SOICSS — узкий корпус JEDEC SOICT — корпус TSOPX — корпус TSSOP
Следующая буква означает температурный диапазон и особенности изготовления:C — коммерческий температурный диапазон (0 °C — 70 °C)A — температурный диапазон −20 °C — +85 °C, с использованием бессвинцового припояI — индустриальный температурный диапазон (-40 °C — +85 °C)U — индустриальный температурный диапазон (-40 °C — +85 °C), с использованием бессвинцового припояH — индустриальный температурный диапазон (-40 °C — +85 °C), с использованием NiPdAuN — расширенный температурный диапазон (-40 °C — +105 °C), с использованием бессвинцового припояF — расширенный температурный диапазон (-40 °C — +125 °C)Z — автомобильный температурный диапазон (-40 °C — +125 °C)D — расширенный автомобильный температурный диапазон (-40 °C — +150 °C)
Еще в самом конце может быть буква R, которая означает, что микроконтроллеры упакованы в ленты для автоматизированных систем сборки
К примеру:ATmega8L-8AU — максимальная частота — 8 мегагерц, корпус — TQFP, индустриальный температурный диапазон (-40 °C — +85 °C), с использованием бессвинцового припояATmega8-16PN — максимальная частота — 16 мегагерц, корпус — PDIP, расширенный температурный диапазон (-40 °C — +105 °C), с использованием бессвинцового припоя
Если вы знаете, что обозначают буквы и цифры в маркировке микроконтроллера, значит знаете основные параметры микроконтроллеров, и всегда сможете подобрать для своей конструкции наиболее оптимальный вариант микроконтроллера.
Линейка микроконтроллеров ATmegaЛинейка микроконтроллеров ATtiny
Маркировка микроконтроллеров AVR ATmega и ATtinyМаркировка микроконтроллеров AVR семейства ATmega и ATtiny, базовые версии и версии микроконтроллеров, индекс микроконтроллеров
Published by: Мир микроконтроллеров
Date Published: 04/27/2015
Программирование контроллеров AVR AtTiny13 / 25
Материал собран по интернету, любой желающий может найти
самостоятельно множество вариантов схем, плат, программ.
Я выбрал наиболее простой для наколенного исполнения способ
и описываю его.
Для начала вам понадобится программа.
Я предлагаю использовать.
PonyProg.
На всякий случай я скачал последнюю, на данный момент,
версию и положил здесь.
С этой версией у меня все зашилось. Я специально это
проверял при подготовке статьи.
Теперь понадобится программатор
Я использовал так называемые .
Мой макет выглядит так.
Но так делать я лично не рекомендую, поскольку это не
надежно и есть опасность замыканий, и как следствие выгорания LPT порта.
Схема. У меня микросхема программируется, когда питание на
нее идет от 13 ноги DRB-25M, но это не очень хорошо,
поэтому питание предлагается брать на USB разъеме. Там гарантированные 5В.
Плата для лазерно-утюжного метода:
Вариант для печати лежит тут.
Сборка вот:
Для изготовления понадобятся 4 сверла, но можно обойтись и
двумя диаметрами
1 и 3мм.
Как работать с ПО
Устанавливаем PonyProg.
Напомню, дистрибутив есть здесь.
После установки и запуска возникнет такое окно.
Далее программатор сообщит, что надо выполнить калибровку и
установить тип адаптера.
Калибровка выполняется автоматически и там показывать
нечего.
А вот так надо выставить тип адаптера.
Далее открываем HEX файл.
Жмем кнопку Write Program Memory (пятая слева кнопка)
И радуемся, что микросхема удачно зашилась.
Жмем кнопку Configuration and security
bits (Восьмая слева)
Программа считает текущие параметры.
На всякий случай жмем Read.
Выставляем биты как указано и жмем Write.
ВНИМАНИЕ! Не верная установка
какого-нибудь бита может привести к тому, что контроллер придется выбросить,
или искать профессиональный программатор, для того, чтобы привести его в
чувство
Некоторые мои проекты требуют использования 1 вывода процессора,
для его использования необходимо зашить бит RSTDISBL, что PonyProg делать не умеет, тут придется воспользоваться
CodeVision. Но учите, сделать это можно только один раз
После прошивания этого бита, больше таким программатором
стереть/прошить этот контроллер не удастся. В проектах, где это необходимо, я отмечаю об этом специально.
Теперь микросхема зашита и готова к работе. Удачи.
Да, также через такой адаптер можно шить из CodeVision AVR.
Открывем программу
Настраиваем тип программатора
Открываем проект
Настраиваем, если необходимо
Компиллируем
Выставляем настройки программирования и программируем, нажав Programm All
Про EEPROM отвечаем нет
Про RSTDISBL отвечаем да, и после этого чип больше не перепрограммируется этим программатором!
Blink led with Atmel Attiny13A, Arduino Ide and Proteaus Simulation
To prove that the upper configuration works i made a simple blink led project/program. Led toggles at very half a second. I connected the led to pin#PB4 of attiny13a. I used an internal 4.8Mhz crystal as clock source. On reset pin i connected a push button for resenting the microcontroller to run over again. Whole of the circuit is powered using a CR2032 cell. Cr2032 is a 3.3v coin cell. Attiny consumes very little power during operation. Atmel attiny series microcontrollers are considered to be the master’s of hibernation. They can remain in hibernation for years with very minute amount of power supply. Circuit diagram of the project is given below.
Project Circuit diagram Attiny13A Blink example.
Step 3: Programming
You are now all set to upload your sketch to the attiny13a, make good use of its 1024 bytes of internal memory! 😉
- Open the IDE
- Click File>Examples>Basic>Blink
- Change line 11 from «pinMode(13, OUTPUT);» to «pinMode(4, OUTPUT);»
- Change line 15 from «digitalWrite(13, HIGH);» to «digitalWrite(4, HIGH);»
- Change line 17 from «digitalWrite(13, LOW);» to «digitalWrite(4, LOW);»
- Click File>Upload using programmer
The IDE should now upload the sketch to your chip via your ArduinoISP programmer!
Once this is complete (~5 seconds) your LED should start blinking with a 1 second interval
To address pins in the Arduino IDE you should use their PB number from the diagram below (EG Pin1 = PB1 etc..)
If all you wanted to do was learn to program your chip, then congratulations! You are done!
If you would like to build a RC Servo Interpreter then keep reading.