МИР ЭЛЕКТРОНИКИ



 

1. Микроконтроллеры семейства AVR

Общие сведения

AVR - самая обширная производственная линии среди других флэш-микроконтроллеров корпорации Atmel. Atmel представила первый 8-разрядный флэш-микроконтроллер в 1993 году и с тех пор непрерывно совершенствует технологию. Прогресс данной технологии наблюдался в снижении удельного энергопотребления (мА/МГц), расширения диапазона питающих напряжений (до 1.8 В) для продления ресурса батарейных систем, увеличении быстродействия до 16 млн. операций в секунду, встройкой реально-временных эмуляторов и отладчиков, реализации функции самопрограммирования, совершенствовании и расширении количества периферийных модулей, встройке специализированных устройств (радиочастотный передатчик, USB-контроллер, драйвер ЖКИ, программируемая логика, контроллер DVD, устройства защиты данных) и др.

Успех AVR-микроконтроллеров объясняется возможностью простого выполнения проекта с достижением необходимого результата в кратчайшие сроки, чему способствует доступность большого числа инструментальных средств проектирования, поставляемых, как непосредственно корпорацией Atmel, так и сторонними производителями. Ведущие сторонние производители выпускают полный спектр компиляторов, программаторов, ассемблеров, отладчиков, разъемов и адаптеров. Отличительной чертой инструментальных средств от Atmel является их невысокая стоимость.

Другой особенностью AVR-микроконтроллеров, которая способствовала их популяризации, это использование RISC-архитектуры, которая характеризуются мощным набором инструкций, большинство которых выполняются за один машинный цикл. Это означает, что при равной частоте тактового генератора они обеспечивают производительность в 12 (6) раз больше производительности предшествующих микроконтроллеров на основе CISC-архитектуры (например, MCS51). С другой стороны, в рамках одного приложения с заданным быстродействием, AVR-микроконтроллер может тактироваться в 12 (6) раз меньшей тактовой частотой, обеспечивая равное быстродействие, но при этом потребляя гораздо меньшую мощность. Таким образом, AVR-микроконтроллеры представляют более широкие возможности по оптимизации производительности/энергопотребления, что особенно важно при разработке приложений с батарейным питанием. Микроконтроллеры обеспечивает производительность до 16 млн. оп. в секунду и поддерживают флэш-память программ различной емкости: 1… 256 кбайт. AVR-архитектура оптимизирована под язык высокого уровня Си, а большинство представителей семейства megaAVR содержат 8-канальный 10-разрядный АЦП, а также совместимый с IEEE 1149.1 интерфейс JTAG или debugWIRE для встроенной отладки. Кроме того, все микроконтроллеры megaAVR с флэш-памятью емкостью 16 кбайт и более могут программироваться через интерфейс JTAG.

Производительность, приближающаяся к 1 MIPS/МГц
Усовершенствованная AVRa RISC архитектура
Раздельные шины памяти команд и данных, 32 регистра общего назначения
Flash ПЗУ программ, с возможностью внутрисистемного перепрограммирования и загрузки через SPI последовательный канал, 1000 циклов стирание/запись
EEPROM данных, с возможностью внутрисистемной загрузки через SPI последовательный канал, 100000 циклов стирание/запись
Блокировка режима программирования
Встроенные аналоговый компаратор, сторожевой таймер, порты SPI и UART, таймеры/счетчики
Полностью статические приборы - работают при тактовой частоте от 0 Гц до 20 МГц
Диапазон напряжений питания от 1,8 В до 6,0 В
Режимы энергосбережения: пассивный (idle) и стоповый (power down)
Основные типы микроконтроллеров AVR


Микроконтроллеры с архитектурой TinyAVR

Тип

Напр. Питания (В)

Такт. частота
(МГц)

I/O

Flash

EEPROM

SRAM

Интерфейсы

АЦ

Таймеры

ISP

Интерфесы

Atiny11L

2.7-5.5

2

6

1K

-

-

-

-

1x8bit

-

PDIP8 SOIC8

Atiny11

4.0-5.5

6

6

1K

-

-

-

-

1x8bit

-

PDIP8 SOIC8

Atiny1 2V

1.8-5.5

1

6

1K

64

-

-

-

1x8bit

I

PDIP8 SOIC8

ATtiny12L

2.7-5.5

4

6

1K

64

-

-

-

1x8bit

I

PDIP8 SOIC8

ATtiny13

1.8-5.5

16

6

1K

64

64

-

4x10bit

1x8bit
2xPWM

I

PDIP8 SOIC8

ATtiny15L

2.7-5.5

1

6

1K

64

-

-

4x10bit

2x8bit

I

PDIP8 SOIC8

ATtiny2313

1.8-5.5

16

15

2K

128

128

SPI
UART

-

1x8bit
1x16bit

I

PDIP20 SOIC20 MLF32

ATtiny26L

2.7-5.5

8

16

1K

128

128

SPI
UART

11x10bit

2x8bit

I

PDIP20 SOIC20 MLF32

ATtiny26

4.0-5.5

16

16

1K

128

128

SPI
UART

11x10bit

2x8bit

I

PDIP20 SOIC20 MLF32

ATtiny28V

1.8-5.5

1

20

2K

-

-

-

-

1x8bit

-

PDIP20 SOIC20 MLF32

ATtiny28L

2.7-5.5

4

20

2K

-

-

-

-

1x8bit

-

PDIP20 SOIC20 MLF32

Микроконтроллеры с архитектурой AVR

Тип

Напр. питания, В

Такт. Частота, МГц

I/O

Flash

EEPROM

SRAM

Интер-

фейсы

АЦП

Таймеры

ISP

Корпус

AT90S1200

2.7-6.0
4.0-6.0

4
12

15

1K

64

-

-

-

1x8bit

I

DIP20 SO20 SSOP20

AT90S2313

2.7-6.0
4.0-6.0

4
10

15

2K

128

128

UART

-

1x8bit
1x16bit

I

DIP20 SO20

AT90LS2323

2.7-6.0

4

3

2K

128

128

-

-

1x8bit

I

DIP8 SO8

AT90S2323

4.0-6.0

10

3

2K

128

128

-

-

1x8bit

I

DIP8 SO8

AT90LS2343

2.7-6.0

4

5

2K

128

128

-

-

1x8bit

I

DIP8 SO8

AT90S2343

4.0-6.0

10

5

2K

128

128

-

-

1x8bit

I

DIP8 SO8

AT90LS4433

2.7-6.0

4

20

4K

256

128

UART
SPI

6x10bit

1x8bit
1x16bit

I

DIP28 TQFP32

AT90S4433

4.0-6.0

8

20

4K

256

128

UART
SPI

6x10bit

1x8bit
1x16bit

I

DIP28 TQFP32

AT90LS8515

2.7-6.0

4

32

8K

512

512

UART
SPI

-

2x8bit
1x16bit

I

DIP40 TQFP44 PLCC44

AT90S8515

4.0-6.0

8

32

8K

512

512

UART
SPI

-

2x8bit
1x16bit

I

DIP40 TQFP44 PLCC44

AT90LS8535

2.7-6.0

4

32

8K

512

512

UART
SPI

8x10bit

2x8bit
1x16bit

I

DIP40 TQFP44 PLCC44

AT90S8535

4.0-6.0

8

32

8K

512

512

UART
SPI

8x10bit

2x8bit
1x16bit

I

DIP40 TQFP44 PLCC44

Мироконтроллеры с архитектурой MegaAVR

Тип

Напр. питания, В

Такт. частота, МГц

I/O

Flash

EEPROM

SRAM

Интер-
фейсы

АЦП

Таймеры

ISP

Корпус

ATmega48

1.8-5.5

16

23

4K

256

512

UART
SPI
I 2 C

6x10bit
2x8bit

2x8bit
1x16bit

S

DIP28 TQFP32 MLF32

ATmega88

1.8-5.5

16

23

8K

512

1k

UART
SPI
I 2 C

6x10bit
2x8bit

2x8bit
1x16bit

S

DIP28 TQFP32 MLF32

ATmega168

1.8-5.5

16

23

16K

512

1k

UART
SPI
I 2 C

6x10bit
2x8bit

2x8bit
1x16bit

S

DIP28 TQFP32 MLF32

ATmega8

2.7-5.5

16

23

8K

512

1k

UART
SPI

8x10bit

2x8bit
1x16bit

S

DIP28 TQFP32 MLF32

ATmega16L

2.7-5.5

8

32

16K

512

1k

UART
SPI

8x10bit

2x8bit
1x16bit

S

DIP40 TQFP44 MLF44

ATmega16

4.5-5.5

16

32

16K

512

1k

UART
SPI

8x10bit

2x8bit
1x16bit

S

DIP40 TQFP44 MLF44

ATmega32L

2.7-5.5

8

32

32K

1K

2K

UART
SPI

8x10bit

2x8bit
1x16bit

S

DIP40 TQFP44 MLF44

ATmega32

4.5-5.5

16

32

32K

1K

2K

UART
SPI

8x10bit

2x8bit
1x16bit

S

DIP40 TQFP44 MLF44

ATmega64L

2.7-5.5

8

53

64K

2K

4K

2xUART
SPI

8x10bit

2x8bit
2x16bit

S

TQFP64 MLF64

ATmega64

4.5-5.5

16

53

64K

2K

4K

2xUART
SPI

8x10bit

2x8bit
2x16bit

S

TQFP64 MLF64

ATmega128L

2.7-5.5

8

53

128K

4K

4K

2xUART
SPI

8x10bit

2x8bit
2x16bit

S

TQFP64 MLF64

ATmega128

4.5-5.5

16

53

128K

4K

4K

2xUART
SPI

8x10bit

2x8bit
2x16bit

S

TQFP64 MLF64

AT90CAN128

2.7-5.5

16

53

128K

4K

4K

2xUART
SPI
CAN

8x10bit

2x8bit
2x16bit

S

TQFP64 MLF64

ATmega103

4.0-5.5

6

48

128K

4K

4K

UART
SPI

8x10bit

2x8bit
2x16bit

I

TQFP64

ATmega161L

2.7-5.5

4

35

16K

512

1K

2xUART
SPI

-

2x8bit
1x16bit

S

DIP40 TQFP44

ATmega161

4.0-5.5

8

35

16K

512

1K

2xUART
SPI

-

2x8bit
1x16bit

S

DIP40 TQFP44

ATmega162

4.5-5.5

16

35

16K

512

1K

2xUART
SPI

-

2x8bit
1x16bit

S

DIP40 TQFP44 MLF44

ATmega162L

2.7-5.5

8

35

16K

512

1K

2xUART
SPI

-

2x8bit
1x16bit

S

DIP40 TQFP44 MLF44

ATmega162V

1.8-3.6

1

35

16K

512

1K

2xUART
SPI

-

2x8bit
1x16bit

S

DIP40 TQFP44 MLF44

ATmega163L

2.7-5.5

4

32

16K

512

1K

UART
SPI

8x10bit

2x8bit
1x16bit

S

DIP40 TQFP44 MLF44

ATmega163

4.0-5.5

8

32

16K

512

1K

UART
SPI

8x10bit

2x8bit
1x16bit

S

DIP40 TQFP44

ATmega169L

2.7-3.6

4

53
4x25 LCD

16K

512

1K

UART
SPI

8x10bit

2x8bit
1x16bit

S

TQFP64

ATmega169V

1.8-3.6

1

53
4x25 LCD

16K

512

1K

UART
SPI

8x10bit

2x8bit
1x16bit

S

TQFP64

ATmega8515L

2.7-5.5

8

35

8K

512

512

UART
SPI

-

2x8bit
1x16bit

S

PDIP40 PLCC44 TQFP,MLF

ATmega8515

4.5-5.5

16

35

8K

512

512

UART
SPI

-

2x8bit
1x16bit

S

PDIP40 PLCC44 TQFP MLF

ATmega8535L

2.7-5.5

8

32

8K

512

512

UART
SPI

8x10bit

2x8bit
1x16bit

S

PDIP40 PLCC44 TQFP MLF

ATmega8535

4.5-5.5

16

32

8K

512

512

UART
SPI

8x10bit

2x8bit
1x16bit

S

PDIP40 PLCC44 TQFP MLF

Все приборы семейства AT90S совместимы по исходным кодам и тактированию. Семейство обеспечено комплектом программ и системами отладки, включающими: макро-ассемблеры, отладчики/симуляторы программ, внутрисхемные эмуляторы, и отладочные устройства.

Микроконтроллеры семейства AT90S поставляются в очищенном состоянии - содержимое и Flash памяти программ и ЭСППЗУ данных находится в состоянии FF и готово к программированию.

Объединение на одном кристалле усовершенствованного 8-разрядного RISC ЦПУ с загружаемым Flash ПЗУ позволило фирме создать мощный микроконтроллер, обеспечивающий высокую гибкость и экономичность в использовании прибора в качестве встраиваемого контроллера.

Примечание: Более подробную информацию можно почерпнуть на web-странице html.cgi\txt\ic\Atmel\micros\avr\about.htm.

2. Технология составления программ в релейно-контактной логике.

В релейно контактной логике принято использовать следующую мнемонику:

-{ }- - прямой опрос входа;

-{/}- - инверсный опрос входа;

-( )- - включить выход;

-(S )- - включить выход и зафиксировать (триггер);

-(R )- - выключить выход и зафиксировать (триггер);

Примеры программ.

Пример 1. (прямой и инверсный опрос выходов)

10100 10101 00010

!--------{ }-------------{/}-----------( )-!

Выход 00010 устанавливается в логическую единицу в случае логическая цепь 10100 находится в состоянии логической единицы контакт замкнут, а 10101 - в состоянии логического нуля контакт разомкнут.

Пример 2. (установка и сброс триггера)

10100 T1 (2200)

!--------{ }------------------( S )-!

10200 T1

!--------{ }------------------( R )-!

Выход триггера 2200 устанавливается в логическую единицу в случае логическая цепь 10100 находится в состоянии логической единицы и сбрасывается только если вход 10200 установлен.

Пример 3. (таймер на включение TWD)

TWD 10

2500 ПРК 0050

!--------{ }------------------( )-!

TWD 10

ПРК 0050 00020

!--------{ }------------------( )-!

Таймер TWD 10 включится после установки единицу сигнала 2500. Через 5 сек таймер TWD10 включит выход 00020. Такт -десятая доля секунды.

Пример 3. (таймер на отключение TOD)

TOD 10

2222 ПРК 0030

!--------{ }------------------( )-!

TOD 10

ПРК 0030 00011

!--------{ }------------------( )-!

Таймер TOD 10 выключит выход 00011 через 3 сек таймер, после того как условия в его управляющей цепи станут ложными то есть сигнал 2222 выключен (разомкнут). Такт -десятая доля секунды.

Пример 3. (таймер накапливающий THC)

THC 10

2222 ПРК 0003

!--------{ }------------------( )-!

THC 10

ПРК 0003 00011

!--------{ }------------------( )-!

2501 CBC 10

!--------{ }------------------( )-!

Таймер THC 10 начинает считать с тактом в секунду после замыкания сигнала 2222. Через счета в 3 импульса таймер включает выход 00011. Таймер будет сработанным до тех пор пока не пройдет сигнал сброс таймера CBC10 (замкнется контакт 2501).

Пример 3. (счетчик накапливающий СHC)

СHC 11

2122 ПРК 0033

!--------{ }------------------( )-!

СHC 11

ПРК 0033 00013

!--------{ }------------------( )-!

2503 CBC 11

!--------{ }------------------( )-!

Счетчик СHC 11 считает число переходов вего управляющей цепи из ложного в истинное (размыкание и замыкание сигнала 2122). Через 3 сосчитанных счетчик включает выход 00013. Счетчик будет сработанным до тех пор пока не пройдет сигнал сброса CBC11 (замкнется контакт 2503).

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


3. Работа с регистрами LPT - порта.

Для любого разработчика периферийного радиотехнического устройства очень важным представляется вопрос связи с ЭВМ высшего ранга. Это крайне важно т.к. получив данные от внешнего устройства их можно обработать в программе, написанной на языке высокого уровня. Я думаю, что неоспоримым можно считать тот факт, что программа, написанная на языке высокого уровня (например Delphi) содержит более богатый спектр команд нежели скажем в любом PIC или AVR микроконтроллере. Поэтому очень важно принять данные от микроконтроллера, обработать их и выдать ответ.

Какие возможности предоставляет для организации передачи данных современная ЭВМ. На страницах интернета можно найти сведения о способах передачи через COM порта, USB порт и LPT порт.

По моему мнению наиболее простым и достаточно эффективным является работа через LPT порт, т.к. передача данных через COM порт достаточно медленна, через USB требует применения специальных периферийных БИС и знания алгоритма их работы.

Поэтому рассмотрим работу LPT порта. Стандартный параллельный порт ( Standart Parallel Port, сокращенно SPP) имеет три регистра, расположенные в пространстве ввода-вывода последовательно друг за другом см табл.1

Таблица 1. Адреса регистров LPT -порта

LPT1 LP2 Назначение
378H 278H Регистр данных
379H 279H Регистр состояния
37aH 27aH Регистр управления

Регистр данных доступен для записи и считывания, применяется в основном для вывода информации.

Регистр состояния доступен в основном только для чтения. Назначение разрядов регистра следующее:

бит 0-2 - не используется , установлены в ноль;

бит 3 -признак ошибки ввода вывода (0-ошибка, 1-нет ошибки);

бит 4 - признак выбора устройства (0-выбрано устройство, 1-нет);

бит 5- промежуточный (для принтера контроль наличия бумаги 0-бумага в наличии, 1-отсутствует);

бит 6- подтверждение приема (0-подтверждение приема данных, 1-обычноесостояние);

бит 7- признак занятости устройства (0-устройство занято, 1-устройство свободно).

Формат регистра состояния устройства.

 

7 BUSY

6 ACK

5 PE

4 SLC OUT

3 Error

2

1 Не используется

0

Регистр управления устройством доступен для записи и считывания. Назначение разрядов регистра управления.

бит 0 - строб записи данных (0-обычное состояние, 1-запись байта);

бит 1 - промежуточный бит для принтера автоматический перевод строки после возврата каретки ;

бит 2 - сброс устройства (0-полный сброс, 1-обычное состояние);

бит 3 - выбор устройства (0- отмена выбора, 1-обычное состояние);

бит 4 - разрешение прерывания от устройства.

биты 5-7 не используются, установлены в ноль.

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

7

6 Не используются

5

4 IRQ

3 SLCTIN

2 INIT

1 AUTOFEED

0 STROBE



Для передачи байта данных необходимо выполнить следующие операции.

1. Поместить передаваемый байт в регистр данных.

2. Проверить готовность устройства, для чего прочитав регистр состояния и выделив старший разряд.

3. Загрузить в регистр управления код 0DH ( установка в 1 в регистре управления формирует сигнал стробирования данных);

4. Ожидать подтверждения сигнала приема данных (когда данные приняты, бит 6 регистра состояния сбрасывается);

5. Загрузить в регистр управления значение 0СH ( в результате чего стробирование данных снимается.

Примечание: Современные операционные системы компьютеров запрещают пользователю непосредственную работу с регистрами LPT порта. На страницах интернета свободно распространяется программы Userport или Porttalk. Послн их установки запреты снимаются.


 


 

Сайт управляется системой uCoz