Программа по формированию навыков безопасного поведения на дорогах и улицах «Добрая дорога детства» 2





НазваниеПрограмма по формированию навыков безопасного поведения на дорогах и улицах «Добрая дорога детства» 2
страница3/12
Дата публикации19.02.2014
Размер1.28 Mb.
ТипДокументы
100-bal.ru > Информатика > Документы
1   2   3   4   5   6   7   8   9   ...   12

Регистры ввода – вывода


http://www.avr.nikolaew.org/IOWDT.htm

$21 ($41) WDTCR  

Предназначение сторожевого таймера предельно простое - не допускать "зависания" программы. Будучи включенным, он через определенный интервал времени произведет сброс МК, если в течение этого интервала программа не перезапустит его.

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

Зачем это надо? Ну, например, управляет МК двигателем. Запускает двигатель. И после этого где-то зависает -ведь не бывает программ без ошибок - а двигатель-то крутится. Доезжает до ограничения и или ломает его, либо сгорает сам... Это, конечно, грубый пример, но суть ясна. 

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

 Для того, чтобы включить сторожевой таймер, достаточно установить в 1 бит WDE -Watch Dog Enable.
 А вот выключить так просто не получится - и сделано это для защиты от тех же сбоев... Для выключения надо проделать следующие действия:

Записать одновременно в WDE и WDTOE значения "1"

В течение 4-х тактов процессора записать "0" в WDE.

Ну а для перезапуска сторожевого таймера в программе используется специальная команда WDR

Бит WDTCR

Название 

Описание

4

WDTOE

Разрешение выключения сторожевого таймера

3

WDE

Разрешение сторожевого таймера

2

WDP2

 Эти три бита определяют коэффициент пересчета от 16к до 2048к. (1к=1024). В зависимости от напряжения питания - это определит время от 15(47) мс до 1,9 (6,0) секунд. В общем, если понадобится - смотрите даташит...

1

WDP1

0

WDP0





EEARH $1F,  EEARL $1E,  EEDR $1D, EECR $1C   

Энергонезависимая память (точнее, управление ею) представлена четырьмя региcтрами. EEARH и EEARL - это регистр адреса, EEDR - данных, EECR - регистр управления.  Энергонезависимая память (далее - EEPROM)  может записываться как программатором, так и программой микроконтроллера. Ресурс перезаписей ( по даташиту) не менее 100.000 раз, стирать перед записью (как память программ) не нужно. Время записи байта - не более 4 мс.

У рассматриваемого нами МК 8535 объем EEPROM 512 байт, У МК с меньшим объемом (256 байт и менее) регистр EEARH отсутствует. EEPROM очень удобна для хранения настроечных данных и любых запоминаемых параметров работы.

Чтение из энергонезависимой памяти предельно просто - нужный адрес занести в EEARH (старший байт) и EEARL (младший байт), установить в "1" бит EERE в регистре EECR и ждать, пока этот бит не обнулится аппаратно. После чего - в регистре EEDR находятся прочитанные данные.

Запись немного посложнее. Сначала адрес, куда мы хотим писать, заносится в EEARH и EEARL, так же, как и при чтении. Затем записываемое значение заносится в EEDR. После этого нужно записать "1" в бит EEMWE и после этого записать "1" в бит EEWE. Сделано так для защиты от каких-либо сбоев, чтобы запись в EEPROM происходила только при "осмысленном" обращении. Бит EEMWE сбрасывается аппаратно через несколько тактов МК, делая запись в EEPROM невозможной.

После всего вышеизложенного программе остается ждать, когда бит EEWE сбросится в "0". Правда, ждать придется достаточно долго, и если вас это не устраивает - можно разрешить прерывание, установив в "1"бит EERIE. В этом случае программа, выполнив все вышеописанные действия, идет дальше по своим делам (все, кроме работы с EEPROM!), а по окончанию записи произойдет соответствующее прерывание и сообщит программе - готово!

Бит EECR

Название 

Описание

3

EERIE

 Бит разрешения прерывания по окончанию цикла записи

2

EEMWE

 Бит - "предохранитель" записи

1

EEWE

 Старт записи. Сработает только в случае, когда EEMWE=1

0

EERE

 Старт чтения


Ну и в завершение - надо обязательно упомянуть одну "тонкость" при работе с EEPROM. В момент включения и выключения питания МК - а относительно скорости работы МК это процесс достаточно медленный - программа может выполняться совершенно непредсказуемо. И если в программе есть хотя бы один фрагмент записи в EEPROM - можете быть уверены, от обязательно выполнится, уничтожив хотя бы один байт EEPROM.

Выход из этой ситуации есть лишь один - использовать так называемый супервизор питания. Это такая микросхемка в трехногом корпусе, выпускаемая многими производителями. Две ноги - подключаются к напряжению питания, третья - на пин Reset  микроконтроллера. Работает она очень просто - при малом напряжении питания держит МК в режиме сброса. Для того, чтобы не мешала программатору - лучше ее выход подключить в выводу Reset   через резистор ~1 кОм

В более новых МК фирмы Atmel такое устройство уже встроено в сам МК и режимы работы его задаются fuse-битами. Это МК серий Tiny и Mega.

SPDR $0F($2F), SPSR $0E, SPCR $0D ($2D)   

Интерфейс SPI - синхронный последовательный интерфейс - предназначен для организации обмена между двумя устройствами, причем одно из них является инициатором обмена (master ), второе - пассивное (slave ).


Говоря простым языком, в каждом из устройств (master  и slave ) имеются восьмиразрядные регистры сдвига, выход регистра master подключается ко входу регистра slave  и наоборот. Кроме этого, master  генерирует импульсы сдвига, по которым происходит сдвиг информации в обоих устройствах. За 8 тактовых импульсов регистры master  и slave обмениваются содержимым друг с другом. 

 



Регистр SPDR - это как раз и есть регистр сдвига. Если устройство сконфигурировано как master,  то запись байта в регистр SPDR вызовет начало передачи - то есть тактовый генератор выдаст восемь тактов, за которые регистры сдвига master  и slave  устройств обменяются своим содержимым, после чего тактовые импульсы прекращаются, а в обоих устройствах устанавливаются флаги SPIF

Теперь рассмотрим регистры статуса SPSR и управления SPCR


Бит
SPCR


Название

Описание

7

SPIE

Бит разрешения прерывания.Если он=1, то установка бита SPIF в единицу вызовет прерывание (естественно, если все прерывания не запрещены)

6

SPE

Общее разрешение SPI (включение)

5

DORD

Порядок передачи. DORD=1 - передается младшим битом вперед, DORD=0 - старшим.

4

MSTR

Если MSTR=1 - SPI работает в режиме master

3

CPOL

Если CPOL=1, то SCK в режиме ожидания находится в состоянии "1", то есть строб будет логическим "0"

2

CPHA

Это что-то относящееся к фазе строба. Толком не разбирался - все работало по умолчанию :-)

1

SPR1

Эти два бита определяют частоту SCK в режиме master. 
00 - Tck / 4
01 - Tck / 16
10 - Tck / 64
11 - Tck / 128

0

SPR0




Бит
SPSR


Название

Описание

7

SPIF

 Флаг завершения обмена. Если SPIE установлен - вызовет прерывание. Сбрасывается при входе в прерывание, если работать без прерываний - то надо сначала прочесть SPSR, потом SPDR

6

WCOL

 Устанавливается, если произошла запись в SPDR во время обмена - то есть ошибочная ситуация.




А вот про пин SS (slave select  ) мы забыли. Если SPI сконфигурирован как slave, то пин SS разрешает tuj работу, если установлен в лог. "0" (что-то типа сигнала "выбор кристалла" у цифровых микросхем). Это позволяет одному master работать с несколькими slave .

Если SPI сконфигурирован как master, то ситуация немного сложнее. В этом случае SS работает только если он определен как входной. Подав на него лог. "0", можно вызвать переключение SPI в режим slave - наверное, это для ситуации, когда slave устройство вдруг захотело что-то передать master-у. Сам я такое извращение никогда не использовал и обмен между двумя устройствами организовывал по другому.

Мой отладочный модуль (  см. тут ) также использует SPI интерфейс, по двум причинам - во первых, к SPI подключен шлейф программатора - удобно при отладке, ничего переключать не надо. И во вторых - этот интерфейс все-таки не так часто используется (хотя это, наверное, весьма спорное утверждение).

UDR $0C ($2C), USR $0B($2B), UCR $0A($2A), UBRR  $09($29)  

USART, он же асинхронный последовательный интерфейс - на мой взгляд, самый удобный и простой способ стыковки МК и компьютера. Хотя производители уже и поговаривают о том, что RS232 устарел и пора про него забыть, думаю, еще десяток лет он продержится. Принцип его работы достаточно прост и давно известен - взять тот же телеграфный аппарат, если кто помнит :-)  Только там тактовым генератором был электродвигатель, а частота вращения настраивалась при помощи камертона. И вместо заумного "асинхронный последовательный..." применялся термин "старт-стопная передача".

Рассмотрим прием байта для общего развития. При отсутствии передачи линия находится в состоянии лог. "1" . Признаком начала передачи является так называемый старт-бит, который всегда "0". За ним следуют 8 бит данных, младшим битом вперед. Заканчивается посылка стоп-битом, который всегда "1". Для достоверного обмена требуется точное совпадение скоростей передачи и приема, погрешность допускается не более 2,5%. Отсюда вывод - если планируете использовать USART, то тактовый генератор МК должен работать с кварцем. 

Приемник по первому спаду - начало старт-бита - синхронизируется, отсчитывает половину периода ( времени передачи одного бита) и проверяет уровень на входе. Если он не "0" - значит, помеха, все отменяется. Если "0" - далее отсчитывает по полному периоду, и вдвигает 0 или 1 в сдвиговый регистр. Когда все 8 бит приняты, отсчитывается еще один период и проверяется наличие на входе "1" - стоп-бита. Если стоп-бит не равен "1", фиксируется ошибка, иначе байт считается принятым.

Это, конечно, упрощенное описание, на самом деле все может быть гораздо сложнее. Количество информационных бит может быть различным, в конце (перед стоп-битом) может быть проверочный бит (четность, нечетность), количество стоп-бит также бывает разным... Но для начального ознакомления, думаю, хватит т этого.

Отметим, что описанные уровни сигнала относятся к МК! Для компьютерного RS232 лог."1"=-12в, лог."0"=+12в!, поэтому для стыковки МК и компьютера обязательно понадобится схема сопряжения уровней. Для этого существуют специально под эту задачу заточенные микросхемы MAX232, если таковой под рукой не оказалось - можно использовать схему на 590КН4




Теперь рассмотрим регистры, связанные с USART.

UDR - в это регистр пишется байт на передачу, из него же считывается принятый байт. Хотя имя (и адрес) одно, физически это разные регистры, поскольку USART полностью дуплексный - приемник и передатчик работают независимо друг от друга (но с одной скоростью). 

USR - регистр состояния. Описание его бит см. в таблице:

Бит USR

Название 

Описание

3

OR

Устанавливается в "1", если принятый байт не прочитан, а уже принят следующий(OverRun)

4

FE

Устанавливается в "1", если принят 0 на месте стоп-бита (Framing Error)

5

UDRE

Устанавливается в "1", когда передаваемый байт записан в сдвиговый регистр. Если разрешено прерывание по пустому передатчику (установлен TDRIE в UCR), будет вызвано прерывание с вектором 13 ($00C) Сбрасывается при записи данных в UDR

6

TXC

Устанавливается в "1", когда передаваемый байт полностью "выдвинут" из UDR, включая стоп-бит. Если разрешено прерывание по пустому передатчику (установлен TXCIE в UCR), будет вызвано прерывание с вектором 14 ($00D) Сбрасывается при обработке прерывания или записью лог. "1" в этот бит

7

RXC

Устанавливается в "1" после приема байта. Если разрешено прерывание по приему (установлен RXCIE в UCR), будет вызвано прерывание по вектору 12 ($00B). Сбрасывается в "0" по чтению UDR
1   2   3   4   5   6   7   8   9   ...   12

Похожие:

Программа по формированию навыков безопасного поведения на дорогах и улицах «Добрая дорога детства» 2 iconПрограмма по формированию навыков безопасного поведения на дорогах...
Проектно-образовательная деятельность по формированию у детей навыков безопасного поведения на улицах и дорогах города
Программа по формированию навыков безопасного поведения на дорогах и улицах «Добрая дорога детства» 2 iconПрограмма по формированию навыков безопасного поведения на дорогах...
Цель: Создание условий для формирования у школьников устойчивых навыков безопасного поведения на улицах и дорогах
Программа по формированию навыков безопасного поведения на дорогах и улицах «Добрая дорога детства» 2 iconПрограмма по формированию навыков безопасного поведения на дорогах...
«Организация воспитательно- образовательного процесса по формированию и развитию у дошкольников умений и навыков безопасного поведения...
Программа по формированию навыков безопасного поведения на дорогах и улицах «Добрая дорога детства» 2 iconПрограмма по формированию навыков безопасного поведения на дорогах...
Цель: формировать у учащихся устойчивые навыки безопасного поведения на улицах и дорогах, способствующие сокращению количества дорожно-...
Программа по формированию навыков безопасного поведения на дорогах и улицах «Добрая дорога детства» 2 iconПрограмма по формированию навыков безопасного поведения на дорогах...
Конечно, главная роль в привитии навыков безопасного поведения на проезжей части отводится родителям. Но я считаю, что процесс воспитания...
Программа по формированию навыков безопасного поведения на дорогах и улицах «Добрая дорога детства» 2 iconПрограмма по формированию навыков безопасного поведения на дорогах...
Поэтому очень важно воспитывать у детей чувство дисциплинированности и организованности, чтобы соблюдение правил безопасного поведения...
Программа по формированию навыков безопасного поведения на дорогах и улицах «Добрая дорога детства» 2 iconПрограмма по формированию навыков безопасного поведения на дорогах...
Всероссийский конкур сочинений «Пусть помнит мир спасённый» (проводит газета «Добрая дорога детства»)
Программа по формированию навыков безопасного поведения на дорогах и улицах «Добрая дорога детства» 2 iconПрограмма по формированию навыков безопасного поведения на дорогах...
Поэтому очень важно воспиты­вать у детей чувство дисциплинированности, добиваться, чтобы соблюдение правил безопасного поведения...
Программа по формированию навыков безопасного поведения на дорогах и улицах «Добрая дорога детства» 2 iconПрограмма по формированию навыков безопасного поведения на дорогах...

Программа по формированию навыков безопасного поведения на дорогах и улицах «Добрая дорога детства» 2 iconПрограмма по формированию навыков безопасного поведения на дорогах...

Программа по формированию навыков безопасного поведения на дорогах и улицах «Добрая дорога детства» 2 iconПрограмма по формированию навыков безопасного поведения на дорогах...

Программа по формированию навыков безопасного поведения на дорогах и улицах «Добрая дорога детства» 2 iconПрограмма по формированию навыков безопасного поведения на дорогах...

Программа по формированию навыков безопасного поведения на дорогах и улицах «Добрая дорога детства» 2 iconПрограмма по формированию навыков безопасного поведения на дорогах...

Программа по формированию навыков безопасного поведения на дорогах и улицах «Добрая дорога детства» 2 iconПрограмма по формированию навыков безопасного поведения на дорогах...

Программа по формированию навыков безопасного поведения на дорогах и улицах «Добрая дорога детства» 2 iconПрограмма по формированию навыков безопасного поведения на дорогах...

Программа по формированию навыков безопасного поведения на дорогах и улицах «Добрая дорога детства» 2 iconПрограмма по формированию навыков безопасного поведения на дорогах...



Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
100-bal.ru
Поиск