Программирование attiny13 для начинающих – Переходим от Arduino к программированию ATtiny13 на C / Arduino / RoboCraft. Роботы? Это просто!

Занятие №1. Простейшая программа — Микроконтроллеры и Технологии

Дата публикации: .

Задача: Разработаем программу управления одним светодиодом. При нажатии на кнопку светодиод горит, при отпускании гаснет.

Для начала разработаем принципиальную схему устройства. Для подключения к микроконтроллеру любых внешних устройств используются порты ввода-вывода. Каждый из портов способен работать как на вход так и на выход. Подключим светодиод к одному из портов, а кнопку к другому. Для этого опыта мы будем использовать контроллер Atmega8. Эта микросхема содержит 3 порта ввода-вывода, имеет 2 восьмиразрядных и 1 шестнадцатиразрядный таймер/счетчик. Также на борту имеется 3-х канальный ШИМ, 6-ти канальный 10-ти битный аналого-цифровой преобразователь и многое другое. По моему мнению микроконтроллер прекрасно подходит для изучения основ программирования.

Для подключения светодиода мы будем использовать линию PB0, а для считывания информации с кнопки воспользуемся линией PD0. Схема приведена на рис.1.

Рис. 1

Через резистор R2 на вход PD0 подается плюс напряжения питания, что соответствует сигналу логической единице. При замыкании кнопки напряжение падает до нуля, что соответствует логическому нулю. В дальнейшем R2 можно исключить из схемы, заменяя его на внутренний нагрузочный резистор, введя необходимые настройки в программе. Светодиод подключен к выходу порта PB0 через токоограничивающий резистор R3. Для того чтобы зажечь светодиод надо подать в линию PB0 сигнал логической единицы. Задающий тактовый генератор будем использовать внутренний на 4MHz, так как в устройстве нет высоких требований к стабильности частоты.

Теперь пишем программу. Для написания программ я использую программную среду AVR Studio и WinAvr. Открываем AVR Studio, всплывает окошко приветствия, нажимаем кнопку «Создать новый проект» (New project), далее выбираем тип проекта — AVR GCC, пишем имя проекта например «cod1», ставим обе галочки «Создать папку проекта» и «Создать файл инициализации», нажимаем кнопку «Далее», в левом окошке выбираем «AVR Simulator», а в правом тип микроконтроллера «Atmega8», нажимаем кнопку «Финиш», открывается редактор и дерево категорий проекта — начальные установки закончены.

Для начала добавим стандартный текст описаний для Atmega8 с помощью оператора присоединения внешних файлов: #include

синтаксис директивы #include

#include <имя_файла.h>
#include “имя_файла.h”

Угловые скобки < и > указывают компилятору, что подключаемые файлы нужно сначала искать в стандартной папке WinAvr с именем include. Двойные кавычки “ и “ указывают компилятору начинать поиск с директории, в которой хранится проект.

Для каждого типа микроконтроллера есть свой заголовочный файл. Для ATMega8 этот файл называется iom8.h, для ATtiny2313 – iotn2313.h. В начале каждой программы мы должны подключать заголовочный файл того микроконтроллера, который мы используем. Но есть и общий заголовочный файл io.h. Препроцессор обрабатывает этот файл и в зависимости от настроек проекта включает в нашу программу нужный заголовочный файл.

Для нас первая строчка программы будет выглядеть вот так:

#include <avr/io.h>

Любая программа на языке Си должна обязательно содержать одну главную функцию. Она имеет имя main. Выполнение программы всегда начинается с выполнения функции main. У функции есть заголовок – int main(void) и тело – оно ограниченно фигурными скобками {}.

int main(void)
{
тело функции
}

В тело функции мы и будем добавлять наш код. Перед именем функции указывается тип возвращаемого значения. Если функция не возвращает значение – используется ключевое

void.

int – это целое 2-х байтное число, диапазон значений от – 32768 до 32767

После имени функции в скобках () указываются параметры, которые передаются функции при ее вызове. Если функция без параметров – используется ключевое слово void. Функция main содержит в себе набор команд, настройки системы и главный цикл программы.

Далее настраиваем порт D на вход. Режим работы порта определяется содержимым регистра DDRD(регистр направления передачи информации). Записываем в этот регистр число «0x00» (0b0000000 – в двоичном виде), кроме кнопки к этому порту ничего не подключено, поэтому настраиваем весь порт D на вход. Настроить порт поразрядно можно записав в каждый бит регистра числа 0 или 1 (0-вход, 1-выход), например DDRD = 0x81 (0b10000001) — первая и последняя линия порта D работают на выход, остальные на вход. Необходимо также подключить внутренний нагрузочный резистор. Включением и отключением внутренних резисторов управляет регистр PORTx, если порт находится в режиме ввода. Запишем туда единицы.

Настраиваем порт B на выход. Режим работы порта определяется содержимым регистра DDRB. Ничего кроме светодиода к порту B не подключено, поэтому можно весь порт настроить на выход. Это делается записью в регистр DDRB числа «0xFF». Для того чтобы при первом включении светодиод не загорелся запишем в порт B логические нули. Это делается записью PORTB = 0x00;

Для присвоения значений используется символ «=» и называется оператором присваивания, нельзя путать со знаком «равно»

Настройка портов будет выглядеть так:

DDRD = 0x00;
PORTD = 0xFF;
DDRB = 0xFF;
PORTB = 0x00;

Пишем основной цикл программы. while («пока» с англ.) — эта команда организует цикл, многократно повторяя тело цикла до тех пор пока выполняется условие, т. е пока выражение в скобках является истинным. В языке Си принято считать , что выражение истинно, если оно не равно нулю, и ложно, если равно.

Команда выглядит следующим образом:

while (условие)
{
тело цикла
}

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

PORTB = ~PIND; //взять значение из порта D, проинвертировать его и присвоить PORTB (записать в PORTB)

// выражения на языке Си читаются справа налево

PIND регистр ввода информации. Для того, чтобы прочитать информацию с внешнего вывода контроллера, нужно сначала перевести нужный разряд порта в режим ввода. То есть записать в соответствующий бит регистра

DDRx ноль. Только после этого на данный вывод можно подавать цифровой сигнал с внешнего устройства. Далее микроконтроллер прочитает байт из регистра PINx. Содержимое соответствующего бита соответствует сигналу на внешнем выводе порта. Наша программа готова и выглядит так:

#include <avr/io.h>

int main (void)
{
DDRD = 0x00; //порт D - вход
PORTD = 0xFF; //подключаем нагрузочный резистор
DDRB = 0xFF; //порт B - выход
PORTB = 0x00; //устанавливаем 0 на выходе

while(1)
{
PORTB = ~PIND; //~ знак поразрядного инвертирования
}
}

В языке Си широко используются комментарии. Есть два способа написания.

/*Комментарий*/

//Комментарий

При этом компилятор не будет обращать внимание на то что написано в комментарии.

Если используя эту же программу и подключить к микроконтроллеру 8 кнопок и 8 светодиодов, как показано на рисунке 2, то будет понятно что каждый бит порта D соответствует своему биту порта B. Нажимая кнопку SB1 — загорается HL1, нажимая кнопку SB2 — загорается HL2 и т.д.

Рисунок 2

В статье были использованы материалы из книги Белова А.В. «Самоучитель разработчика устройств на AVR»

radioparty.ru

Как я ATtiny13-SU прошивал — Сообщество «Кулибин Club» на DRIVE2

Оригинал смотреть здесь

Не так давно затеялся с RGB лентой и начал плодить разные варианты контроллеров для ее управления:
1ый вариант
2ой вариант
3ий вариант
4ый вариант
Но в последнем «прочтении» микроконтроллер установлен для поверхностного монтажа в корпусе SO8.

Собственно вопрос! Как же прошить микроконтроллер для этой платы? Подходящий для этих целей программатор собран, остается его подключть к МК. Но как с дип корпусами в панельку наш tiny13 не вставить, тысячу раз перепаивать чип с места на место тоже не хочется. Впаивать провода от программатора непосредственно в собранную плату тоже не удобно, да и входная емкость затворов полевых транзисторов скорее всего не даст корректно проходить сигналам программирования. И я решил поступить следующим образом:

Вырезал кусочег макетки под соик корпуса так, чтобы можно было на нем разместить микроконтроллер:

Фрагмент макетки для установки микроконтроллера для программирования


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

Переходник для подключения программатора


К переходнику прилепил макетку для планарного МК через штырьки от PLD разъема

Вынужденная гибридизация двух макеток)))


Теперь аккуратно кладу микроконтроллер на макетку

Установка МК


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

Прищепил)))

Ну а потом все как обычно, подключаем программатор и питание, запускаем соответствующий софт и шьем сколько душеньке будет угодно!

www.drive2.ru

Обновленное руководство по программированию Attiny13 или Attiny13a с помощью Arduino IDE » NGIN.pro

Обновленное руководство по программированию Attiny13 или Attiny13a с помощью Arduino IDE
 
Микросхемы серии ATtiny13 являются чрезвычайно дешевыми и полезными микросхемами для небольших проектов, которым не нужен Arduino, но из-за очень устаревших обучающих программ и отсутствия информации мне потребовалась большая часть дня, чтобы понять, как программировать его с помощью IDE Arduino.

Чтобы устранить эту нехватку информации, в этой статье, я покажу вам, как программировать ATtiny13 или ATtiny13a с обновленной версией Arduino IDE.

Шаг 1: Необходимое оборудование

• Arduino (Uno самый простой, но любой Arduino будет работать)
• ATtiny13 или 13a
• Макетная плата
• Перемычки

Устранение неполадок оборудования (необязательно)

• Электролитический конденсатор 10 мкФ
• Любой большой электролитический конденсатор ( 1000 мкФ, но любая емкость 100 мкФ и выше будет работать лучше всего)

Шаг 2. Настройка оборудования


 
Подключите контакты Arduino к ATtiny, как показано на изображении или в таблице ниже.

Важное примечание. Обязательно поставьте свой ATtiny так, чтобы индикаторная точка на вашем чипе находилась в левом нижнем углу, как показано на изображениях (напротив линии 5v).

Arduino ____________ ATtiny13 (а)

5v —————————- Контакт 8

GND ———————— Контакт 4

Контакт 13 ———————— Контакт 7

Контакт 12 ———————— Контакт 6

Контакт 11 ———————— Контакт 5

Контакт 10 ———————— Контакт 1

Шаг 3: Настройка Arduino As ISP
 
Перейдите в Files-Examples-ArduinoISP и нажмите «ArduinoISP». Загрузите этот эскиз на свой Arduino. Теперь ваш Arduino настроен для программирования других чипов.

Шаг 4: Загрузка файлов Attiny13 (a) Core



 
Чтобы запрограммировать ATtiny13 или 13a, вам нужно будет установить основные файлы. Для этого мы будем использовать основные файлы, которые, как мне кажется, проще всего установить и лучше всего использовать.

Чтобы установить эти файлы, откройте свою Arduino IDE и перейдите в раскрывающееся меню файлов, затем выберите Preferenses. Вставьте этот URL-адрес «https://raw.githubusercontent.com/sleemanj/optiboot/master/dists/package_gogo_diy_attiny_index.json».

Теперь перейдите на Панель инструментов и нажмите «Диспетчер плат» … Теперь прокрутите страницу вниз до тех пор, пока вы не увидите DIY ATtiny и не щелкните по кнопке установки (по умолчанию она будет самой последней).

Шаг 5: Запись загрузчика в Attiny

 
Перейдите на Панель инструментов и выберите ATtiny13. Выбрав ATtiny13, перейдите Tools-Processor и выберите ATtiny13 или ATtiny13a в зависимости от вашего чипа. Не изменяйте никаких других настроек, пока не узнаете, что они делают, они могут испортить то, что вы пытаетесь выполнить. Наконец, нажмите кнопку «Записать загрузчик» в нижней части раскрывающегося меню инструментов.

Шаг 6: Программирование чипа

 
 Чтобы убедиться, что все работает, давайте загрузим эскиз мигающего светодиода в ATtiny. Перейдите к Files-Examples-Basics и выберите Blink.

Есть несколько изменений, которые нам нужно будет сделать. В программе измените каждый экземпляр «LED_BUILTIN» на «4», потому что у нашего ATtiny нет встроенного светодиода. Этот «4» соответствует выходу 3 ATtiny ( вы можете указать, какой номер в IDE соответствует тому, что выводится на диаграмме на шаге «Устранение неполадок». Теперь вы можете загрузить этот код в ATtiny через Arduino, нажав кнопку загрузки.

Чтобы проверить, работает ли это, подключите светодиод (вместе с соответствующим резистором) между контактом 3 на ATtiny и земле, как показано на диаграмме и изображении выше. Светодиод должен мигать и включаться. Если да, поздравляю! Теперь вы знаете, как программировать ATtiny13 или ATtiny13a! Теперь вы можете отключить все провода, кроме 5В и земля.

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

Шаг 7: Устранение неполадок
 
Что-то всегда идет не так, когда работаешь с новыми вещами, все в порядке! Попробуем исправить эти проблемы. Попробуйте их в том порядке, в котором они появляются.

• Дважды проверьте все ваши подключения и положение ATtiny и LED.
• Повторно загрузите эскиз ArduinoISP в Arduino.
• Подключите электролитический конденсатор 10 мкФ между землей и Reset на Arduino. Обязательно подключите конденсатор правильно, а отрицательный — к земле.
• Подключите любой конденсатор большой емкости между 5В и землей на макетной плате, это поможет сгладить любые всплески напряжения.


ngin.pro

Программирование Attiny13 Для Начинающих — Учебники Инструкции и Мануалы

Не попадете в спешке, в азарте отладки программирование attiny13 для начинающих под высокое напряжение. Лучше один раз. ATtiny Программирование Arduino даёт не только огромный простор для фантазии и .. КМБ для начинающих ардуинщиков. Самоучитель AVR, ATmega и ATtiny для начинающих с нуля AVR с абсолютного нуля знаний о микропроцессорах и о программировании вообще.

Не попадете в спешке, в азарте отладки программирование attiny13 для начинающих под высокое напряжение. Лучше один раз. Самоучитель AVR, ATmega и ATtiny для начинающих с нуля AVR с абсолютного нуля знаний о микропроцессорах и о программировании вообще. Самый популярный и оптимальный контроллер для начинающих, да и Кстати начинающим возможно будет проще изучать программировани attiny не.

Совет — умейте правильно находить информацию! Предлагаю вам учиться на моём примере. Буду признателен если вы сможете помочь развить его оставив свои пожелания, отзывы или линки на ресурсы. Ну и задавая вопросы конечно же ; Спасибо огромное! Буду признателен за посещение спонсоров проекта или рекламы.

Сделайте доброе дело тем самым программирование attiny13 для начинающих нас поддержите! COM то что вы сейчас читаете — втупление и первые эксперементы.

Что и как подключать к МК. Макетные платы, изготовление плат, пайка. Как сделать программирование attiny13 для начинающих 5-проводков или сложнее. Поверьте, это важно и правильно! Даже DEMO версия позволят прошивать прошивки любого размера!

Вам не нужно будет тратить деньги и время на поиски и покупку радио деталей и микроконтроллеров пока вы не убедитесь в работоспособности устройства которое вы делаете!

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

В окне «Messages» появится сообщение » Success! All ready to run». Это значит ошибок нет и все готово к моделированию микроконтроллера ATmega Вверху загорелся зеленым светом светофор. Если появилось сообщение об ошибке и светофор не загорелся — вы допустили ошибку на каком то этапе. Проделайте Шаг 2 сначала и более внимательно. Нажмите мышкой светофор — это аналогично включению устройства, подаче питания на МК — программа зашитая в него начинает выполняться И тут же остановка!

Если ему что-то не нравится то симуляция прерывается и в окне Messages появляется сообщений о причине. Подробнее это будет обсуждаться позже, а пока Понаблюдайте внимательно что происходит на экране. В файле проекта — программирование attiny13 для начинающих. Остановите программу красной кнопкой STOP.

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

В окне Messages появится сообщение о том что программа остановлена пользователем — User break. Разверните окно Code — в нем отображается исходный код программы которая «прошита» в МК и выполняется при симуляции. Вы увидите что некоторые строки программы подсвечиваются желтым цветом — длина подсветки пропорциональна времени которое программа тратит на выполнение этой строки. Найдите строку в программе: Сверните окно Code и нажмите программирование attiny13 для начинающих для продолжения симуляции.

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

Теперь продолжите симуляцию — надеюсь вы поняли как это сделать! Вычтите из него время прошлой остановки и вы получите время выполнения этого участка программы. О более точном измерении интервалов времени я расскажу вам позже.

Информация об остановках программы отображается и в окне Messages. Вам предстоит многократно менять создаваемые программы — программирование attiny13 для начинающих процессе отладки, пока они не начнут работать так как вы хотите. Разверните окно с текстом программы. Вы видите что программа начинается с оформленного в виде комментария краткого описания того что она делает и некоторых технических параметров.

Программа написана на языке Си — который программирование attiny13 для начинающих пожалуй самым популярным и удобным при программировании для МК.

Не пытайтесь сразу понять что написано в этой программе. Сейчас это вам не нужно! После внесения изменений в исходный текст программы ее нужно c компили- ровать. Компилятор должен превратить вашу программу в файл «прошивку». Для выполнения компиляции нажмите кнопку » Make the project «.

После компиляции появится информационное окно в котором сообщается что наша программа содержит целых 5 ошибок! В чем же дело? При наведении курсора можно увидеть описание ошибок. Этот файл включен в исходный текст программы строкой: В инсталяции компилятора его. Поэтому — создание платы и пайка — не ко.

А демо-платы недешевые, да и не всегда они программа обрезать песню скачать бесплатно так, как я хочу. Ограничивают частично возможности чипа. Himura 21 февраля в Очень хотелось стартануть с этой статьи, но меньше чем за 1к не купишь железо. KonstantinSoloviov 21 программирование attiny13 для начинающих в Как раз хватает или на отладочную плату или на контроллер с переходником и на программатор.

Himura 22 февраля в Да, меня уже направили на магазин, где можно ST-Link за купить и я его уже купил. Для домашних самоделок 8-битных микроконтроллеров вполне достаточно. Толку от преимуществ битных STM в большинстве случаев никакого. Я думаю, что этих пунктов достаточно, чтобы держаться за 8-битные атмелы.

А как же debugWIRE? Отладку в пошаговом режиме можно и в симуляторе проделать, все равно от нее толку. Согласен, про debugWire забыл.

А в симуляторе внешние устройства не всегда можно симулировать. Если, что я холивар никакой не затеваю, я, напротив, авр очень люблю… хотя уже конечно по старой памяти, скорее.

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

Есть ли там STM? Статью прочтите программирование attiny13 для начинающих раз — смысл заниматься мозголомством на восьмибитнике с эмуляцией UART, если есть МК за равную цену с аппаратным интерфейсом? Лучше заняться непосредственно логикой задачи. Для тех же стм32 посмотрите не возможности DMA — то что на восьмибитном атмеле приходится делать руками и постоянно отвлекать ресурсы МК, там выполняет ядро, только сообщая о результате да, это и чтение термодатчиков массовых типа DS18B20, и обработка ADC, когда результат надо просто взять из памяти, и работа с дисплейчиками.

Вопрос еще в инертности, зачем изучать что-то новое, старое работает. Для кода на си это не играет роли. Он в подавляющем числе случаев отлично переносим. Так что это вопрос личных пристрастий — нравится, какие проблемы. Как еще ниже и написали — плюс ко всему человеческая отладка. Вы так говорите про инертность, будто в этом есть что-то плохое. Что-то новое надо изучать тогда, когда проблем от недостатков старого больше, чем будет проблем от перехода на новое. Вот зачем мне это DMA, если в несложных проектах управление аквариумом, например нет вообще никаких проблем, чтобы программирование attiny13 для начинающих датчики и дисплейчики вручную в цикле?

Изменений минимум — это сколько? Особенно если активно используются таймеры, АЦП и. А ничего, что изменения повышают вероятность появления багов? Вопрос очень спорный, и никак не сводится к сравнению соотношения нафаршированности и цены. Поэтому не вижу причин удивляться тому, что люди не спешат штурмовать STM. Нет, инертность плохо только если пошаговая инструкция покупки авто с рук нее возникает много проблем, в попытке сделать что-то на хорошо известной базе, но неудобной.

А так — просто как фактор, почему многие не меняют изученные средства. DMA для аквариума не обязательно. Но там ведь и МК, по большому счету, тоже не нужен? Весь остальной код платформонезависим оказался. А, для STM32 потребовалось на структурах применить запрет выравнивания данных по адресам для компилятора, иначе портился пакет. Вообще более-менее нормальный код портируется без проблем.

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

AVR для начинающих.Урок 0.Знакомство с микроконтроллерами.

Ну и согласен, конечно — если есть в наличии набор отлаженых алгоритмов и методик под платформу и задачи укладываются на МК без извращений — особого смысла менять. А зачем такой прагматичный подход? Любительство тем и замечательно, что в нем мозголомство является одной из целей процесса. А кайф от процесса не уступает кайфу от конечного результата. Ну это ведь клёво, завести программный уарт, пусть даже существуют мк с аппаратным, Скачать кряк для cleanup аваст и прочими плюшками — это тоже одна целей.

Не, программирование attiny13 для начинающих если хочется — не проблема. Мне просто пока больше интересен конечный результат, какая-то нестандартная железка и базовые кирпичики чаще изобретать не хочется. Хотя было дело, однопроводный протокол с собственными плюшками делал, ага. У атмелов от 1. Сейчас редкий микроконтроллер не поддерживает такие значения. А интересного не будет. Himura 13 марта в Мне всё дошло программирование attiny13 для начинающих.

Информацию, необходимую чтобы понять все чего касаешься при мигании светодиодом пришлось собирать из разных статей и сравнивать с примером из самой библиотеки. Вердикт по названным ранее критериям: Примеры из стандартной библиотеки в iar это вообще жесть. Благо теперь перешел на сборку проектов на Linux и от iar отказался. KonstantinSoloviov 13 марта в Во-первых какую библиотеку мучаем? И мое глубочайшее убеждение, что изучать и уж тем более с нуля надо именно.

Лихие ребята из STMicroelectronics не захотели делать генерацию проекта для бесплатного Eclipse, что вообще-то логично у них же есть платная trueStudio! Кстати на том Eclipse и основанная. Но заставить все работать в Eclipse — вполне возможно! Вот здесь об этом очень правильно написано: Мой опыт работы с STM32 конечно мизерный.

Eclipse больно охоч до памяти — у меня его регулярно прибивает OOM.

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

По крайней мере, в даташиты заглядывать не программирование attiny13 для начинающих и это тоже спорный плюс ввиду отсутствия годной документации именно по фрэймфорку библиотеки. Нужен только тулчейн для ARM и в случае windows программирование attiny13 для начинающих еще mingw. Ну и firmware поискать если требуется. Не пойму зачем что-то еще, если заготовку со всей необходимой инициализацией МК, а так же весь необходимый пролог для запуска и скрипт для сборки всего этого мне поставляет STM32CubeMX — программа от производителя чипа бесплатная.

Остается только смысл добавить между фигурными скобками main. Вот и где вообще написано про это все? Что есть HAL и SPL, какие у них особенности, где их официальная документация с туториалами и какие среды для них нативны?

Ой, я пошучу ладно? Не обижайтесь в случае чего, просто анекдот Одесский вспомнился: В интернетах понятное дело, и как я не люблю хабр — это не самый большой кладезь по теме stm Часть ссылок я уже привел. Ну и гугл — наше. Комменты в заголовочных файлах и сами исходные файлы — это вообще истина в первой инстанции тут тебе и реализация и ключевые слова для дальнейшего поиска в даташитах. Ладно, за низкоуровневую доку по HAL — спасибо.

Надеюсь, в ней будут ответы на практические вопросы… Но все равно как-то все очень недоразработано и недопопуляризировано…. И зачем вам отдельный программатор берите хотя бы вот эту отладочную платку. У Атмел есть и ARMы дешевые простые, правда программирование attiny13 для начинающих не на каждом шагу купить можно: А вот кстати и Atmel тоже, как оказалось и что сильно меня удивило. Правда, складывается ощущение, что штучно у них покупать нельзя — типа не работают с частными лицами.

Для Атмелов все условия на высоте для подобного класса устройств.

Так что еще долго ее мало кто покинет. Disasm 19 февраля в Даже инфракрасный порт не нужен, можно принимать таким же светодиодом: Какой ужас у автора оригинала программирование attiny13 для начинающих кода. Причем вот это место и вовсе анекдот: Это же банальное else. Других переходов на эту метку поиском не нашлось: Я это место не трогал потому что неизвестно что меньше места будет занимать. А почему else, кстати, если код за if выполняется и при истинном условии?

Автор скорее всего понимал и экономил память программ. Однако преждевременно так оптимизировать не стоит! Ну как бы намекает. И не только этот источник. И не только для avr. GCC-это первое, что мне попалось под руку. Вы можете написать в данном случае код лучше? Тот, который соответствует стандартам? Тот, который выдает код, который понравился эксперту? Он там Keil нахваливает, который на стандарт откровенно полюетв результате чего у пользователей возникает когнитивный диссонанс, потому как банальный пример из учебника внезапно развалился, хотя стандарт гарантирует в этом случае, что пример корректный.

Самое читаемое

Please enable JavaScript to submit this form. MaksMS 1 сентября в Но в даташите датчика действительно не рекомендуется запрашивать информацию от датчика втечение первой секунды после подачи питания. Программирование Arduino даёт не только огромный простор для фантазии и возможностей, но, как и любой фреймворк , одновременно навязывает свой стиль и ограничивает возможности. Светодиоды лучше брать с тусклым свечением, разные яркие цвета могут раздражать, особенно ярко светится синий светодиод. Программная часть состоит из бесплатной программной оболочки для написания программ, их компиляции и программирования устройства. Как вы уже заметили, скетч стал заметно легче, чем для Arduino Uno.

schoolnovonic.ru

ATtiny13A недоступен для внутрисхемного (ISP) программирования

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

ATtiny13A ATtiny13A, обратная сторона

Именно такая ситуация случилась со мной совсем недавно: запас микроконтроллеров ATtiny13A был пополнен в местном магазине, платы разведены  и напилены, все распаяно и готово к программированию. И подвох ожидал там, где его в принципе не должно было быть — контроллер не увиделся программатором по ISP. Сложно запутаться в 8-ми ногах, из которых две — питание. И тем не менее, все было перепроверено, на пинах для программирования убрана периферия (например, заподозрены RC-фильтры в затягивании фронтов), но ситуация не изменилась.

Контроллеров было пять. Один запаян в плату, а остальные проверены «на весу». И у всех результат один — программатор их не видит. Что сразу стало заметно при проверке, и позволило выбрать дальнейшую тактику — вывод RESET болтается в воздухе, не имея внутренней подтяжки. Как обычный вход. Но когда фьюз RSTDISBL не активен (настройка фьюзов с завода), вывод RESET подтянут внутренним резистором, и при поданном питании на этом выводе должно быть напряжение питания.

Если же вывод RESET болтается в воздухе, это может означать только одно — фьюз RSTDISBL = 0, пин RESET настроен как обычный пин порта ввода/вывода, а следовательно, достучаться по ISP до контроллера не получится. Есть конечно еще один вариант, когда партия просто бракованная, и контроллеры в принципе не работоспособны. И здесь поставить точку может только параллельный программатор, ему совершенно без разницы, как настроены фьюзы.

Новость хорошая — в параллельном программаторе контроллер увиделся. Значит он исправен.

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

Нас интересуют фьюзы:

  • Fuse High Byte: 0xF8
  • Fuse Low Byte: 0xF6

Далее, самый беспристрастный судья — даташит.

Вот и причина — у микроконтроллера из магазина, во-первых, вывод RESET настроен как обычный пин порта (RSTDISBL = 0), и во-вторых, чтобы уже наверняка, отключено программирование по SPI (SPIEN = 1). Это гарантированно делает невозможным программирование по «пяти проводкам — MISO/MOSI/SCK/RESET». А это ведь основная аудитория программирующих, гораздо меньше людей имеют параллельный программатор.

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

Резюме:

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

enabledevice.ru

Программирование микроконтроллеров AVR под LINUX: ATTiny13 Заметки

Порты


Регистр DDRB=0 — переключение порта на вход,
DDRB=1 — переключение порта на выход
При DDRB=0, PORTB=1 включает подтягивающий регистр




Таймер Timer0


General Timer/Counter Control Register – GTCCR — основной регистр управления таймером/счетчиком
Bit0 (PSR10) = 1 — сброс предделителя. Устанавливается = 0 аппаратно.
Bit7 (TSM) = 1 — режим синхронизации. В этом режиме, значение записанное в бит PSR10 (Bit0) сохраняется, сигнал сброса предделителя удерживается. Это гарантирует остановку и конфигурирование таймера/счетчика без риска его изменение во время конфигурирования. При записи в бит TSM нуля, бит PSR10 очищается аппаратно, и таймер/счетчик запускается.

Timer/Counter Control Register A – TCCR0A — регистр A управления таймером/счетчиком
Bits 7:6 – COM0A1, COM0A0 Compare Match Output A Mode (ДШ стр. 65 — 66)
Bits 5:4 – COM0B1, COM0B10 Compare Match Output B Mode (ДШ стр. 66 — 67)
Bits 3, 2 – Res Reserved Bits
Bits 1:0 – WGM01,WGM00 Waveform Generation Mode (ДШ стр. 67)

Timer/Counter Control Register B – TCCR0B — регистр B управления таймером/счетчиком
Bit 7 – FOC0A Force Output Compare A (ДШ стр. 68)
Bit 6 – FOC0B Force Output Compare B (ДШ стр. 68)
Bits 5:4 – Res Reserved Bits
Bit 3 – WGM02 Waveform Generation Mode
Bits 2:0 – CS02, CS01, CS00 Clock Select

CS02

CS01

CS00

Описание

0

0

0

Нет источника (Таймер/Счетчик выключен)

0

0

1

Без деления

0

1

0

/ 8

0

1

1

/ 64

1

0

0

/ 256

1

0

1

/ 1024

1

1

0

Внешнее тактирование с вывода T0. Счет по заднему фронту

1

1

1

Внешнее тактирование с вывода T0. Счет по переднему фронту

Timer/Counter Register – TCNT0 — счетный 8-битный регистр. Не рекомендуется запись в регистр TCNT0 без остановки таймера/счетчика.

Output Compare Register A – OCR0A — регистр A сравнения

Output Compare Register B – OCR0B — регистр B сравнения

Timer/Counter Interrupt Mask Register – TIMSK0 — регистр маскирования прерываний таймера
Bits 7..4, 0 – Res Reserved Bits
Bit 3 – OCIE0B Timer/Counter Output Compare Match B Interrupt Enable (ДШ стр. 69 — 70)
Bit 2 – OCIE0A Timer/Counter0 Output Compare Match A Interrupt Enable (ДШ стр. 70)
Bit 1 – TOIE0 бит разрешения прерывания по переполнению (ДШ стр. 70)
Когда бит TOIE0 установлен в 1, и бит I статусного регистра установлен, прерывания по переполнению разрешены. Соответствующее прерывание выполняется когда происходит переполнение таймера/счетчика, т.е. когда устанавливается бит TOV0 регистра флагов прерываний таймера счетчика TIFR0.

Timer/Counter 0 Interrupt Flag Register – TIFR0 регистр флагов прерываний таймера счетчика
Bits 7..4, 0 – Res Reserved Bits
Bit 3 – OCF0B Output Compare Flag 0 B (ДШ стр. 70)
Bit 2 – OCF0A Output Compare Flag 0 A (ДШ стр. 70)
Bit 1 – TOV0 флаг переполнения таймера/счетчика (ДШ стр. 70)
Бит TOV0 устанавливается когда переполняется таймер/счетчик. TOV0 очищается аппаратно после выполнения перехода по вектору прерывания. Альтернативно TOV0 очищается записью логической 1 во флаг. Когда бит I статусного регистра SREGTOIE0 (разрешение прерываний по переполнению таймера/счетчика), и TOV0 установлены, прерывание по переполнению таймера/счетчика выполняется.
Установка этого флага зависит от установки битов WGM02WGM01, WGM00 (см. таблицу 33 «Waveform Generation Mode Bit Description» на стр. 67).

АЦП Analog to Digital Converter


В режиме одиночного преобразования Single Conversion mode, канал АЦП должен быть выбран до начала преобразования. Канал АЦП может быть изменен одним тактовым циклом после записи в ADSCединицы. Однако простой метод требует ожидания завершения преобразования перед сменой канала.
В режиме непрерывного преобразования выбор канала АЦП всегда должен прозводиться перед первым преобразованием. Канал АЦП может быть изменен одним тактовым циклом после записи в ADSC единицы. Однако простой метод требует ожидания завершения первого преобразования перед сменой канала. Т.к. следующее преобразование запустилось автоматически, результат будет отражать предыдущее измерение. Последующее преобразование будет отображать результат для нового канала.

ADC Multiplexer Selection Register – ADMUX
Bit 7 – Res Reserved Bits
Bit 6 — выбор опорного напряжения. 0 — напряжение питания, 1 — внутренний источник 1,1 В.
Bit 5 – ADLAR выравнивание результата: 1 — по левому краю, 0 — по правому
по правому краю — старшие два бита в ADCH, а младшие в ADCL
по левому — старшие биты в ADCH, а два младших бита в ADCL.
Bits 4…2 – Res Reserved Bits
Bits 1:0 – MUX1, MUX0 — выбор канала АЦП:
00 ADC0 (PB5)
01 ADC1 (PB2)
10 ADC2 (PB4)
11 ADC3 (PB3)

ADC Control and Status Register A – ADCSRA
Bit 7 – ADEN включение АЦП = 1, выключение АЦП = 0
Bit 6 – ADSC запуск преобразования
В режиме одиночного преобразования запись 1 запускает преобразование. В режиме непрерывного преобразования запись 1 запускает первое преобразование. Запись 1 после старта преобразования или во время преобразования увеличивает время выполнения до 25 тактовых циклов вместо положенных 13 циклов. Первое преобразование выполняет инициализацию АЦП.
Bit 5 – ADATE запись 1 включает режим авто-запуска АЦП. АЦП начинает преобразование по положительному фронту выбранного сигнала. Источник сигнала выбирается битами ADTS в регистре ADCSRB.
Bit 4 – ADIF флаг прерывания АЦП. Устанавливается по окончании преобразования. Сбрасывается аппаратно или принудительно — записью 1.
Bit 3 – ADIE бит разрешения прерываний АЦП. 1 — прерывания разрешены (бит I регистра SREG должен быть установлен).
Bits 2:0 – ADPS2, ADPS1, ADPS0 установка делителя тактовой частоты для АЦП:
0 0 0    2
0 0 1    2
0 1 0    4
0 1 1    8
1 0 0    16
1 0 1    32
1 1 0    64
1 1 1    128

ADC Control and Status Register B – ADCSRB
Bits 7, 5..3 – Res Reserved Bits
Bits 2:0 – ADTS2, ADTS1, ADTS0 выбор источника автозапуска АЦП:
0 0 0    Режим непрерывного преобразования
0 0 1    Аналоговый компаратор
0 1 0    Внешнее прерывание 0
0 1 1    Таймер счетчик сравнение с регистром Match A
1 0 0    Переполнение таймера/счетчика
1 0 1    Таймер счетчик сравнение с регистром Match B
1 1 0    Pin Change Interrupt Request

Digital Input Disable Register 0 – DIDR0
Bits 5..2 – ADC3D…ADC0отключение цифровых входов ADC3…0
Когда бит установлен в 1, цифровой входной буфер на соответствующем входе аналого-цифрового преобразователя блокируется. Пока этот бит установлен с соответствующего входа будет читаться 0. Когда не нужен соответствующий цифровой вход, отключение буфера уменьшает потребляемую мощность.

___
https://sites.google.com/a/project-ss.ru/anwi-sch/dokumentacia/attiny13

avr-prog.blogspot.com

Программирование контроллеров 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 отвечаем да, и после этого чип больше не перепрограммируется этим программатором!

 

Мои микроконтроллерные поделки:

Пульт дистанционного управления для HT6806

Пульт дистанционного управления для Hyundai H-CMD4009

Доработка датчика дождя

Удлинитель сигналов поворота

Доработка водительского стеклоподъемника

Реализация ДХО (DRL) дальний в пол накала

 

Все. Удачи!

nsskn.narod.ru