Юрий Ревич - Занимательная микроэлектроника

Здесь есть возможность читать онлайн «Юрий Ревич - Занимательная микроэлектроника» — ознакомительный отрывок электронной книги совершенно бесплатно, а после прочтения отрывка купить полную версию. В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: Санкт-Петербург, Год выпуска: 2007, ISBN: 2007, Издательство: БХВ-Петербург, Жанр: sci_radio, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Занимательная микроэлектроника: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Занимательная микроэлектроника»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

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

Занимательная микроэлектроника — читать онлайн ознакомительный отрывок

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Занимательная микроэлектроника», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

ldi temp,0xFF

cp AddrL,temp

ldi temp,0x7F

cpc AddrH, temp

breq clr_FE;если равен, на clr_FE

adiw AddrL,1 ; иначе сохраняем след, адрес:

clr ZH

ldi ZL,EaddrL ;в EEPROM

mov temp,AddrL

rcall WriteEEP

inc ZL

mov temp,AddrH

rcall WriteEEP

reti ;выход из прерывания

clr_FE ;если конец памяти:

clr temp

ldi ZH,1 ;старший RAM

ldi ZL,FEnRAM

st Z,temp ;сбрасываем разрешение записи

clr ZH ;старший EEPR

ldi ZL,FEnEE

rcall WriteEEP

sbr Flag,4 ;бит «конец памяти»

clr temp

out TCCR1A,temp ;отмена переключающего режима для вывода PD5-OC1A

reti ;на выход из прерывания

Как мы видим, здесь каждые 15 с идет запись в EEPROM текущего адреса (того, по которому должна производиться следующая запись), т. е. если в какой-то момент питание пропадет, то при следующей загрузке запись все равно начнется с текущего адреса. При достижении конца памяти отключится переключающий режим для вывода OC1A, и светодиод перестанет мигать, сигнализируя о конце памяти.

Отметим, что запись идет через каждые четыре байта, т. е. для заполнения 32 кбайтов внешней памяти придется 8192 раза обновить содержимое ячеек. Таким образом, для достижения теоретического предела по количеству циклов записи в EEPROM (100 тыс.) нужно как минимум двенадцать раз заполнить внешнюю память. На самом же деле число допустимых циклов еще намного больше (автор специально запускал запись каждые три секунды на пару месяцев, но сбоев так и не добился), потому можно не опасаться, что мы исчерпаем ресурс встроенной EEPROM.

Заметки на полях

Обратите внимание, что в процедурах I 2С имеются псевдонимы: DATAи ClkAесть те же регистры, что и temp1и temp2в основной программе. Я предостерегал вас от такой практики, но в данном случае ничего страшного не произойдет, т. к. использование этих регистров разнесено во времени — обращение к I 2С никогда не сможет произойти во время расчетов, где задействованы temp1и temp2. В дальнейшем эти регистры нам где-нибудь еще пригодятся.

Чтение данных из памяти через UART

Теперь займемся процедурами чтения содержимого внешней памяти и осуществления установок разрешения-запрещения записи. Естественно, это придется делать через компьютер (а куда еще читать?), и мы используем уже инициализированный нами UART. Нам потребуется реализовать четыре процедуры:

• Запретить запись во flash.

• Разрешить запись во flash.

• Прочесть содержимое flash.

• Обнулить адрес flash, чтобы начать запись с начала.

Добавим в текст программы, в основной цикл (по метке Gcykle, обязательно после команды rcall in_com) следующие строки:

cpi temp,0xF0 ;запись во flash разрешить breq proc_F0

cpi temp,0xF1 ;запись во flash запретить breq proc_F1

cpi temp,0xF2 ;читать flash breq proc_F2

cpi temp,0xF8 ;запись во flash с начала, обнулить адрес

breq proc_F8

Посылая соответствующие команды ( $F0и т. д.) с компьютера, мы будем вызывать соответствующую процедуру. Проще всего оформить процедуры разрешения и запрещения так, как в листинге 16.8.

Листинг 16.8

proc_F0: ;F0 запись flash разрешить

rcall EnableFlash

rjmp Gcykle

proc_F1: ;F1 запись flash запретить

rcall DisFlash

rjmp Gcykle

EnableFlash:

cli

;сначала проверяем бит «конец памяти»

sbrc Flag,2

rjmp exit_FE

;проверяем байт разрешения, если нет, пишем его в память

ldi ZH,1 ;старший RAM

ldi ZL,FEnRAM

ld temp,Z

cpi temp,$FF

breq exit_FA

ldi temp,$FF

st Z,temp

clr ZH ;старший EEPR

ldi ZL,FEnEE

rcall WriteEEP

ldi temp,$AA ;все Ok

rcall out_com

sei

ret

exi t_FA:

ldi temp,$FA ;ответ в комп. — уже разрешен

rcall out_com

sei

ret

exit_FE:

ldi temp,$FE ;ответ в комп. — конец памяти

rcall out_com

sei

ret

DisFlash:

cli

clr temp

ldi ZH,1 ;старший RAM

ldi ZL,FEnRAM

st Z,temp

clr ZH ;старший EEPR

ldi ZL,FEnEE

rcall WriteEEP

ldi temp,$AA ;ответ в комп. — все Ok

rcall out_com

sei

ret

Мы используем запрещение прерываний, потому что процедуры достаточно долгие и запросто можно «испортить» temp по ходу дела, а здесь это уже недопустимо. Кроме того, они включают запись в EEPROM, во время которой прерывания надо все равно запрещать. Из этих процедур мы также видим, зачем нам понадобился отдельный флаг «конец памяти» — если он установлен, то разрешить запись будет нельзя. Это можно будет сделать только одновременно со сбросом адреса, что необратимо, и данные после этого уже прочесть будет нельзя. Потому мы сначала займемся их чтением (листинг 16.9).

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Занимательная микроэлектроника»

Представляем Вашему вниманию похожие книги на «Занимательная микроэлектроника» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Занимательная микроэлектроника»

Обсуждение, отзывы о книге «Занимательная микроэлектроника» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x