Программирование AVR BASCOM-AVR IDE Wed, August 23 2017  

Поделиться

нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


BASCOM-AVR IDE Печать
Добавил(а) microsin   

Бесплатная для персонального использования IDE, позволяющая программировать на BASIC для AVR (есть также версия для платформы 8051 или MCS51). Обладает неожиданно продвинутым функционалом.

Перечислю некоторые из имеющихся возможностей:

- поддерживаются кристаллы ATtiny, ATmega и старые традиционные AVR (AT86RF401, AT90S1200, AT90S2313, AT90S2323, AT90S2333, AT90S2343, AT90S4414, AT90S4433, AT90S4434, AT90S8515, AT90S8535, AT90CAN128, ATtiny22, ATtiny12, ATtiny13, ATtiny15, ATtiny25, ATtiny45, ATtiny85, ATtiny26, ATtiny2313, ATMEGA8, ATMEGA16, ATMEGA32, ATMEGA48, ATMEGA88, ATMEGA168, ATMEGA64, ATMEGA103, ATMEGA128, ATMEGA161, ATMEGA162, ATMEGA163, ATMEGA165, ATMEGA169, ATMEGA323, ATMEGA603, ATMEGA2560, ATMEGA2561, ATMEGA8515, ATMEGA8535);
- поддерживается работа с памятью CODE, RAM, XRAM (подключаемая дополнительная внешняя память), EEPROM;
- работа с внутренними устройствами кристаллов AVR, например watchdog, таймеры/счетчики, порты ввода вывода, последовательные порты, порт I2C (TWI) и т. д.
- отличная система помощи, включая описание библиотек с примерами, цоколевку кристаллов, мнемонику ассемблера, есть удобный встроенный просмотрщик PDF;
- можно использовать встроенные в программу конструкции на языке ассемблера;
- поддерживается множество популярных программаторов, подключаемых к LPT, COM-порту и USB (AVR ICP910 based on the AVR910.ASM application note,
STK200 ISP programmer from Atmel, PG302 programmer from Iguana Labs, simple cable programmer from Sample Electronics, KITSRUS KIT122 Programmer, MCS Universal Interface Programmer, STK500 programmer and Extended STK500 programmer, Lawicel BootLoader, USB-ISP Programmer, MCS Bootloader);
- можно работать со стандартными символьными LCD (основанные на чипе hd44780 и его аналогах), а также с графическими LCD (чип T6963C, а также SED и KS0108);
- удобная работа со строками и графикой, есть встроенный редактор знакогенератора для символьных LCD, и редактор графики с конвертером во внутренний графический формат;
- поддержка устройств, подсоединяемых по шинам I2C (шина, известная также как IIC и TWI), 1-wire (стандарт де-факто от компании Dallas Semiconductors), SPI.
- поддержка работы сети, протоколов TCP и UDP (используется чип W3100A, см. [2]);
- FAT16 и FAT32 совместно с Compact Flash;
- удобная работа с датой и временем;
- работа с AT-клавиатурой (интерфейс также называется PS/2, можно подключить к разрабатываемому устройству стандартную клавиатуру), эмуляция мыши и клавиатуры (можно подключить устройство на микроконтроллере к компьютеру, и это устройство будет работать как клавиатура или мышь);
- работа со смарт-картами BasicCards (см. [3]).

Пробную версию BASCOM-AVR можно скачать с сайта компании mcselec.com. Она не имеет функциональных ограничений, за исключением лимита на объем кода 4096 байт, запрещается только удалять из кода ссылки на компанию MCS Electronics, и отсутствуют исходники для дополнений от других компаний.

При обозначении констант может применяться бинарный формат (префикс &B) и шестнадцатеричный (префикс &H), например, каждая из 4-х строк записывает в порт B одно и то же число:

Portb = 3                ' activate pull up PINB.0 and PINB.1
Portb = &B11             ' activate pull up PINB.0 and PINB.1
Portb = &B00000011       ' activate pull up PINB.0 and PINB.1
Portb = &H03             ' activate pull up PINB.0 and PINB.1

Софтверный симулятор у меня почему-то работал криво - уходил в непрерывный запуск, когда я пытался выполнять операторы пошагово. Однако есть приятная возможность - объектный файл (расширение .obj), получающийся при компиляции, можно загрузить в AVR Studio 4, и уже отлаживать программу там, используя аппаратный эмулятор AVR JTAGICE mkII. Отлаживать можно прямо по исходному коду на Basic, работают точки останова, пошаговое выполнение. Можно открыть также окно View\Disassembler, и отлаживать программу по ассемблерным инструкциям, там также видны строки программы на Basic. Маленькое неудобство только в том, что первый раз запускать AVR Studio и открывать OBJ-файл надо вручную. Далее при внесении изменений в код и перекомпиляции AVR Studio предупреждает об этом и дает возможность перезагрузить код.

Оператор PRINT выводит текст в RS-232 - аппаратный первый UART:

PRINT "Hello world!"

Если нужно выводить во второй UART или в софтверный UART, нужно указывать номер канала:

PRINT #1, "test"

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

var1 = "this var1"
var2 = "this var2"
PRINT var1; " "; var2

Для удобства (как во всех стандартных реализациях языка Basic) можно "удлинять" строку программы символом подчеркивания:

Print "You can also use multiple" _
; "lines using _"
Print "use it for long lines"

Опция OVERLAY при задании переменных позволяет размещать переменные по заданному адресу, либо ссылаться на другие переменные, например:

Dim L As Long , Bd As Long
Dim Uh As Byte At L + 1 Overlay
Bd = 38400         ' желаемая скорость
L = 8000000 / Bd   ' разделить частоту кварца на желаемую скорость
L = L / 16         ' разделить результат на 16
L = L - 1          ' и вычесть 1
Ubrrl = L          ' когда Вы присваиваете число long, это
                   ' будет только байт (BYTE)
Ubrrh = Uh         ' мы используем overlayed переменную, которая
                   ' является старшим байтом

Еще пример из help:

Dim x as Long at $60             'long использует ячейки с адресами
                                 ' 60,61,62 and 63 hex of SRAM
Dim b1 as Byte at $60 OVERLAY    'b1 использует ячейку 60 SRAM
Dim b2 as Byte at $61 OVERLAY    'b2 использует ячейку 61 SRAM

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

[Ссылки]

1. Микросхема W3100A-LF - контроллер сети Ethernet site:efo.ru.
2. Smart card Operating System BasicCards site:basiccard.com.

 

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


Защитный код
Обновить

Top of Page