Программа авр – AVR Смотрим результаты работы | Программирование микроконтроллеров

AVR. Учебный курс. Простейшая программа.

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

Поскольку в демоплате Pinboard используется процессор ATmega16, то рассматривать мы будем именно его. Впрочем, как я уже говорил, для других контроллеров AVR это также будет справедливо. Отличия, конечно, есть, но они не существенные.

Запускаем AVR Studio (далее просто студия) и в выскочившем мастере сразу же создаем проект:

Откроется окно:

Увеличить

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

Систему команд хорошо бы распечатать себе на листочке. Их там всего около 130, кратким списком (тип команды, что делает и какие операнды) занимает пару листов формата А4. Учить не надо, прочитать раз на десять, чтобы помнить знать что у нас есть. Даже я периодически подглядываю в систему команд, хотя пишу на ассемблере уже много лет.
Я же команды которые буду использовать буду описывать по мере появления.

В центральном окне пишем код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
		.include "m16def.inc"   ; Используем ATMega16
;= Start macro.inc ========================================
 
; Тут будут наши макросы, потом. 
 
;= End macro.inc  ========================================
 
 
; RAM =====================================================
		.DSEG			; Сегмент ОЗУ
 
 
; FLASH ===================================================
		.CSEG			; Кодовый сегмент
 
 
; EEPROM ==================================================
		.ESEG			; Сегмент EEPROM

.include «m16def.inc» ; Используем ATMega16 ;= Start macro.inc ======================================== ; Тут будут наши макросы, потом. ;= End macro.inc ======================================== ; RAM ===================================================== .DSEG ; Сегмент ОЗУ ; FLASH =================================================== .CSEG ; Кодовый сегмент ; EEPROM ================================================== .ESEG ; Сегмент EEPROM

Это вроде шаблона для начала любого проекта. Правда кода тут 0 байт 🙂 Только директивы.
Обрати также внимание на оформление кода. Дело в том, что в ассемблере нет никаких структурных
элементов — весь код плоский, тупо в столбик. Так что поэтому чтобы он был читабелен его надо в обязательно порядке разбивать на блоки, активно пользоваться табуляцией и расставлять комментарии. Иначе уже через пару дней ты не сможешь понять, что вообще написал.

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

Как я уже говорил, в микроконтроллере куча раздельных видов памяти. И тут используется гарвардская архитектура. Т.е. исполняемый код в одном месте, а переменные в другом. Причем это разные адресные пространства. Т.е. адрес 0000 в сегменте данных это не то же что и адрес 0000 в сегменте кода. Это дает большое преимущество в том, что данные не могут испортить код, но не дает писать полиморфные программы. Такая архитектура является традиционной для микроконтроллеров.

У обычного PC компа используется другая архитектура — Фон Неймановская. Там данные и код находятся в одном адресном пространстве. Т.е., скажем, с адреса 0000 по 0100 идет код, а с 100 до FFFF данные.

В нашей же программе и код и данные располагаются на одном листе, но чтобы компилятор понял где у нас что они выделяются директивами сегментации. Пока нас интересуют директива .CSEG после нее начинается исполняемый код. Там и будем писать нашу программу.

Возьмем и напишем:

1
2
3
4
5
; FLASH ===================================================
		.CSEG		; Кодовый сегмент
		NOP
		NOP
		NOP

; FLASH =================================================== .CSEG ; Кодовый сегмент NOP NOP NOP

Что мы сделали? А ничего! Команда NOP это команда затычка. Она не делает ничего, просто занимает 2 байта и 1 такт.

Речь не о команде NOP (там и обсуждать то нечего), а о том как оно все будет выполняться.

Запускай симуляцию (Ctrl+F7) когда пробежит прогресс бар компиляции/симуляции и возле первого NOP возникнет стрелочка нажми ALT+O — выскочит диалог настройки симуляции. Там тебе надо там только выставить частоту 8Мгц. Почему 8Мгц? Просто на Pinboard частота главного проца по дефолту 8Мгц. Если у тебя свои идеи на этот счет — можешь поправить как угодно. На симуляцию это не влияет.

Вернемся к нашей симуляции. Давай посмотрим как выглядит наша программа с точки зрения машинных кодов, как размещается в памяти. Интерес, по большей части, чисто теоретический, редко когда пригождается и по этому во многих учебных курсах по AVR на это даже внимание не заостряют. А зря! Т.к. упускается глубинное ощущение кода. Открой окно просмотра программ. View — Memory или Alt+4.

Там выбери тип памяти Programm. Это и есть наш Flash сегмент. Выставим в списке cols две колонки, чтобы было наглядней.

Это наша память программ. На голубом фоне идут адреса, они, как видишь, в словах. Т.е. двум байтам соответствует один адрес. Но, на самом деле это интерпретация адресации компилятором, микроконтроллер же может оперировать в памяти программ с точностью до байта.

0000 это код команды NOP. У нас три команды, поэтому шесть нулей.

Обрати внимание на то, что команды идут с адреса 0000. Это потому, что мы не указали ничего иного. А кодовый сегмент начинается с адреса 0000.

Теперь смотрим на программный счетчик Programm Counter, он показывает адрес инструкции которая будет выполнена.

Поскольку мы только стартанули, то он равен нулю — нулевая инструкция. Нажми F11, процессор сделает шаг, программный счетчик изменится на 1 и покажет следующую инструкцию. И так до тех пор, пока не дойдет до третьего NOP, а что у нас после него? А после него у нас FF до конца памяти. FF это несуществующая инструкция, на ней виртуальный контроллер перезагрузится с ошибкой invalid opcode, а реальный контроллер ее проигнорирует, пробежав по ним, как по NOP, до конца памяти.

Сбрось симуляцию микроконтроллера (Shift+F5) и вручную выстави в Program Counter адрес 0x000002 — проц сам перепрыгнет на последнюю команду NOP. Если менять Program Counter то проц будет выполнять те команды, которые мы ему укажем. Но как это сделать в реальном контроллере? В него то мышкой не залезешь!

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

Добавим в наш код команду JMP и ее аргумент — адрес 0x000001.

1
2
3
4
5
		.CSEG			; Кодовый сегмент
		NOP
		NOP
		NOP
		JMP 0x000001

.CSEG ; Кодовый сегмент NOP NOP NOP JMP 0x000001

Команда JMP, как и все команды перехода, работает просто — записывает в Program Counter свой аргумент. В нашем случае — 0x000001.

Перекомпиль проект и посмотри на то, как меняется Program Counter (далее буду звать его PC) и вообще как теперь идет процесс выполнения программы. Видишь, после JMP в программный счетчик заносится новый адрес и процессор сразу же перепрыгивает в начало кода, но не на первую, а на вторую инструкцию. Программа зациклилась.

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

OC 94 — это код нашей комады, а 01 00 адрес перехода. Длина команды стала четыре байта. Два байта ушло на адрес. Вот, кстати, особенность памяти в том, что там данные записываются зеркально, т.е. младший байт числа по младшему адресу (порядок little-endian).

Но поскольку дальнобойные команды применяются редко, основной командой перехода в AVR является относительный переход RJMP. Основное отличие тут в том, что в PC не записывается не точный адрес куда надо перейти, а просто к PC прибавляется смещение. Вот так:

1
2
3
4
5
6
7
8
9
		.CSEG				; Кодовый сегмент
		NOP
		NOP
		NOP
		RJMP PC+2
		NOP
		NOP
		RJMP PC-6
		NOP

.CSEG ; Кодовый сегмент NOP NOP NOP RJMP PC+2 NOP NOP RJMP PC-6 NOP

По идее, должно работать напрямую, т.е. RJMP +2. Но компилятор такую запись не понимает, он оперирует абсолютными адресами, приводя их потом в нужные смещения машинного кода. Поэтому применим макроопределение PC — это текущее значение счетчика в данном месте программы. Т.е.

Наглухо зациклит программу в этой строчке.

Благодаря относительному переходу, смещение можно запихать в те же два байта, что занимает команда. При этом код относительного перехода выглядит так Сх хх, где ххх это смещение от +/-2047 команд. Что обычно хватает с лихвой. В памяти же команда перехода выглядит как хх Сх, то есть байты переставлены.

Таким образом, длина команды у относительного перехода составляет 2 байта, против четырех у абсолютного. Экономия!!! Учитывая что в обычной программе подобные переходы на каждом шагу.

Вот только что же, каждый раз самому вручную высчитывать длину перехода? Ладно тут программка в три команды, а если их сотни? Да если дописал чуток то все переходы заново высчитывать?

Угу. Когда то давно, когда компиляторов еще не было так и делали. Cейчас же все куда проще — компилятор все сделает сам. Ему только надо указать откуда и куда. Делается это с помощью меток.

1
2
3
4
5
6
7
8
9
		.CSEG		; Кодовый сегмент
M1:		NOP
		NOP
		NOP
		RJMP M2
		NOP
M2:		NOP
		RJMP M1
		NOP

.CSEG ; Кодовый сегмент M1: NOP NOP NOP RJMP M2 NOP M2: NOP RJMP M1 NOP

Метки могут быть из букв или цифр, без пробелов и не начинаться с цифр. Заканчиваются двоеточием. По факту, метка означает текущий адрес в словах. Так что ее можно использовать и в операциях. Надо только помнить, что она двубайтная, а наш контроллер однобайтный. Разобрать двубайтное значение по байтам можно с помощью директивы компилятора Low и High

Например,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
		.CSEG			; Кодовый сегмент
M1:		NOP
		NOP
		LDI	ZL,low(M2)	; Загрузили в индекс 
		LDI	ZH,High(M2)
 
		IJMP
 
		NOP
		NOP
		NOP
M2:		NOP
		RJMP M1
		NOP

.CSEG ; Кодовый сегмент M1: NOP NOP LDI ZL,low(M2) ; Загрузили в индекс LDI ZH,High(M2) IJMP NOP NOP NOP M2: NOP RJMP M1 NOP

Команда LDI загружает непосредственное значение в регистр старшей (от R16 до R31) группы. Например, LDI R17,3 и в R17 будет число 3. А тут мы в регистры R30 (ZL) загрузили младший байт адреса на который указывает метка М2, а в R31 (ZH) старший байт адреса. Если протрассируешь выполнение (F11) этого кода, то увидишь как меняются значения регистров R30 и R31 (впрочем 31 может и не поменяться, т.к. там был ноль, а мы туда ноль и запишем — адрес то мал). Смену значений регистров можно поглядеть в том же окне где и Program Counter в разделе Registers.

Команда IJMP это косвенный переход. Т.е. он переходит не по адресу который заложен в коде операции или идет после него, а по адресу который лежит в индексной регистровой паре Z. Помните я говорил, что шесть последних регистров старшей регистровой группы образуют три регистровые пары X,Y,Z используются для адресации? Вот это я и имел ввиду.

После IJMP мы переходим на нашу же М2, но хитровывернутым способом. Зачем вообще так? Не проще ли применить RJMP и JMP. В этом случае да, проще.

Но вот благодаря косвенному переходу мы можем программно менять точку перехода. И это просто зверский метод при обработке всяких таблиц и создании switch-case структур или конечных автоматов. Примеры будут позже, пока попробуйте придумать сами.

Давай подвинем нашу кодовую конструкцию в памяти на десяток байт. Добавь в код директиву ORG

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
; FLASH ===================================================
		.CSEG		; Кодовый сегмент
		NOP
 
		.ORG 0x0010
M1:		NOP
		NOP
		LDI	ZL,low(M2)	; Загрузили в индекс 
		LDI	ZH,High(M2)
 
		IJMP
 
		NOP
		NOP
		NOP
M2:		NOP
		RJMP M1
		NOP

; FLASH =================================================== .CSEG ; Кодовый сегмент NOP .ORG 0x0010 M1: NOP NOP LDI ZL,low(M2) ; Загрузили в индекс LDI ZH,High(M2) IJMP NOP NOP NOP M2: NOP RJMP M1 NOP

Скомпиль и запусти. Открой память и увидишь что в точке с адресом 0000 у нас стоит наш NOP (Точка входа должна быть, иначе симулятор скукожит от такого когнитивного диссонанса. А вот дальше сплошные FF FF и лишь начиная с нашего адреса 0x0010 пошли коды остальных команд.

То есть мы разбили код, заставив директивой ORG компилятор перетащить его дальше, начиная с 0x0010 адреса.

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

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

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

Да, у кристалла есть биты защиты. Выставил которые и все, программу можно считать только спилив крышку кристалла с помощью электронных микроскопов, что очень и очень недешево. Но иногда надо оставить прошивку на виду, но не дать сорцов. И вот тогда превращение прошивки в кашу очень даже поможет =)

Ну или написать ее на Си ;))))))) (Есть вариант шифровки прошивки и дешифровки ее на лету бутлоадером, но это отдельная тема. О ней может быть расскажу)

Еще, там, в студии, же где и программный счетчик, есть ряд интересных параметров.
Во-первых, там отдельно вынесены наши индексные пары X,Y,Z и можно не лазать на дно раздела Registers.
Во-вторых, там есть Cycle counter — он показывает сколько машинных циклов протикал наш контроллер. Один машинный цикл в AVR равен одному такту. Frequency содержит частоту контроллера в данный момент, но мы задаем ее вручную.
А в-третьих, есть Stop Watch который показывает время выполнения. В микросекундах. Но можно переключить и в миллисекунды (пошарь в контекстном меню).

Если тебе кажется, что все слишком просто и я чрезмерно все разжевываю. Хы, не расслабляйся, у меня сложность растет по экспоненте. Скоро пойдет работа на прерываниях, а потом будем писать свою операционную систему :))))))

как установить, настроить и как удалить

О расширении

Более 500 миллионов загрузок, Adblock Plus один из наиболее популярных блокировщиков рекламы в мире.

Иногда реклама на сайте становится слишком назойливой. Мигающие баннеры, всплывающие окна — и все это в большом количестве. Уже никакой информации с этой страницы не хочется – в глазах рябит. Однако бежать отсюда рано, тем более, если нашли действительно что-то интересующее вас. Можно просто отключить рекламу с помощью замечательного расширения Adblock Plus.

Адблок легко устанавливается на большинство современных браузеров и тут же встает на защиту пользователя, оставляя на сайте только нужную информацию, а стороннюю рекламу блокирует. Действует он полностью автоматически, однако возможность настройки таки есть: вы можете и добавить сайт в «исключения», чтобы его Адблок «не трогал», и заблокировать какие-то дополнительные блоки на странице (случается, что кое-что Adblock Plus рекламой не считает).

Ключевые особенности

Итак, установить расширение на свой браузер проще, чем сварить яйцо в крутую. Для этого вам необходимо перейти на официальный сайт (сделать это можно по ссылке на нашем сайте), скачать Adblock Plus бесплатно, выбрав версию для своего браузера, запустить процесс установки. После этого в правом верхнем углу, возле адресной строки, появится новый значок: красный, по форме напоминающий дорожный знак СТОП, только этот украшают белые буквы ABP.

Управлять расширением не менее просто, тем более что вы можете скачать Adblock Plus на русском языке. Нажмите на значок – и готово, перед вами вся необходимая информация в виде минималистичного меню. Например, можно посмотреть статистику блокирования. Вам укажут, сколько элементов заблокировано из имеющихся на страницы. Таким образом, даже не отключая Адблок, вы сможете прикинуть примерное количество рекламы.

Вы можете отключить рекламу на том или ином сайте. Просто нажмите верхнюю строку меню «Включен на этом сайте». Надпись изменится на «Отключен на этом сайте». Так же вы можете добавить сайты в исключения вручную. Для этого зайдите в настройки (нижняя строка меню), выберите вкладу «Белый список сайтов» и внесите туда все необходимый адреса.

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

Плюсы и минусы расширения

Плюсы:

  • Доступный и простой способ блокировки рекламы.
  • Возможна установка на русском языке.
  • Бесплатное распространение.

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

С какими браузерами совместимо

Adblock Plus совместим со всеми популярными браузерами: Google Chrome, Opera, Mozilla Firefox, Яндекс.Браузер и другие.

Адблок для Google Chrome

Adblock Plus для Google Chrome блокирует:

  • Баннеры.
  • Видео рекламу на Youtube.
  • Всплывающие окна.
  • Всю другую отвлекающую и назойливую рекламу.

Adblock Plus является самым популярным в мире расширением для браузеров (более 200 миллионов скачиваний). При установке Adblock Plus для Google Chrome ваш браузер покажет предупреждение о том, что расширение имеет доступ к вашей истории посещений и личным данным.

Внимание:  Это стандартное сообщение, расширение не собирает личную информацию.

 

Adblock Plus для Google Chrome

Адблок для Google Chrome

Адблок Mozilla Firefox

Adblock Plus для Mozilla Firefox

Адблок Mozilla Firefox

Адблок Internet Explorer

Adblock Plus для Internet Explorer

 

Адблок для Opera

Adblock Plus для Opera

Адблок для Opera

Adblock Plus для Android

Adblock Plus для Android позволяет для не специалистов в области техники уменьшать количество мобильных веб-объявлений, которые им приходится просматривать, и защищать себя от известных вредоносных сайтов. От создателей Adblock Plus, самого популярного блокиратора рекламы для браузеров настольных компьютеров, Adblock Plus для Интернет Samsung позволяет вам блокировать рекламу в браузере.

Внимание! Для использования этого приложения необходим Интернет Samsung 4.0 или более поздняя версия

Скачать Адблок для Андроид

Adblock Plus для Android

 

Скачать Adblock Plus

 

 

Adblock Plus — Википедия

Adblock Plus — расширение для браузеров и другого ПО на основе Gecko (Mozilla Firefox, включая «мобильный», Mozilla Thunderbird, Mozilla Suite, SeaMonkey, Songbird, Mozilla Prism и K-Meleon[1][2]), Blink (Google Chrome, Chromium, Opera и др.) и Trident (Internet Explorer), позволяющее блокировать загрузку и показ (англ.)русск. рекламы как на страницах сайтов, так и в поисковой выдаче[3][4].

Adblock Plus является самым популярным расширением для браузера Firefox[5]. По данным официального сайта Mozilla Firefox, по состоянию на ноябрь 2019 года, он имеет около 10 миллионов активных пользователей (из них 8% — русскоязычные) и имеет более 25 000 загрузок в день. Был скачан более 504 миллионов раз[6].

Adblock Plus можно также установить на мобильное устройство с Android или iOS как отдельное приложение Adblock Browser.

Adblock Plus блокирует HTTP-запросы в соответствии с адресами источника и может блокировать различные типы элементов страницы, например, изображения, iframes, скрипты, объекты Flash и Java и так далее. Он также использует правила скрытия — таблицы стилей, чтобы скрывать элементы, такие как текстовые объявления на странице, по мере их загрузки, вместо блокирования их; и правила блокировки всплывающих окон[7].

Предыдущая версия программы, Adblock, была выпущена Хенриком Соренсеном в 2002 году для браузера Firefox 1.0[8]. В 2004 году Майкл Макдональд выпустил форк этого расширения под названием «Adblock Plus» и версией 0.5, который имел более совершенный интерфейс, поддержку централизованных списков фильтров и возможность скрытия элементов страницы. Основные нововведения:

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

В 2006 году Макдональд прекратил разработку и передал проект Владимиру Паланту (Wladimir Palant), который выпустил Adblock Plus 0.6 с переписанным кодом в январе 2006 года[8].

Конфликт разработчиков NoScript и AdBlock Plus[править | править код]

Первого мая 2009 года Владимир Палант сообщил о том, что другое популярное расширение — NoScript — модифицирует настройки его продукта, добавляя в белый список AdBlock Plus (ABP) несколько рекламных сайтов, являющихся спонсорами авторов NoScript[9].

По словам же разработчика NoScript, Джорджио Маоне (Georgio Maone), причиной, толкнувшей его на модификацию чужого продукта, была «слишком агрессивная» блокировка вышеописанной рекламы[10].

Данный инцидент вызвал крайне негативную реакцию пользователей и вынудил автора NoScript отменить такую модификацию в следующей версии.[источник не указан 2254 дня]

Журнал PC World оценил Adblock Plus как один из 100 лучших продуктов 2007 года (95 место)[11].

В марте 2010 года на выставке CeBIT был отмечен как лучшее Open Source дополнение для Firefox[12].

Подписка для Adblock Plus представляет собой текстовый список готовых правил фильтрации с обязательным указанием минимальной версии Adblock Plus, которая требуется для правильной работы правил подписки. Подписка размещается, как правило, на сайте, и должна регулярно обновляться. Подписки создаются отдельно от Adblock Plus многими авторами.

Список подписок, рекомендуемых для разных стран и для разных языков, встроен в расширение и пользователь может выбрать подписки как из этого списка, так и любые другие. Несколько больший список опубликован на сайте Adblock Plus. Все или многие подписки устанавливать не рекомендуется, так как это сказывается как на быстродействии, так и на количестве ложных срабатываний (как правило, каждая подписка предназначена, в первую очередь, для сайтов на определённом языке).

Подписки для русскоязычных сайтов
  • RU AdList — рекомендуемая подписка для браузеров с русской локализацией (при установке Adblock Plus предлагается установить её). Постоянно обновляется, является дополнением к подписке EasyList. На сайте RU AdList можно подписаться также на дополнительные подписки: для блокировки статистических счётчиков в интернете, лишних элементов сайтов, для частичной блокировки порнографии (но авторы подписки рекомендуют пользоваться для блокировки порнографии в первую очередь не этой подпиской, а расширением CensureBlock).

Автором Adblock Plus и другими разработчиками расширений созданы дополнения, которые расширяют возможности Adblock Plus:

Element Hiding Helper (автор — Владимир Палант) — расширение, значительно упрощающее составление правил скрытия[7] (не блокировки) для Adblock Plus. Использование этих правил возможно без Element Hiding Helper.

AdChange For AdblockPlus — экспериментальное расширение (автор — Тибо Матье), заменяет удалённую Adblock Plus рекламу картинками с локального диска или интернет-альбомов пользователя.

Программы | MEGA-AVR

Популярная мощная и удобная среда разработки и отладки программ для микроконтроллеров и процессоров архитектуры ARM:
Cortex-M0, M3, M4, M7, A9

Continue reading →

Proteus — это пакет программ для автоматизированного проектирования электронных схем, версии 8.7 NEW!!! Continue reading →

В статье приводится  USB программатор микроконтроллеров AVR и AT89S, совместимый с AVR910 — с журнала Радио №7, 2008г. Continue reading →

Новая версия(но не самая последняя) на момент публикации. Программа как всегда с ключами и лицензией).

Continue reading →

Стабильная версия Proteus Professional 8.4 SP0 без глюков и вылетов (проверено на windows 7). Continue reading →

Программа схемотехнического моделирования Micro-Cap имеет удобный, дружественный интерфейс и предъявляет достаточно скромные требования к программно-аппаратным средствам персонального компьютера. Continue reading →

Новая версия компилятора кода для AVR на си. Continue reading →

Новая версия программы SinaProg 2.1.1 с русифицированным калькулятором фьюзов.
Continue reading →

Как то при разработке очередного устройства в котором данные от одного устройства к другому передавались по UART, нужно было проверить работоспособность схемы и программы. Continue reading →

LabVIEW 8.6 демонстрируют увеличение скорости работы, более эффективную загрузку процессора и повышенную надежность систем реального времени на выделенных ядрах. Continue reading →

Circuit Design Suite — одна из наиболее популярных в мире программ конструирования электронных схем, характеризуется сочетанием профессиональных возможностей и простоты, расширяемостью функций от простой настольной системы до сетевой корпоративной системы. Continue reading →

Компилятор CodeVisionAVR 2.04. Continue reading →

Новое в 8 версии: Application Framework
Теперь Proteus 8 состоит из одного приложения с большим количеством модулей (ISIS, BOM, ARES, 3D Viewer и т.д.). Continue reading →

Программы для радиолюбителей.

1) Atmel Studio
Программа Atmel StidioПроизводитель Atmel, приложение служит в качестве среды разработки приложений для устройств ARM, AVR и контроллеров Cortex-M. Программа распространяется бесплатно.

 

 

 

 

 

 

 Скачать программу вы можете с официального сайта Atmel Studio.

2) AVRDUDE

Программа AVRDUDEИнтерфейс программы консольный, предназначена, чтобы изменять и записывать данные в памяти устройств c AVR архитектурой. В программе применяется технология программирования непосредственно в самой схеме. Приложение на английском, но существуют русификаторы. Распространение свободное.

 

 

 

 

 

Скачат программу AVRDUDE.

 

3)WinAVR
Программа WinAVRИсходный код программы открыт и свободен для редактирования – это позволяет подправить ее под свои потребности. Служит для прошивки Atmel контроллеров серии AVR. Распространяется свободно и бесплатно.

 

 

 

 

  

Скачат программу WinAVR.

4)BascomAVR

Программа BascomAVR. Выполняет роль среды написания кода к Atmel устройствам AVR серии. Язык написания кодов программы, похож на Бэйсик. Доступ к ней ограничен, но есть и свободная версия, без ряда функций и максимальным кодом в 4 килобайта.

 

 

 

 

 

 Скачат программу BascomAVR.

 

5)CodeVisionAVR
Прогорамма CodeVisionAVRПрограмма проста в освоении и способна работать со всеми контроллерами AVR от IDE. В результате получается короткий и емкий код, но не слишком изящный, зато работает. Доступ к ней платный, есть свободная пробная версия, с максимальным кодом в 4 килобайта.

 

 

 

 

 

  

Скачать программу CodeVisionAVR.

6)VM LAB

Программа VMLAB. Комплекс утилит для создания и настройки кода программы, на ряду с этим создает модель работы устройства с контроллерами AVR серии. Софт распространяется свободно.

 

 

 

 

 

   

Скачать программу VM LAB.

7)MPLAB
Программа MPLABРаботает с продукцией компании Microchip как среда для интеграции кода непосредственно в чип. Бесплатная в распространении.

 

 

 

 

 

 

Скачать программу MPLAB.

 

8)WinPic800
Программа WinPic800Служит для перепрошивания контролирующих компонентов из серии контроллеров PIC. Комплект в свободном онлайн доступе. Есть русификаторы.

 

 

 

 

 

 

Скачать программу WinPic800.

9) PICPgm
Программа PICPgmОчень качественный продукт с высоким качеством работы и скоростью написания кода, стабильно работающий. Служит для перепрошивки PIC-микроконтроллеров. Свободно распространяется.

 

 

 

 

 

  

Скачать программу PICPgm.

10) CooCoxCoIDE
Программа CooCoxIDEРаботает с устройствами в чью архитектуру заложен ARM, как программная среда с высокой степенью интеграции.

 

 

 

 

 

 

Скачать программу CooCoxCoIDE.

11) Keil uVision
Программа KeiluVisionЦелый комплект программ утилит для прохождения всех по написанию управляющего софта для микроконтроллеров всех производителей. Этот комплект не бесплатный, но, чтобы ознакомиться есть демо-версия, в которой код ограничен 32 килобайтами и еще несколькими параметрами.

 

 

 

 

 

 

Скачать программу Keil uVision.

 

12) IAREmbedded
Программа I AR EmbeddedПрограммирование происходит на популярных языках программирования C, а также C++, и на ассемблере. Работает с разными производителями и семействами контроллеров. Распространение продукта платное, также доступна и версия свободного доступа, но с урезанным размером кода.

 

 

 

 

 

 

Скачать программу I AR Embedded.

 

13) Flow Сode
Программа FlowCodeОдин из самых известных графически оформленных инструментов для создания ПО к микроконтроллерам. Возможно приобретение русской версии. Распространяется за деньги, но доступна и свободная версия, ограничивающая серию PIC.

 

 

 

 

 

 

 

Скачать программу Flow Сode.

 

15) AlgorithmBuilder
Программа algorithm builderИмеет оформленную визуальную оболочку и работает с AVR устройствами от отечественного производителя. Распространяется бесплатно.

 

 

 

 

 

 

 

 

Скачать программу AlgorithmBuilder.

 

16) MikroC
Программа mikro СПакет инструментов с редакторами кода, библиотеками с готовыми функциями, отладчиками и компилллирующими пакетами. Распространяется за деньги, но есть и бесплатная версия, только ограниченная.

 

 

 

 

 

 

Скачать программу MikroC.

17) ICProgramm
Программа IC ProgrammОдин из популярнейших механизмов с оболочкой для создания к микроконтроллерам программного обеспечения всех видов и производителей. Русифицированная версия. Распространяется без ограничений.

 

 

 

 

 

 

 

Скачать программу ICProgramm.

18)PonyProgramm 2000
Программа PonyProgrammПрограмматор для работы с устройствами памяти и микроконтроллерами многих фирм через последовательный доступ. Много встроенных функций и простота в использовании. Распространяется бесплатно.

 

 

 

 

 

 

Скачать программу PonyProgramm 2000.

19) Sina Programm
Программа Sina ProgrammЭто графическая рубашка для консольного проекта AVRdude, со встроенным и удобным fust счетчиком переключателей. Распространяется бесплатно.

 

 

 

 

 

 

 

Скачать программу Sina Programm.

  20) UniProf
Программа UniProfОчень прост в использовании, распространяется абсолютно свободно и работает со всеми устройствами серии AVR.

 

 

 

 

 

 

Скачать программу UniProf.

21) Code Composer Studio
Программа Code Composer StudioЭто мощная комплекс программного обеспечения для программирования и прошивки от производителя TexInstInc. Для использования нужно купить. Есть пробная версия с ограничениями со свободным доступом.

 

 

 

 

 

 

 

Скачать программу Code Composer Studio.

22) Tiva Ware
Программа  TivaWareОчень хорошие и удобные специально под TIVA написанные библиотеки для контроллеров от техасского производителя. Пакет бесплатный.

 

 

 

 

 

Скачать программу Tiva Ware.

 

23) FastAVR
Программа  FastAvrРаботает на воьмибитных контроллерах серии AVR. Удобен, так как компилируется язык, похожий на Бэйсик.

 

 

 

 

 

 

 

 Скачать программу FastAVR.

24)Sourcery CodeBench
Служит чтобы создавать приложения под ARM, Cold Fire и целый ряд других. Работает на C, а также C++. Стоимость составляет четыреста долларов (есть пробная версия на месяц).

 

 

 

 

 

 

Скачать программу Sourcery CodeBench.

 

25) Code System
Программа CodesystemЦелый комплект программ и инструментов для через который удобно работать с промышленным оборудованием, ориентированным на рутинную работу. Есть полностью русская версия. Распространяется свободно и без ограничений.

 

 

 

 

 

 

 

Скачать программу Code System

26) FlashMagic
Программа  Flash MagicРаспространение этого продукта свободное, утилита направлена на программирование продукта именно от NXP – S.

 

 

 

 

 

 

 

Скачать программу FlashMagic.

 

27) STEPSEVEN-Micro/WIN
Программа Step sevenСоздан специально чтобы работать с устройствами SIMATIC, производимыми Siemens. Бесплатной версии нет.

 

 

 

 

 

 

 

Скачать программу STEPSEVEN-Micro/WIN.

 

28) 4DWorkshopIDE
Программа  4D Workshop IDEРаботает с ориентированными на графику контроллерами и с дисплейными модулями от 4D Systems. Абсолютно бесплатная.

 

 

 

 

 

 

 

Скачать программу 4DWorkshopIDE. 

Comments are now closed for this entry

AVR Studio ликбез | Электроника для всех

Установка.
Сначала надо с сайта atmel.com скачать последнюю версию AVR Studio. Весит она что то около 30 метров. Можно и старые релизы использовать, не преступно, но там может не оказаться новых микроконтроллеров. AVR Studio, как и многие буржуйские программы, крайне хреново понимает русские имена и длинные пути. Поэтому ставь ее по максимально простому пути, что то вроде C:\AVR\ А сами проекты тоже держи как можно ближе к корню, У меня, например, это D:\Work\AVR — никаких имен длинней 8 символов и, конечно же, никаких русских символов. Привет родимый DOS, как говорится.

Да, если планируешь (если не планируешь, то все равно скачай и поставь, не помешает) писать на Си, то рекомендую скачать GCC aka WinAVR и установить ее ДО студии, туда же, поближе к корню. Тогда студия подхватит ее в качестве своего плагина. Если поставить после, то тоже, может быть подхватит, но возможны проблемы.

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

В центре будут уже созданные проекты, а нас интересует кнопка New Project. Жми ее и вводи параметры будущей разработки.

Выбирай тип языка на котором будешь писать: Си или Ассемблер, а также имя будущего проекта. Также не помешает указать путь к папке с проектами. Студия умная и запомнит ее раз и навсегда и под каждый новый проект будет генерить новую папку. Так что скоро там будет полный гадюшник :))))) Дальше есть две кнопки Finish и Next. Тебе надо жать на Next. Нажмешь на финиш и получишь пустой проект в котором даже процессор то не определен. А вот если Next, то будет следующий диалог:

Сильно сомневаюсь, что у тебя первоначально сразу же будет AVR Dragon или какой нибудь ICE 2, так что мы будем симулировать. Выбирай симулятор. Чем отличается AVR Simulator от AVR Simulator2 я так и не понял, работают одинаково. Выбрал? Вот теперь FINISH HIM! В смысле жми Finish.

Во, появилось пустое окно проекта. Оглядим что тут есть:

Увеличить скриншот

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

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

Подробно по пунктикам. Первый ряд.

  • Бинокль — поиск в коде. Кроме поиска там есть еще Mark ALL — пометить строки с найденым барахлом. Появляются такие голубенькие меточки возле строк.
  • Синий флажок и компания — поставить/снять пометку вручную. Удобнейшая вещь эти пометки. Пользуйся!
  • Две фиговины для форматирования блоков текста. Типа выделил процедуру, а потом подвинул ее влево или вправо. Сишники оценят 🙂
  • Синяя муть и птичка — кнопки для программаторов понтовых. Если их у тебя нет, то забей.
  • Стрелка Play — запуск симуляции.
  • Квадратик Stop — остановка симуляции. Все просто.
  • Листок со стрелочкой — запуск программы.
  • Пауза — остановка программы там где получилось
  • синяя стрелка аля Enter — виртуальный Reset контроллера
  • Желтая стрелка — показать где программа находится сейчас. Жутко полезно когда проект побит на части, и ты пытаешься найти где прога стоит в данный момент.
  • Три стандартные кнопки любого отладчика Step Into — сделать шаг по тексту программы. Step Over — сделать шаг по тексту, но не заходить в процедуры и функции (процедуры и функции при этом выполняются, просто нам это не показывают). Step-Out — Выход из процедуры на уровень выше. Конечно, назад МК шагать не умеет, но вот если там цикл какой, то Step Out это равносильно тому, что МК сделает одну итерацию цикла и встанет над инструкцией.
  • Фигурные скобки и стрелка — выполнить программу до текущего положения курсора. Пощелкай этой кнопочкой и сам поймешь что это
  • Красная точка — BreakPoint поставить бряк. О брейпоинтах ниже.
  • Крестик и красная жопа — нажмешь ее и всем брейкпоинтам в проге настанет жопа — их удалит.
  • Очки — это Watch, способ подглядывать за какой нибудь переменной, адресом в памяти или регистром. О них тоже потом.
  • Кнопки переключалок окон, включать выключать разные блоки интерфейса. Потыкайся по ним и поймешь сам.


Второй ряд:
Тут ничего не работает, т.к. нет подключенных девайсов (JTAG или STK500) и нас интересуют только две последние кнопки.
Первая из них это компиляция проекта, вторая компиляция и запуск симуляции.

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

1
2
3
4
5
	.include "m8def.inc"	; Используем мега8
M1:	NOP			; Ничего не делаем (команда NOP просто пропускает один такт и занимает одно слово в памяти)
	NOP			; Опять ничего не делаем
	NOP			; И снова ничего не делаем
	RJMP M1			; Возвращаемся к метке М1 и снова ничего не делаем

.include «m8def.inc» ; Используем мега8 M1: NOP ; Ничего не делаем (команда NOP просто пропускает один такт и занимает одно слово в памяти) NOP ; Опять ничего не делаем NOP ; И снова ничего не делаем RJMP M1 ; Возвращаемся к метке М1 и снова ничего не делаем

Куда уж проще 🙂 То сможешь скомпилировать проект и запустить процесс отладки.

При запуске симулятора повылазит куча разных новых окошек, о которых я тебе сейчас расскажу. Гляди на скриншот:

Увеличить скриншот

I/O View
Окно переферии, то что справа. Обрати внимание на заголовок окна I/O View — там есть строка поиска и ряд кнопочек. Потыкай их, чтобы получить наиболее удобное представление. Я обычно ставлю Tree View. Каждый регистр можно развернуть. Каждый бит подписан и во всплывающей подсказке написано его назначение. Также настоятельно рекомендую прошерстить контекстное меню в этом блоке и выставить там галку Show Bit numbers — удобно. Черный квадратик — бит есть. Белый — бита нет. Там же указано значение в байте. В процессе отладки каждый бит можно вручную принудительно выставить или сбросить. Сэмулировав, например, нажатие кнопки.

Processor
Слева есть окно Processor, в нем указана вся подноготная ядра в текущий момент.


Memory
Окно памяти. Можно в списке выбирать любое адресное пространство. Хочешь флеш, хочешь епром, или ОЗУ.

Watch
Это Watch лист. Можно на любой адрес, переменную или любой регистр навесить гляделку и там всегда будет отображаться его содержимое. Удобно при отладке, чтобы не шерстить по коду. Также содержимое регистров/переменных подсвечивается в подсказке при наведении мыши.

Отладка в AVR Studio
Код ты написал, он у тебя даже скомпилировался. Но от радости прыгать не получается — не работает как задумано. Чтож, бывает. Начинаем избавлять код от лажи — отлаживать.
Сначала подготовь плацдарм и выстави требуемую частоту процессора.

Как выставить частоту процессора в AVR Studio:
Загадка века, между прочим. Сходу фиг найдешь. Короче, запускай процесс симуляции. Только в этом случае появится нужный пункт меню. А потом лезь в меню Debug -> AVR Simulations Options. Ну не козлы, а? В такие гребеня прятать столь важный параметр. Я почти два месяца его в свое время искал. Там же можно выставить адрес бутлоадера (он зависит от Fuse Bits в реальном МК).

Итак, симуляция запущена, а желтая стрелка бодро указывает на первую команду. Потыкай на клавишу F11, погляди как процессор шагает. Если все нормально, то переходи на то место, где у тебя предпологаемый затык. Например, не выставляется бит в порт. Можно поставить в это место курсор и нажать Run to Cursor, это если по быстрому. Но лучше использовать брякпоинт.

BreakPoint
Это точка останова. Т.е. если какое то условие совпадет, то процессор встанет как вкопанный, пока ты не примешь решение, что же делать дальше. Мощнейшее средство отладки. Самый простой случай это установка Breakpoint — кнопкой F9, она же его и убирает. Через контекстное меню брейпоинт можно временно дезактивировать. Все, если теперь ты нажмешь на F5 то проц, пойдет молотить код подряд, пока не дойдет до брейкпоинта. Где встанет как вкопаный, перейдя в пошаговый режим.

Техническое отступление, при желании можно его пропустить

Не получилось? Прождал полтора часа, а бряк так и не наступил? Ну значит где то у тебя косяк, зациклило прогу. Жми паузу и смотри где переклинило процессор. Можешь пошагово потрейсить и посмотреть в каком именно месте оно крутится. А дальше уже думать. Отработка больших циклов, может быть очень длительной. Например, задержка длительностью в двадцать секунд, эмулируется в Студии порядка пяти минут!!! (на моем древнем Athlon 950) так что если у тебя где то тупит, то не помешает глянуть на показания StopWatch — может на самом деле все еще нормально, просто подождать надо. Чтобы не тупить на таких циклах я их на время отладки закомменчиваю или меняю предделитель таймера с 1024, на 1. На логику же это не влияет, так что можно проскочить их по быстрому.


Бряки бывают разные. Добавляются Брейкпоинты из меню Debug -> New Breakpoint их там два вида. Programm Breakpoint — это тупо точки останова на конкретном месте. Их проще расставлять не отсюда, а прям в коде на нужной строке. А вот ;Data Breakpoint это уже куда интересней. Погляди на выпадающий список — есть где развернуться. Тут тебе и совпадение битов, и равенство нужному числу, и просто обращение к адресу/регистру/памяти. Причем можно указывать сразу битовую маску. А в разделе Location выбрать любой байт памяти или регистр конфигурации. Мало того, в настройках брейка можно выбрать после скольких событий должен сработать этот бряк. Например, ты поставил брейк на начало цикла, нужно тебе поглядеть что происходит на какой-нибудь 140 итерации. Не будешь же ты тыкать пока оно там все 140 раз не прокрутится. Ставим в свойствах бряка число хитов которые он должен пропустить — 140 и на 140 итерации он тормознет программу. Удобно, черт возьми!
Все брейкпоинты видны в окне Breakpoint and tracepoint. Которое возникает внизу, там же где и сообщения об ошибках, в виде закладки. Оттуда им можно менять свойства, там же можно вывести отображение числа хитов и другие свойства бряка.

Работа с портами, эмуляция кнопок и прочего внешнего оборудования.
Есть в отладке AVR Studio одно небольшое западло, точнее особенность. Когда ты устанавливаешь порт на вход, делая подтяжку на резистор:
DDR= 0
PORT=1
То вывод виртуального МК остается равен нулю!!! Таким образом, все кнопки в отладчике AVR Studio по дефолту оказываются нажатыми! Нужно вручную выставить значение PIN, протыкав соответствующие галочки. Неудобно, но так.
А еще можно заказать вывод лога из порта или заливку туда данных извне! Вот это ваще мега фича. Во время отладки, в меню Debug->Simulation Options в разделе Stimuli&Loggin можно выбрать на какой порт, повесить либо логгер, либо же загнать дамп нужных циферок. Входные данные задаются в файле *.sti в формате такого вида [номер таката]:[значение] примерно так:

000000006:01
000000010:02
000000014:03
000000018:04
000000022:05
000000026:06
000000030:07

Можно задавать его вручную, можно написать программу в той же студии, которая тебе его сгенерит :)))) А можно применить одну зашибенную программку stimuligenerator_net20, которую написал широко известный в узких кругах товарищь ARV обитающий на сайте arv.radioliga.com Кстати, рекомендую к посещению, достойный ресурс.
Программка проста как мычание — выставляешь нужные биты по времени, не забыв указать частоту принимающего МК (чтобы такты выставило правильно). Опа и никаких забот 🙂 Для работы программка правда требует .NET окружение, поэтому вначале придется скачать 30МБ .Net Frame Work если ты его себе еще не поставил.

Выходящий лог можно наблюдать в Студии в окне Message (вкладка рядом с сообщениями об ошибках компиляции) и потом поглядеть в файле. Формат там такой же (номер такта:значение порта). Такты идут по порядку при старте процессора, с нуля. Его же можно также открыть stimuligenerator‘ом. Короче, программа Must Have.

Работа с прерываниями
Ну тут все просто, хочешь прерывание — ткни вручную бит ее флага, мол вот оно, и прерывание начнется. Особенно это актуально для всяких внешних источников. Вроде UART или INT. После ручного вызова, например, RX прерывания не грех будет взять и вбить ручками в нужный регистр якобы принятое значение. Опа и словно так и было :)))))

Ладно, на сегодня хватит. Потом еще парочку телег по отладке в AVR Studio толкну. Мне, например, уже давно никакие эмуляторы вроде Proteus не нужны. На все хватает родимой студии, да UART вывода. Ну еще парочка примочек, но о них в следующий раз.

AVR. Учебный курс. Трактат о программаторах

Программа для микроконтроллера пишется на любом удобном языке программирования, компилируется в бинарный файл (или файл формата intel HEX) и заливается в микроконтроллер посредством программатора.
 

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

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

Программаторы бывают разные под разные семейства контроллеров существуют свои программаторы. Впрочем, бывают и универсальные. Более того, даже ту же простейшую AVR’ку можно прошить несколькими способами:
 

Внутрисхемное программирование (ISP)
Самый популярный способ прошивать современные контроллеры. Внутрисхемным данный метод называется потому, что микроконтроллер в этот момент находится в схеме целевого устройства — он может быть даже наглухо туда впаян. Для нужд программатора в этом случае выделяется несколько выводов контроллера (обычно 3..5 в зависимости от контроллера).


К этим выводам подключается прошивающий шнур программатора и происходит заливка прошивки. После чего шнур отключается и контроллер начинает работу.
У AVR прошивка заливается по интерфейсу SPI и для работы программатора нужно четыре линии и питание (достаточно только земли, чтобы уравнять потенциалы земель программатора и устройства):
 

  • MISO — данные идущие от контроллера (Master-Input/Slave-Output)
  • MOSI — данные идущие в контроллер (Master-Output/Slave-Input)
  • SCK — тактовые импульсы интерфейса SPI
  • RESET — сигналом на RESET программатор вводит контроллер в режим программирования
  • GND — земля

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

 

Для внутрисхемной прошивки контроллеров AVR существует не один десяток разнообразных программаторов. Отличаются они в первую очередь по скорости работы и типу подключения к компьютеру (COM/LPT/USB). А также бывают безмозглыми или со своим управляющим контроллером.
 

Безмозглые программаторы, как правило, дешевые, очень простые в изготовлении и наладке. Но при этом обычно работают исключительно через архаичные COM или LPT порты. Которые найти в современном компьютере целая проблема. А еще требуют прямого доступа к портам, что уже в Windows XP может быть проблемой. Плюс бывает зависимость от тактовой частоты процессора компьютера.
 

Так что твой 3ГГЦ-овый десятиядерный монстр может пролететь, как фанера над Парижем.
 

Идеальный компьютер для работы с такими программаторами это какой-нибудь PIII-800Mhz с Windows98…XP.
Вот очень краткая подборка проверенных лично безмозглых программаторов:
 

  • Программатор Громова.
    Простейшая схема, работает через оболочку UniProf(удобнейшая вещь!!!), но имеет ряд проблем. В частности тут COM порт используется нетрадиционно и на некоторых материнках может не заработать. А еще на быстрых компах часто не работает. Да, через адаптер USB-COM эта схема работать не будет. По причине извратности подхода 🙂
  • STK200
    Надежная и дубовая, как кувалда, схема. Работает через LPT порт. Поддерживается многими программами, например avrdude. Требует прямого доступа к порту со стороны операционной системы и наличие LPT порта.
  • FTBB-PROG.
    Очень надежный и быстрый программатор работающий через USB, причем безо всяких извратов. C драйверами под разные операционные системы. И мощной оболочкой avrdude. Недостаток один — содержит редкую и дорогую микросхему FTDI, да в таком мелком корпусе, что запаять ее без меткого глаза, твердой руки и большого опыта пайки весьма сложно. Шаг выводов около 0.3мм. Данный программатор встроен в демоплаты Pinboard

Программаторы с управляющим контроллером лишены многих проблем безмозглых. Они без особых проблем работают через USB. А если собраны на COM порт, то без извращенских методик работы с данными — как честный COM порт. Так что адаптеры COM-USB работают на ура. И детали подобрать можно покрупней, чтобы легче было паять. Но у этих программаторов есть другая проблема — для того чтобы сделать такой программатор нужен другой программатор, чтобы прошить ему управляющий контроллер. Проблема курицы и яйца. Широко получили распространение такие программаторы как:

  • USBASP
  • AVRDOPER
  • AVR910 Protoss

Внутрисхемное программирование, несмотря на все его удобства, имеет ряд ограничений.
Микроконтроллер должен быть запущен, иначе он не сможет ответить на сигнал программатора. Поэтому если неправильно выставить биты конфигурации (FUSE), например, переключить на внешний кварцевый резонатор, а сам кварц не поставить. То контроллер не сможет запуститься и прошить его внутрисхемно будет уже нельзя. По крайней мере до тех пор пока МК не будет запущен.
Также в битах конфигурации можно отключить режим внутрисхемной прошивки или преваратить вывод RESET в обычный порт ввода-вывода (это справедливо для малых МК, у которых RESET совмещен с портом). Такое действо тоже обрубает программирование по ISP.
 

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

Параллельное программирование во много раз быстрей последовательного (ISP), но требует подачи на RESET напряжения в 12 вольт. А также для параллельной зашивки требуется уже не 3 линии данных, а восемь + линии управления. Для программирования в этом режиме микроконтроллер вставляется в панельку программатора, а после прошивки переставляется в целевое устройство.
 

Для радиолюбительской практики он особо не нужен, т.к. ISP программатор решает 99% насущных задач, но тем не менее параллельный программатор может пригодиться. Например, если в результате ошибочных действий были неправильно выставлены FUSE биты и был отрублен режим ISP. Параллельному программатору на настройку FUSE плевать с высокой колокольни. Плюс некоторые старые модели микроконтроллеров могут прошиваться только высоковольтным программатором.
Из параллельных программаторов для AVR на ум приходит только:

  • HVProg от ElmChan
  • Paraprog
  • DerHammer

 

А также есть универсальные вроде TurboProg 6, BeeProg, ChipProg++, Fiton которые могут прошивать огромное количество разных микроконтроллеров, но и стоят неслабо. Тысяч по 10-15. Нужны в основном только ремонтникам, т.к. когда не знаешь что тебе завтра притащат на ремонт надо быть готовым ко всему.
 

Прошивка через JTAG
Вообще JTAG это отладочный интерфейс. Он позволяет пошагово выполнять твою программу прям в кристалле. Но с его помощью можно и программу прошить, или FUSE биты вставить. К сожалению JTAG доступен далеко не во всех микроконтроллерах, только в старших моделях в 40ногих микроконтроллерах. Начиная с Atmega16.
 

Компания AVR продает фирменный комплект JTAG ICEII для работы с микроконтроллерами по JTAG, но стоит он (как и любой профессиональный инструмент) недешево. Около 10-15тыр. Также есть первая модель JTAG ICE. Ее можно легко изготовить самому, а еще она встроена в мою демоплату Pinboard.

 

Прошивка через Bootloader
Многие микроконтроллеры AVR имеют режим самопрошивки. Т.е. в микроконтроллер изначально, любым указанным выше способом, зашивается спец программка — bootloader. Дальше для перешивки программатор не нужен. Достаточно выполнить сброс микроконтроллера и подать ему специальный сигнал. После чего он входит в режим программирования и через обычный последовательный интерфейс в него заливается прошивка. Подробней описано в статье посвященной бутлоадеру.
Достоинство этого метода еще и в том, что работая через бутлоадер очень сложно закосячить микроконтроллер настолько, что он не будет отвечать вообще. Т.к. настройки FUSE для бутлоадера недоступны.
 

Бутлоадер также прошит по умолчанию в главный контроллер демоплаты Pinboard чтобы облегчить и обезопасить первые шаги на пути освоения микроконтроллеров.
 

Pinboard II
Прошивка AVR с помощью демоплаты Pinboard II (для Pinboard 1.1 все похоже)

 

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

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