http://automata.sgu.ru/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:Newpages&namespace=0&limit=100&offset=0&feed=atom
Automata - Новые статьи [ru]
2024-03-29T10:37:03Z
Материал из Automata.
MediaWiki 1.11.0
http://automata.sgu.ru/wiki/%C3%90%C2%A8%C3%90%C2%B0%C3%90%C2%B1%C3%90%C2%BB%C3%90%C2%BE%C3%90%C2%BD_%C3%90%C2%BE%C3%90%C2%BF%C3%90%C2%B8%C3%91%C2%81%C3%90%C2%B0%C3%90%C2%BD%C3%90%C2%B8%C3%91%C2%8F_%C3%91%C2%81%C3%91%E2%80%9A%C3%90%C2%B5%C3%90%C2%BD%C3%90%C2%B4%C3%90%C2%B0
Шаблон опиÑÐ°Ð½Ð¸Ñ Ñтенда
2013-07-04T09:11:39Z
<p>Описание изменений: /* Инструментальные средства */</p>
<hr />
<div>==Учебный лабораторный стенд SDK-1.1 ==<br />
==== Основной комплект документации ====<br />
*[http://ссылка текст]<br />
<br />
<br />
<br />
<b></b><br />
<br />
==== Методическое обеспечение ====<br />
<br />
'''Учебные пособия'''<br />
<br />
*[http://ссылка текст]<br />
<br />
<br />
<b></b><br />
<br />
==== Комплекс лабораторных работ (2010) ====<br />
*[http://ссылка текст]<br />
<br />
<br />
<b></b><br />
<br />
==== Инструментальные средства ====<br />
<br />
{| cellpadding="5" cellspacing="0" border="1"<br />
! align="center" style="color:white;background-color:#000000;"|Название<br />
! align="center" style="color:white;background-color:#000000;"|Скачать<br />
! align="center" style="color:white;background-color:#000000;"|Ссылка<br />
|-<br />
| align="left" |название инструментального средства<br />
| align="center" |[http://ссылка текст]<br />
| align="center" |[http://ссылка текст]<br />
|}<br />
<br />
<br />
<b></b><br />
<br />
==== Примеры программ ====<br />
<br />
{| cellpadding="5" cellspacing="0" border="1"<br />
|+ align="center" |Проекты компилируются SDCC и собираются при помощи утилиты GNU Make<br />
! align="center" style="color:white;background-color:#000000;"|Название<br />
! align="center" style="color:white;background-color:#000000;"|Скачать(Linux)<br />
! align="center" style="color:white;background-color:#000000;"|Скачать (Windows)<br />
|-<br />
| align="left" |Простейшая программа (вывод в последовательный канал "Hello!")<br />
| align="center" |[http://embedded.ifmo.ru/sdk/sdk11/soft/examples/sdcc/linux/simple_sdk_1_1-1.0.0-0-l.tar.gz ]<br />
| align="center" |[http://embedded.ifmo.ru/sdk/sdk11/soft/examples/sdcc/linux/simple_sdk_1_1-1.0.0-0-l.tar.gz ]<br />
|}</div>
Sin
http://automata.sgu.ru/wiki/%C3%90%C2%A2%C3%90%C2%B5%C3%91%C2%81%C3%91%E2%80%9A%C3%90%C2%BE%C3%90%C2%B2%C3%91%E2%80%B9%C3%90%C2%B9_%C3%91%C2%81%C3%91%E2%80%9A%C3%90%C2%B5%C3%90%C2%BD%C3%90%C2%B4
ТеÑтовый Ñтенд
2013-07-02T07:45:49Z
<p>Описание изменений: /* Примеры программ */</p>
<hr />
<div>==Учебный лабораторный стенд SDK-1.1 ==<br />
==== Основной комплект документации ====<br />
*[http://embedded.ifmo.ru/sdk/sdk11/doc/sdk11_userm_v1_0_11.pdf Учебный стенд SDK-1.1. Руководство пользователя (Версия 1.0.11)]<br />
*[http://embedded.ifmo.ru/sdk/sdk11/doc/faq.pdf SDK-1.1. Часто задаваемые вопросы]<br />
*[http://embedded.ifmo.ru/sdk/sdk11/sch/sdk1_1_sch_rev4.pdf Принципиальная электрическая схема стенда SDK-1.1 (Rev. 4)]<br />
*[http://embedded.ifmo.ru/sdk/sdk11/sch/sdk11pld.pdf Логическая схема расширителя портов ввода-вывода стенда SDK-1.1 (Rev. 1)]<br />
*[http://embedded.ifmo.ru/sdk/sdk11/sch/sdk11r3_pld_ext.pdf Логическая схема расширителя портов ввода-вывода стенда SDK-1.1 (Rev. 3, полная конфигурация)]<br />
*[http://embedded.ifmo.ru/sdk/sdk11/doc/SDK11_APPNOTE1.pdf Отличия SDK-1.1s от SDK-1.1: отличия в программировании стенда SDK-1.1 с ADuC812 и ADuC842]<br />
<br />
<br />
<b></b><br />
<br />
==== Методическое обеспечение ====<br />
<br />
'''Учебные пособия'''<br />
<br />
*[http://books.ifmo.ru/book/pdf/686.pdf Ключев, А.О., Ковязина Д.Р., Кустарев, П.В., Платунов, А.Е. Аппаратные и программные средства встраиваемых систем. Учебное пособие. – СПб.: СПбГУ ИТМО, 2010. – 290 с.]<br />
*[http://books.ifmo.ru/book/pdf/728.pdf Ключев А.О., Ковязина Д.Р., Петров Е.В., Платунов А.Е. Интерфейсы периферийных устройств. – СПб.: СПбГУ ИТМО, 2010. – 290 с.]<br />
<br />
<br />
<b></b><br />
<br />
==== Комплекс лабораторных работ (2010) ====<br />
*[http://embedded.ifmo.ru/sdk/sdk11/labs/2010/SDK-1.1_labs_r110.pdf Комплекс лабораторных работ для учебного лабораторного стенда SDK-1.1 (Версия 1.1.0)]<br />
<br />
<br />
<b></b><br />
<br />
==== Комплекс лабораторных работ (2003) ====<br />
*[http://embedded.ifmo.ru/sdk/sdk11/labs/2003/IOS2003_lab1.pdf Лабораторная работа № 1. Изучение архитектуры стенда]<br />
*[http://embedded.ifmo.ru/sdk/sdk11/labs/2003/IOS2003_lab2.pdf Лабораторная работа № 2. Управление светодиодами и последовательным интерфейсом]<br />
*[http://embedded.ifmo.ru/sdk/sdk11/labs/2003/IOS2003_lab3.pdf Лабораторная работа № 3. Таймер, использование прерываний]<br />
*[http://embedded.ifmo.ru/sdk/sdk11/labs/2003/IOS2003_lab3.pdf Лабораторная работа № 4. UART, использование прерываний]<br />
*[http://embedded.ifmo.ru/sdk/sdk11/labs/2003/IOS2003_lab5.pdf Лабораторная работа № 5. Клавиатура]<br />
*[http://embedded.ifmo.ru/sdk/sdk11/labs/2003/IOS2003_lab6.pdf Лабораторная работа № 6. Интерфейс I2C]<br />
*[http://embedded.ifmo.ru/sdk/sdk11/labs/2003/IOS2003_lab7.pdf Лабораторная работа № 7. ЖКИ]<br />
*[http://embedded.ifmo.ru/sdk/sdk11/labs/2003/IOS2003_lab8.pdf Лабораторная работа № 8. Работа со звуком]<br />
*[http://embedded.ifmo.ru/sdk/sdk11/labs/2003/IOS2003_lab9.pdf Лабораторная работа № 9. ЦАП и АЦП]<br />
<br />
<br />
<b></b><br />
<br />
==== Инструментальные средства ====<br />
<br />
{| cellpadding="5" cellspacing="0" border="1"<br />
! align="center" style="color:white;background-color:#000000;"|Название<br />
! align="center" style="color:white;background-color:#000000;"|Скачать<br />
! align="center" style="color:white;background-color:#000000;"|Ссылка<br />
|-<br />
| align="left" |Компилятор SDCC (V2.9.0)<br />
| align="center" |[http://embedded.ifmo.ru/sdk/sdk11/soft/sdcc/sdcc-2.9.0-setup.exe .exe (Windows)]<br />
| align="center" |[http://sourceforge.net/project/showfiles.php?group_id=599 Скачать]<br />
|-<br />
| align="left" |Документация к компилятору SDCC (SDCC Compiler User Guide)<br />
| align="center" |[http://embedded.ifmo.ru/sdk/sdk11/soft/sdcc/sdccman.pdf .pdf]<br />
| align="center" |[http://sourceforge.net/project/showfiles.php?group_id=599 Скачать]<br />
|-<br />
| align="left" |Инструментальные средства разработки Keil - An ARM Company для семейства микроконтроллеров MCS-51 (Keil 8051 Development Tools)<br />
| align="center" |---<br />
| align="center" |[http://www.keil.com/c51/ Скачать]<br />
|-<br />
| align="left" |Утилита make<br />
| align="center" |[http://embedded.ifmo.ru/sdk/sdk11/soft/make/make.exe .exe (Windows)]<br />
| align="center" |---<br />
|-<br />
| align="left" |Владимир Игнатов. Эффективное использование GNU Make (Версия 1.2, 2000)<br />
| align="center" |[http://embedded.ifmo.ru/sdk/sdk11/soft/make/make.pdf .pdf]<br />
| align="center" |---<br />
|-<br />
| align="left" |Инструментальная система M3P<br />
| align="center" |[http://embedded.ifmo.ru/sdk/sdk11/soft/gm3p/M3P.exe .exe (Windows)][http://embedded.ifmo.ru/sdk/sdk11/soft/gm3p/gm3p.tar.gz .tar.gz (Linux)]<br />
| align="center" |[http://embedded.ifmo.ru/viewvc/?root=gm3p GM3P (Linux)]<br />
|-<br />
| align="left" |Инструментальная система GM3P. Руководство пользователя<br />
| align="center" |[http://embedded.ifmo.ru/sdk/sdk11/soft/gm3p/gm3p_user_manual.pdf .pdf]<br />
| align="center" |---<br />
|-<br />
| align="left" |Инструментальная система T167B<br />
| align="center" |[http://embedded.ifmo.ru/sdk/sdk11/soft/t167.zip .zip (Windows)]<br />
| align="center" |---<br />
|-<br />
| align="left" |Инструментальная система T2<br />
| align="center" |[http://embedded.ifmo.ru/sdk/sdk11/soft/t2.zip .zip (Windows)]<br />
| align="center" |---<br />
|-<br />
| align="left" |Универсальный загрузчик UL3 (HEX-202 + PM3P)<br />
| align="center" |[http://embedded.ifmo.ru/sdk/sdk11/soft/ul3.zip .zip (Windows)]<br />
| align="center" |[http://embedded.ifmo.ru/viewvc/?root=ul3 svn ul3]<br />
|-<br />
| align="left" |Резидентный загрузчик HEX-202<br />
| align="center" |[http://embedded.ifmo.ru/sdk/sdk11/soft/hex_202.zip .zip (Windows)]<br />
| align="center" |---<br />
|-<br />
| align="left" |Программатор Flash для микроконтроллера ADuC812 (DL)<br />
| align="center" |[http://embedded.ifmo.ru/sdk/sdk11/soft/dl.zip .zip (Windows)]<br />
| align="center" |---<br />
|-<br />
| align="left" |Тестовые драйверы и инструментальное обеспечение для работы с учебным стендом SDK-1.1. Руководство пользователя<br />
| align="center" |[http://embedded.ifmo.ru/sdk/sdk11/doc/sdk11_programs_user_manual.pdf .pdf]<br />
| align="center" |---<br />
|-<br />
| align="left" |Демонстрационная программа для загрузки во внешнюю память (SRAM) стенда SDK-1.1<br />
| align="center" |[http://embedded.ifmo.ru/sdk/sdk11/soft/demoset.zip .zip (Windows)]<br />
| align="center" |---<br />
|-<br />
| align="left" |Демонстрационная программа [Demo + загрузчик HEX202] для загрузки во Flash-память стенда SDK-1.1<br />
| align="center" |[http://embedded.ifmo.ru/sdk/sdk11/soft/softset.zip .zip (Windows)]<br />
| align="center" |---<br />
|-<br />
| align="left" |Демонстрационные программы для стенда SDK-1.1. Руководство пользователя<br />
| align="center" |[http://embedded.ifmo.ru/sdk/sdk11/doc/DemoSetUG.pdf .pdf]<br />
| align="center" |---<br />
|}<br />
<br />
<br />
<b></b><br />
<br />
==== Примеры программ ====<br />
<br />
{| cellpadding="5" cellspacing="0" border="1"<br />
|+ align="center" |Проекты компилируются SDCC и собираются при помощи утилиты GNU Make<br />
! align="center" style="color:white;background-color:#000000;"|Название<br />
! align="center" style="color:white;background-color:#000000;"|Скачать(Linux)<br />
! align="center" style="color:white;background-color:#000000;"|Скачать (Windows)<br />
|-<br />
| align="left" |Простейшая программа (вывод в последовательный канал "Hello!")<br />
| align="center" |[http://embedded.ifmo.ru/sdk/sdk11/soft/examples/sdcc/linux/simple_sdk_1_1-1.0.0-0-l.tar.gz ]<br />
| align="center" |[http://embedded.ifmo.ru/sdk/sdk11/soft/examples/sdcc/linux/simple_sdk_1_1-1.0.0-0-l.tar.gz ]<br />
|-</div>
Sin
http://automata.sgu.ru/wiki/Makefile
Makefile
2010-11-15T07:18:01Z
<p>Описание изменений: Новая: # Hey Emacs, this is a -*- makefile -*- #---------------------------------------------------------------------------- # WinAVR Makefile Template written by Eric B. Weddington, Jцrg W...</p>
<hr />
<div> # Hey Emacs, this is a -*- makefile -*-<br />
#----------------------------------------------------------------------------<br />
# WinAVR Makefile Template written by Eric B. Weddington, Jцrg Wunsch, et al.<br />
#<br />
# Released to the Public Domain<br />
#<br />
# Additional material for this makefile was written by:<br />
# Peter Fleury<br />
# Tim Henigan<br />
# Colin O'Flynn<br />
# Reiner Patommel<br />
# Markus Pfaff<br />
# Sander Pool<br />
# Frederik Rouleau<br />
# Carlos Lamas<br />
#<br />
#----------------------------------------------------------------------------<br />
# On command line:<br />
#<br />
# make all = Make software.<br />
#<br />
# make clean = Clean out built project files.<br />
#<br />
# make coff = Convert ELF to AVR COFF.<br />
#<br />
# make extcoff = Convert ELF to AVR Extended COFF.<br />
#<br />
# make program = Download the hex file to the device, using avrdude.<br />
# Please customize the avrdude settings below first!<br />
#<br />
# make debug = Start either simulavr or avarice as specified for debugging, <br />
# with avr-gdb or avr-insight as the front end for debugging.<br />
#<br />
# make filename.s = Just compile filename.c into the assembler code only.<br />
#<br />
# make filename.i = Create a preprocessed source file for use in submitting<br />
# bug reports to the GCC project.<br />
#<br />
# To rebuild project do "make clean" then "make all".<br />
#----------------------------------------------------------------------------<br />
<br />
<br />
# MCU name<br />
MCU = atmega8535<br />
<br />
<br />
# Processor frequency.<br />
# This will define a symbol, F_CPU, in all source code files equal to the <br />
# processor frequency. You can then use this symbol in your source code to <br />
# calculate timings. Do NOT tack on a 'UL' at the end, this will be done<br />
# automatically to create a 32-bit value in your source code.<br />
# Typical values are:<br />
# F_CPU = 1000000<br />
# F_CPU = 1843200<br />
# F_CPU = 2000000<br />
# F_CPU = 3686400<br />
# F_CPU = 4000000<br />
# F_CPU = 7372800<br />
F_CPU = 8000000<br />
# F_CPU = 11059200<br />
# F_CPU = 14745600<br />
# F_CPU = 16000000<br />
# F_CPU = 18432000<br />
# F_CPU = 20000000<br />
<br />
<br />
# Output format. (can be srec, ihex, binary)<br />
FORMAT = ihex<br />
<br />
<br />
# Target file name (without extension).<br />
TARGET = main<br />
<br />
<br />
# Object files directory<br />
# To put object files in current directory, use a dot (.), do NOT make<br />
# this an empty or blank macro!<br />
OBJDIR = .<br />
<br />
<br />
# List C source files here. (C dependencies are automatically generated.)<br />
SRC = $(TARGET).c<br />
<br />
<br />
# List C++ source files here. (C dependencies are automatically generated.)<br />
CPPSRC = <br />
<br />
<br />
# List Assembler source files here.<br />
# Make them always end in a capital .S. Files ending in a lowercase .s<br />
# will not be considered source files but generated files (assembler<br />
# output from the compiler), and will be deleted upon "make clean"!<br />
# Even though the DOS/Win* filesystem matches both .s and .S the same,<br />
# it will preserve the spelling of the filenames, and gcc itself does<br />
# care about how the name is spelled on its command-line.<br />
ASRC =<br />
<br />
<br />
# Optimization level, can be [0, 1, 2, 3, s]. <br />
# 0 = turn off optimization. s = optimize for size.<br />
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.)<br />
OPT = s<br />
<br />
<br />
# Debugging format.<br />
# Native formats for AVR-GCC's -g are dwarf-2 [default] or stabs.<br />
# AVR Studio 4.10 requires dwarf-2.<br />
# AVR [Extended] COFF format requires stabs, plus an avr-objcopy run.<br />
DEBUG = dwarf-2<br />
<br />
<br />
# List any extra directories to look for include files here.<br />
# Each directory must be seperated by a space.<br />
# Use forward slashes for directory separators.<br />
# For a directory that has spaces, enclose it in quotes.<br />
EXTRAINCDIRS = <br />
<br />
<br />
# Compiler flag to set the C Standard level.<br />
# c89 = "ANSI" C<br />
# gnu89 = c89 plus GCC extensions<br />
# c99 = ISO C99 standard (not yet fully implemented)<br />
# gnu99 = c99 plus GCC extensions<br />
CSTANDARD = -std=gnu99<br />
<br />
<br />
# Place -D or -U options here for C sources<br />
CDEFS = -DF_CPU=$(F_CPU)UL<br />
<br />
<br />
# Place -D or -U options here for ASM sources<br />
ADEFS = -DF_CPU=$(F_CPU)<br />
<br />
<br />
# Place -D or -U options here for C++ sources<br />
CPPDEFS = -DF_CPU=$(F_CPU)UL<br />
#CPPDEFS += -D__STDC_LIMIT_MACROS<br />
#CPPDEFS += -D__STDC_CONSTANT_MACROS<br />
<br />
<br />
<br />
#---------------- Compiler Options C ----------------<br />
# -g*: generate debugging information<br />
# -O*: optimization level<br />
# -f...: tuning, see GCC manual and avr-libc documentation<br />
# -Wall...: warning level<br />
# -Wa,...: tell GCC to pass this to the assembler.<br />
# -adhlns...: create assembler listing<br />
CFLAGS = -g$(DEBUG)<br />
CFLAGS += $(CDEFS)<br />
CFLAGS += -O$(OPT)<br />
CFLAGS += -funsigned-char<br />
CFLAGS += -funsigned-bitfields<br />
CFLAGS += -fpack-struct<br />
CFLAGS += -fshort-enums<br />
CFLAGS += -Wall<br />
CFLAGS += -Wstrict-prototypes<br />
#CFLAGS += -mshort-calls<br />
#CFLAGS += -fno-unit-at-a-time<br />
#CFLAGS += -Wundef<br />
#CFLAGS += -Wunreachable-code<br />
#CFLAGS += -Wsign-compare<br />
CFLAGS += -Wa,-adhlns=$(<:%.c=$(OBJDIR)/%.lst)<br />
CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))<br />
CFLAGS += $(CSTANDARD)<br />
<br />
<br />
#---------------- Compiler Options C++ ----------------<br />
# -g*: generate debugging information<br />
# -O*: optimization level<br />
# -f...: tuning, see GCC manual and avr-libc documentation<br />
# -Wall...: warning level<br />
# -Wa,...: tell GCC to pass this to the assembler.<br />
# -adhlns...: create assembler listing<br />
CPPFLAGS = -g$(DEBUG)<br />
CPPFLAGS += $(CPPDEFS)<br />
CPPFLAGS += -O$(OPT)<br />
CPPFLAGS += -funsigned-char<br />
CPPFLAGS += -funsigned-bitfields<br />
CPPFLAGS += -fpack-struct<br />
CPPFLAGS += -fshort-enums<br />
CPPFLAGS += -fno-exceptions<br />
CPPFLAGS += -Wall<br />
CPPFLAGS += -Wundef<br />
#CPPFLAGS += -mshort-calls<br />
#CPPFLAGS += -fno-unit-at-a-time<br />
#CPPFLAGS += -Wstrict-prototypes<br />
#CPPFLAGS += -Wunreachable-code<br />
#CPPFLAGS += -Wsign-compare<br />
CPPFLAGS += -Wa,-adhlns=$(<:%.cpp=$(OBJDIR)/%.lst)<br />
CPPFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))<br />
#CPPFLAGS += $(CSTANDARD)<br />
<br />
<br />
#---------------- Assembler Options ----------------<br />
# -Wa,...: tell GCC to pass this to the assembler.<br />
# -adhlns: create listing<br />
# -gstabs: have the assembler create line number information; note that<br />
# for use in COFF files, additional information about filenames<br />
# and function names needs to be present in the assembler source<br />
# files -- see avr-libc docs [FIXME: not yet described there]<br />
# -listing-cont-lines: Sets the maximum number of continuation lines of hex <br />
# dump that will be displayed for a given single line of source input.<br />
ASFLAGS = $(ADEFS) -Wa,-adhlns=$(<:%.S=$(OBJDIR)/%.lst),-gstabs,--listing-cont-lines=100<br />
<br />
<br />
#---------------- Library Options ----------------<br />
# Minimalistic printf version<br />
PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min<br />
<br />
# Floating point printf version (requires MATH_LIB = -lm below)<br />
PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt<br />
<br />
# If this is left blank, then it will use the Standard printf version.<br />
PRINTF_LIB = <br />
#PRINTF_LIB = $(PRINTF_LIB_MIN)<br />
#PRINTF_LIB = $(PRINTF_LIB_FLOAT)<br />
<br />
<br />
# Minimalistic scanf version<br />
SCANF_LIB_MIN = -Wl,-u,vfscanf -lscanf_min<br />
<br />
# Floating point + %[ scanf version (requires MATH_LIB = -lm below)<br />
SCANF_LIB_FLOAT = -Wl,-u,vfscanf -lscanf_flt<br />
<br />
# If this is left blank, then it will use the Standard scanf version.<br />
SCANF_LIB = <br />
#SCANF_LIB = $(SCANF_LIB_MIN)<br />
#SCANF_LIB = $(SCANF_LIB_FLOAT)<br />
<br />
<br />
MATH_LIB = -lm<br />
<br />
<br />
# List any extra directories to look for libraries here.<br />
# Each directory must be seperated by a space.<br />
# Use forward slashes for directory separators.<br />
# For a directory that has spaces, enclose it in quotes.<br />
EXTRALIBDIRS = <br />
<br />
<br />
<br />
#---------------- External Memory Options ----------------<br />
<br />
# 64 KB of external RAM, starting after internal RAM (ATmega128!),<br />
# used for variables (.data/.bss) and heap (malloc()).<br />
#EXTMEMOPTS = -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff<br />
<br />
# 64 KB of external RAM, starting after internal RAM (ATmega128!),<br />
# only used for heap (malloc()).<br />
#EXTMEMOPTS = -Wl,--section-start,.data=0x801100,--defsym=__heap_end=0x80ffff<br />
<br />
EXTMEMOPTS =<br />
<br />
<br />
<br />
#---------------- Linker Options ----------------<br />
# -Wl,...: tell GCC to pass this to linker.<br />
# -Map: create map file<br />
# --cref: add cross reference to map file<br />
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref<br />
LDFLAGS += $(EXTMEMOPTS)<br />
LDFLAGS += $(patsubst %,-L%,$(EXTRALIBDIRS))<br />
LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB)<br />
#LDFLAGS += -T linker_script.x<br />
<br />
<br />
<br />
#---------------- Programming Options (avrdude) ----------------<br />
<br />
# Programming hardware<br />
# Type: avrdude -c ?<br />
# to get a full listing.<br />
#<br />
AVRDUDE_PROGRAMMER = stk200<br />
<br />
# com1 = serial port. Use lpt1 to connect to parallel port.<br />
AVRDUDE_PORT = lpt1<br />
<br />
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex<br />
#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep<br />
<br />
<br />
# Uncomment the following if you want avrdude's erase cycle counter.<br />
# Note that this counter needs to be initialized first using -Yn,<br />
# see avrdude manual.<br />
#AVRDUDE_ERASE_COUNTER = -y<br />
<br />
# Uncomment the following if you do /not/ wish a verification to be<br />
# performed after programming the device.<br />
#AVRDUDE_NO_VERIFY = -V<br />
<br />
# Increase verbosity level. Please use this when submitting bug<br />
# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude> <br />
# to submit bug reports.<br />
#AVRDUDE_VERBOSE = -v -v<br />
<br />
AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER)<br />
AVRDUDE_FLAGS += $(AVRDUDE_NO_VERIFY)<br />
AVRDUDE_FLAGS += $(AVRDUDE_VERBOSE)<br />
AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER)<br />
<br />
<br />
<br />
#---------------- Debugging Options ----------------<br />
<br />
# For simulavr only - target MCU frequency.<br />
DEBUG_MFREQ = $(F_CPU)<br />
<br />
# Set the DEBUG_UI to either gdb or insight.<br />
# DEBUG_UI = gdb<br />
DEBUG_UI = insight<br />
<br />
# Set the debugging back-end to either avarice, simulavr.<br />
DEBUG_BACKEND = avarice<br />
#DEBUG_BACKEND = simulavr<br />
<br />
# GDB Init Filename.<br />
GDBINIT_FILE = __avr_gdbinit<br />
<br />
# When using avarice settings for the JTAG<br />
JTAG_DEV = /dev/com1<br />
<br />
# Debugging port used to communicate between GDB / avarice / simulavr.<br />
DEBUG_PORT = 4242<br />
<br />
# Debugging host used to communicate between GDB / avarice / simulavr, normally<br />
# just set to localhost unless doing some sort of crazy debugging when <br />
# avarice is running on a different computer.<br />
DEBUG_HOST = localhost<br />
<br />
<br />
<br />
#============================================================================<br />
<br />
<br />
# Define programs and commands.<br />
SHELL = sh<br />
CC = avr-gcc<br />
OBJCOPY = avr-objcopy<br />
OBJDUMP = avr-objdump<br />
SIZE = avr-size<br />
AR = avr-ar rcs<br />
NM = avr-nm<br />
AVRDUDE = avrdude<br />
REMOVE = rm -f<br />
REMOVEDIR = rm -rf<br />
COPY = cp<br />
WINSHELL = cmd<br />
<br />
<br />
# Define Messages<br />
# English<br />
MSG_ERRORS_NONE = Errors: none<br />
MSG_BEGIN = -------- begin --------<br />
MSG_END = -------- end --------<br />
MSG_SIZE_BEFORE = Size before: <br />
MSG_SIZE_AFTER = Size after:<br />
MSG_COFF = Converting to AVR COFF:<br />
MSG_EXTENDED_COFF = Converting to AVR Extended COFF:<br />
MSG_FLASH = Creating load file for Flash:<br />
MSG_EEPROM = Creating load file for EEPROM:<br />
MSG_EXTENDED_LISTING = Creating Extended Listing:<br />
MSG_SYMBOL_TABLE = Creating Symbol Table:<br />
MSG_LINKING = Linking:<br />
MSG_COMPILING = Compiling C:<br />
MSG_COMPILING_CPP = Compiling C++:<br />
MSG_ASSEMBLING = Assembling:<br />
MSG_CLEANING = Cleaning project:<br />
MSG_CREATING_LIBRARY = Creating library:<br />
<br />
<br />
<br />
<br />
# Define all object files.<br />
OBJ = $(SRC:%.c=$(OBJDIR)/%.o) $(CPPSRC:%.cpp=$(OBJDIR)/%.o) $(ASRC:%.S=$(OBJDIR)/%.o) <br />
<br />
# Define all listing files.<br />
LST = $(SRC:%.c=$(OBJDIR)/%.lst) $(CPPSRC:%.cpp=$(OBJDIR)/%.lst) $(ASRC:%.S=$(OBJDIR)/%.lst) <br />
<br />
<br />
# Compiler flags to generate dependency files.<br />
GENDEPFLAGS = -MMD -MP -MF .dep/$(@F).d<br />
<br />
<br />
# Combine all necessary flags and optional flags.<br />
# Add target processor to flags.<br />
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) $(GENDEPFLAGS)<br />
ALL_CPPFLAGS = -mmcu=$(MCU) -I. -x c++ $(CPPFLAGS) $(GENDEPFLAGS)<br />
ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)<br />
<br />
<br />
<br />
<br />
<br />
# Default target.<br />
all: begin gccversion sizebefore build sizeafter end<br />
<br />
# Change the build target to build a HEX file or a library.<br />
build: elf hex eep lss sym<br />
#build: lib<br />
<br />
<br />
elf: $(TARGET).elf<br />
hex: $(TARGET).hex<br />
eep: $(TARGET).eep<br />
lss: $(TARGET).lss<br />
sym: $(TARGET).sym<br />
LIBNAME=lib$(TARGET).a<br />
lib: $(LIBNAME)<br />
<br />
<br />
<br />
# Eye candy.<br />
# AVR Studio 3.x does not check make's exit code but relies on<br />
# the following magic strings to be generated by the compile job.<br />
begin:<br />
@echo<br />
@echo $(MSG_BEGIN)<br />
<br />
end:<br />
@echo $(MSG_END)<br />
@echo<br />
<br />
<br />
# Display size of file.<br />
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex<br />
ELFSIZE = $(SIZE) --mcu=$(MCU) --format=avr $(TARGET).elf<br />
<br />
sizebefore:<br />
@if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); \<br />
2>/dev/null; echo; fi<br />
<br />
sizeafter:<br />
@if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); \<br />
2>/dev/null; echo; fi<br />
<br />
<br />
<br />
# Display compiler version information.<br />
gccversion : <br />
@$(CC) --version<br />
<br />
<br />
<br />
# Program the device. <br />
program: $(TARGET).hex $(TARGET).eep<br />
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)<br />
<br />
<br />
# Generate avr-gdb config/init file which does the following:<br />
# define the reset signal, load the target file, connect to target, and set <br />
# a breakpoint at main().<br />
gdb-config: <br />
@$(REMOVE) $(GDBINIT_FILE)<br />
@echo define reset >> $(GDBINIT_FILE)<br />
@echo SIGNAL SIGHUP >> $(GDBINIT_FILE)<br />
@echo end >> $(GDBINIT_FILE)<br />
@echo file $(TARGET).elf >> $(GDBINIT_FILE)<br />
@echo target remote $(DEBUG_HOST):$(DEBUG_PORT) >> $(GDBINIT_FILE)<br />
ifeq ($(DEBUG_BACKEND),simulavr)<br />
@echo load >> $(GDBINIT_FILE)<br />
endif<br />
@echo break main >> $(GDBINIT_FILE)<br />
<br />
debug: gdb-config $(TARGET).elf<br />
ifeq ($(DEBUG_BACKEND), avarice)<br />
@echo Starting AVaRICE - Press enter when "waiting to connect" message displays.<br />
@$(WINSHELL) /c start avarice --jtag $(JTAG_DEV) --erase --program --file \<br />
$(TARGET).elf $(DEBUG_HOST):$(DEBUG_PORT)<br />
@$(WINSHELL) /c pause<br />
<br />
else<br />
@$(WINSHELL) /c start simulavr --gdbserver --device $(MCU) --clock-freq \<br />
$(DEBUG_MFREQ) --port $(DEBUG_PORT)<br />
endif<br />
@$(WINSHELL) /c start avr-$(DEBUG_UI) --command=$(GDBINIT_FILE)<br />
<br />
<br />
<br />
<br />
# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB.<br />
COFFCONVERT = $(OBJCOPY) --debugging<br />
COFFCONVERT += --change-section-address .data-0x800000<br />
COFFCONVERT += --change-section-address .bss-0x800000<br />
COFFCONVERT += --change-section-address .noinit-0x800000<br />
COFFCONVERT += --change-section-address .eeprom-0x810000<br />
<br />
<br />
<br />
coff: $(TARGET).elf<br />
@echo<br />
@echo $(MSG_COFF) $(TARGET).cof<br />
$(COFFCONVERT) -O coff-avr $< $(TARGET).cof<br />
<br />
<br />
extcoff: $(TARGET).elf<br />
@echo<br />
@echo $(MSG_EXTENDED_COFF) $(TARGET).cof<br />
$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof<br />
<br />
<br />
<br />
# Create final output files (.hex, .eep) from ELF output file.<br />
%.hex: %.elf<br />
@echo<br />
@echo $(MSG_FLASH) $@<br />
$(OBJCOPY) -O $(FORMAT) -R .eeprom -R .fuse -R .lock $< $@<br />
<br />
%.eep: %.elf<br />
@echo<br />
@echo $(MSG_EEPROM) $@<br />
-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \<br />
--change-section-lma .eeprom=0 --no-change-warnings -O $(FORMAT) $< $@ || exit 0<br />
<br />
# Create extended listing file from ELF output file.<br />
%.lss: %.elf<br />
@echo<br />
@echo $(MSG_EXTENDED_LISTING) $@<br />
$(OBJDUMP) -h -S -z $< > $@<br />
<br />
# Create a symbol table from ELF output file.<br />
%.sym: %.elf<br />
@echo<br />
@echo $(MSG_SYMBOL_TABLE) $@<br />
$(NM) -n $< > $@<br />
<br />
<br />
<br />
# Create library from object files.<br />
.SECONDARY : $(TARGET).a<br />
.PRECIOUS : $(OBJ)<br />
%.a: $(OBJ)<br />
@echo<br />
@echo $(MSG_CREATING_LIBRARY) $@<br />
$(AR) $@ $(OBJ)<br />
<br />
<br />
# Link: create ELF output file from object files.<br />
.SECONDARY : $(TARGET).elf<br />
.PRECIOUS : $(OBJ)<br />
%.elf: $(OBJ)<br />
@echo<br />
@echo $(MSG_LINKING) $@<br />
$(CC) $(ALL_CFLAGS) $^ --output $@ $(LDFLAGS)<br />
<br />
<br />
# Compile: create object files from C source files.<br />
$(OBJDIR)/%.o : %.c<br />
@echo<br />
@echo $(MSG_COMPILING) $<<br />
$(CC) -c $(ALL_CFLAGS) $< -o $@ <br />
<br />
<br />
# Compile: create object files from C++ source files.<br />
$(OBJDIR)/%.o : %.cpp<br />
@echo<br />
@echo $(MSG_COMPILING_CPP) $<<br />
$(CC) -c $(ALL_CPPFLAGS) $< -o $@ <br />
<br />
<br />
# Compile: create assembler files from C source files.<br />
%.s : %.c<br />
$(CC) -S $(ALL_CFLAGS) $< -o $@<br />
<br />
<br />
# Compile: create assembler files from C++ source files.<br />
%.s : %.cpp<br />
$(CC) -S $(ALL_CPPFLAGS) $< -o $@<br />
<br />
<br />
# Assemble: create object files from assembler source files.<br />
$(OBJDIR)/%.o : %.S<br />
@echo<br />
@echo $(MSG_ASSEMBLING) $<<br />
$(CC) -c $(ALL_ASFLAGS) $< -o $@<br />
<br />
<br />
# Create preprocessed source for use in sending a bug report.<br />
%.i : %.c<br />
$(CC) -E -mmcu=$(MCU) -I. $(CFLAGS) $< -o $@ <br />
<br />
<br />
# Target: clean project.<br />
clean: begin clean_list end<br />
<br />
clean_list :<br />
@echo<br />
@echo $(MSG_CLEANING)<br />
$(REMOVE) $(TARGET).hex<br />
$(REMOVE) $(TARGET).eep<br />
$(REMOVE) $(TARGET).cof<br />
$(REMOVE) $(TARGET).elf<br />
$(REMOVE) $(TARGET).map<br />
$(REMOVE) $(TARGET).sym<br />
$(REMOVE) $(TARGET).lss<br />
$(REMOVE) $(SRC:%.c=$(OBJDIR)/%.o)<br />
$(REMOVE) $(SRC:%.c=$(OBJDIR)/%.lst)<br />
$(REMOVE) $(SRC:.c=.s)<br />
$(REMOVE) $(SRC:.c=.d)<br />
$(REMOVE) $(SRC:.c=.i)<br />
$(REMOVEDIR) .dep<br />
<br />
<br />
# Create object files directory<br />
$(shell mkdir $(OBJDIR) 2>/dev/null)<br />
<br />
<br />
# Include the dependency files.<br />
-include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*)<br />
<br />
<br />
# Listing of phony targets.<br />
.PHONY : all begin finish end sizebefore sizeafter gccversion \<br />
build elf hex eep lss sym coff extcoff \<br />
clean clean_list program debug gdb-config</div>
Kern
http://automata.sgu.ru/wiki/Led_%2B_Button_%2B_Timer_%2B_UART
Led + Button + Timer + UART
2010-11-11T06:59:33Z
<p>Описание изменений: </p>
<hr />
<div> #include <stdint.h><br />
#include <avr/io.h><br />
#include <avr/interrupt.h><br />
#include <util/delay.h><br />
<br />
#define BUT_PIN 0x10<br />
#define LED_PIN 0x01<br />
#define TST_MES 0xA5<br />
#define ONE_SEC 31250<br />
#define MSG_LEN 12<br />
<br />
const char msg[] = "set Hz freq";<br />
char led_stat;<br />
<br />
void snd_byte (uint8_t byte)<br />
{<br />
UDR = byte;<br />
while (!(UCSRA & _BV(TXC)));<br />
UCSRA |= _BV(TXC);<br />
}<br />
<br />
void but_test (void)<br />
{ <br />
if (!(PINB & BUT_PIN)) { <br />
_delay_ms(5); <br />
led_stat ^= 1; <br />
while (!(PINB & BUT_PIN)); <br />
_delay_ms(5); <br />
} <br />
} <br />
<br />
inline void led_trig (void)<br />
{ <br />
PORTB ^= LED_PIN;<br />
}<br />
<br />
ISR (TIMER1_COMPA_vect)<br />
{<br />
led_trig();<br />
}<br />
<br />
ISR (USART_RX_vect)<br />
{<br />
OCR1A = ONE_SEC/UDR; <br />
snd_byte('O');<br />
snd_byte('K');<br />
}<br />
<br />
int main ()<br />
{<br />
//pin 0 - led act GND, pin 4 - button act GND<br />
DDRB = 0x01;<br />
PORTB = 0x10;<br />
<br />
//CTC, presc 256<br />
TCCR1B = _BV(WGM12) | _BV(CS12);<br />
TIMSK = _BV(OCIE1A);<br />
OCR1A = ONE_SEC;<br />
<br />
//19.2k , 8 db, 1sb, no parity<br />
UBRRH = 0;<br />
UBRRL = 25; <br />
UCSRB = _BV(RXCIE) | _BV(RXEN) | _BV(TXEN);<br />
UCSRC = _BV(URSEL) | _BV(USBS) | _BV(UCSZ0) | _BV(UCSZ1); <br />
<br />
for (int i = 0; i < MSG_LEN; ++i)<br />
snd_byte(msg[i]);<br />
<br />
sei();<br />
<br />
while (1) {<br />
but_test();<br />
TIMSK = led_stat ? _BV(OCIE1A) : 0;<br />
} <br />
<br />
return 0;<br />
}</div>
Kern
http://automata.sgu.ru/wiki/%C3%90%C2%A1%C3%91%E2%80%9A%C3%90%C2%B5%C3%90%C2%BD%C3%90%C2%B4_AT90CAN128x2
Стенд AT90CAN128x2
2010-05-17T11:18:19Z
<p>Описание изменений: </p>
<hr />
<div>В настоящее время в промышленности при разработке различных устройств широко применяются микропроцессоры. К основным сферам их применения относятся автоматизированные системы управления технологией производства, системы сбора и обработки информации, различная измерительная и контрольная аппаратура. Изготовление такого рода устройств требует от разработчика высокой квалификации. Вместе с этим, на сегодняшний день преподавание ряда соответствующих технических дисциплин затруднено отсутствием необходимой материально-технической базы. Более того, уровень современного образования требует возможности удаленного доступа к лабораторным стендам и установкам.<br />
<br />
С учетом настоящих требований были разработаны программно-аппаратные средства для обучения программированию микропроцессорных систем, представляющие собой несколько стендов и программное обеспечение для организации удаленного доступа. Данные средства предполагается использовать в таких курсах, как «Программирование микропроцессорных систем», «Интерфейсы периферийных устройств», «Операционные системы» и «Системы реального времени».<br />
<br />
В стендах используются микроконтроллеры [http://www.atmel.com/products/AVR/xmega.asp?family_id=607&source=home Atmel AVR] [http://www.atmel.com/dyn/resources/prod_documents/doc7679.pdf AT90CAN128] и [http://www.atmel.com/dyn/resources/prod_documents/doc2512.pdf ATmega8535]. Это позволяет изучить принципы программирования данных микроконтроллеров.<br />
<br />
{|<br />
| [[Изображение:AVR-H128CAN-TOP.jpg]] || [[Изображение:P40.jpg]]<br />
|-<br />
| [http://www.olimex.com/dev/pdf/AVR/AVR-H128-CAN.pdf Development Board AVR - H128 - CAN] || [http://www.olimex.com/dev/pdf/AVR/AVR-P40-8535.pdf Development Board AVR - P40 - 8535 - COM]<br />
|}<br />
<br />
Стенд на основе микроконтроллера AT90CAN128 предназначен для разработки и создания распределенных систем контроля и управления на основе использования различных интерфейсов, применяемых в реальных системах. Индикация осуществляется посредством [[Семисегментные трёхразрядные индикаторы|семи сегментного индикатора]] и [http://ru.wikipedia.org/wiki/%D0%96%D0%9A-%D0%B4%D0%B8%D1%81%D0%BF%D0%BB%D0%B5%D0%B9 графического жидкокристаллического дисплея] через последовательный периферийный интерфейс [http://ru.wikipedia.org/wiki/Serial_Peripheral_Interface SPI]. Взаимодействие с другими микропроцессорными устройствами или персональным компьютером осуществляется посредством универсального синхронно-асинхронного последовательного приемника-передатчика [http://en.wikipedia.org/wiki/USART USART]. Построение широковещательной последовательной сети ориентированной на пакетную передачу данных и применяемую для объединения в единую сеть различных управляющих и вычислительных устройств и датчиков осуществляется посредством интерфейса сети контроллеров [http://ru.wikipedia.org/wiki/CAN CAN]. Построение систем на базе одной из самых широко распространенных шин – [http://ru.wikipedia.org/wiki/I2C I2C] возможно благодаря наличию двухпроводного последовательного интерфейса [http://www.google.ru/url?sa=t&source=web&ct=res&cd=1&ved=0CBgQFjAA&url=http%3A%2F%2Fwww.jennic.com%2Fdownload_file.php%3FsupportDocument%3DJN-AN-1041-2-Wire-Serial-Interface-1v1.pdf&ei=-znxS4XlGMbdsgaK_uTDBg&usg=AFQjCNFYcqBPgW5Cr4jJJvXdWz8TqRsBHg&sig2=NPIXosy4xrGtt-uUd1ht2Q TWI].<br />
<br />
В связи с ростом интереса в отечественной промышленности к вентильным двигателям, была создана возможность подключения к стенду датчиков и ключей различных типов вентильных двигателей. Это делает возможным изучение программирования устройств их управления.<br />
<br />
Стенд на основе микроконтроллера ATmega8535 содержит датчики освещения, температуры и акустические датчики. Это позволяет создавать различные контрольные и измерительные устройства и изучать принципы их функционирования. Наличие ключей позволяет подключать и управлять нагрузками, требующими большой мощности.<br />
<br />
Удаленный доступ к стендам осуществляется посредством операционной системы [http://www.altlinux.ru ALTLinux] и свободно распространяемого приложения [http://www.nomachine.com/products.php Nomashine NX Client]. Наличие подключенных к компьютерам веб-камер позволяет в интерактивном режиме осуществлять визуальный контроль. Такая возможность позволяет применять разработанные стенды для дистанционного обучения.</div>
Kern