Курс  AVR123.nm.ru


Electronic Banner Exchange (ElBE)
 


 

 
         
 

 

Задача - упражнение  7

 



поиск   GOOGLE   по 
Краткому Курсу AVR


введите интересующие вас слова

 

 

Книги и учебники по электронике
и микроконтроллерам  скачать

 

  

Цель задачи:  

Добавить в устройство и научиться использовать 2 МегаБайта
памяти - не забывающей данные при выключении питания. 

Память это микросхема  AT45DB161 - семейства 
AT45 - DataFlash
компании ATMEL.
И DataFlash AT45DB041  

 

FAQ - часто задаваемые вопросы по DataFlash
 

Файловую систему для микросхем этой серии от компании ATMEL вы можете найти в файло-обменнике caxapa.ru или спросить в конфе телесистем 

За основу для этой задачи я взял АпНоут - пример применения этой микросхемы памяти от производителя, AN AVR335
(здесь он есть на русском языке).

 

Скачайте АпНоуты - это примеры применения AVR 
от производителя этих МК
со схемами и примерами кода.

 

Для выполнения задачи необходимо:

- Установленный компилятор Си для AVR CodeVisionAVR

- Data Sheet - ДШ на
МК AVR AT90s8535 

- Data Sheet на AT45DB161

- архив с текстами программ (56 кБ Си исходники для DataFlash AT45  AT45DB161 и AT45DB041 )

- прочитать статью: Последовательная память семейства DataFlash® корпорации Atmel - идеальное решение для реализации внешней памяти

Если у вас нет модели AT45 для VMLAB или PROTEUS то ещё  :

- макетная плата или устройство содержащее схему:

 

 

- источник питания 5 вольт, стабилизированный. 

- адаптер для внутрисистемного программирования - ISP  (см подробней о прошивании МК стр. 7 курса)

- адаптер для соединения МК с COM портом компьютера выполненный на микросхеме MAX232 или на одном из множества более дешевых клонов.
пример в задаче 4 курса.

- свободное время и желание.

 

 

Кратенько как обычно:

Если вы прочитали рекомендуемые материалы то наверно поняли, что: 

- это очень интересная и полезная микросхема - и стоит
она не дорого - всего 4-5 $.  

- занимает всего 5 ножeк МК причем 4-мя из них может делится с другими устройствами имеющими последовательный интерфейс - SPI.

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


Обратите внимание: номинальное напряжение питания этой микросхемы 3,6 вольт и ниже! А в апликухе от производителя ее питают 5-ю вольтами. Такое решение я счел оправданным, потому что выводы микросхемы не боятся напряжения 5 вольт - об этом прямо сказано в ДатаШите. 

А вот какое напряжение точно погубит микросхему в ДШ умолчали. 

Но в Корпорации "Точка опоры" мне сказали, что ставят такие микросхемы в свои ранее разработанные под 5-ти вольтовые микросхемы устройства - отказов в работе памяти нет. У меня работает "в железе" от 5 вольт.

Если для питания этой микросхемы вы примените 3,6 вольт, а МК будет питаться от 5 вольт, то вам нужно будет применить схему согласования уровней сигнала - ее можно легко найти в интернете, на atmel.ru или на том же gaw.ru - там вообще много полезной информации.

 

     
 

Программируя для AVR я пришел к выводу, что CodeVisionAVR это наиболее простой для старта и приятный в работе компилятор

А его Help и особенно раздел о Генераторе Начального текста программы (CodeWizard) конфигурирующего по вашему запросу аппаратуру МК - это практически курс AVR, мой ему и в подметки не годится!

 
     

 

Я конвертировал исходный код на языке Си написанный под 
компилятор IAR из
AVR335  под компилятор CodeVisionAVR

 

Исходный код программы AVR335  содержал ошибку! 
В буфер памяти записывалось не 528 байт а 529 и, соответственно, первый байт сохраняемых данных из каждых 529 пропадал.  На качестве звука это почти не отражается, а вот для хранения данных такое не допустимо.

Я исправил код и теперь все данные сохраняются без изъяна.  Исправил и комментарии в тексте программы. 

 

Сделал заголовочный файл    at45d161.h

Этот файл содержит основные функции для работы с этой микросхемой памяти - в нем перечислены все опкоды - команды управления микросхемой - из ДШ. 

Файл содержит комментарии на русском языке.

 

Реклама недорогих радиодеталей почтой:

 

 

Я постарался максимально облегчить вам задачу:

файл at45d161.h позволяет вам просто записывать байт за байтом в память не задумываясь какие процессы в ней происходят и сколько времени занимают.

просто напишите в тексте вашей программы:

write_to_flash (vash_byte);

и значение хранящееся в вашей переменной:

unsigned char vash_byte; 

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

все так просто!

 

Для демонстрации работы устройства служит программа в файле main.c  - это простая программа, может быть легко модифицирована под ваши потребности.


В процессе работы МК будет мигать светодиодами, красный у меня подключен к PA4 а зеленый к PA5. Еще он будет выводить данные считанные из памяти в UART на адаптер rs232 в ПК. настройте соответствующий порт на скорость 115200.

Обмену данными между МК и ПК 
посвящены задачи 4 и

Для приема данных существует много программ - я использовал  LookRS232  вы можете скачать ее.

Пример принятых компьютером данных в архиве к задаче (в верху страницы) в файле: 5page.log (читать с низу в верх!). Проверьте его соответствие тому что должна делать программа! 

 

Вы можете использовать любую допустимую для МК частоту тактирования - сделайте соответствующие изменения в настройках скорости UART и свойствах проекта! 

 

Ну вот и  все, теперь ваше устройство может быть прекрасным Дата-Логером - сохранить внушительный объем данных. 

помните, что при отключении питания во время записи данных, пропадет содержимое одного из двух, активного в данный момент времени буфера микросхемы. Т.е. вы можете потерять максимум 528 байт отправленных в память последними, так что записывайте данные с запасом ...

 

 

 

Если вам что-то не понятно, не получается - пожалуйста перечитайте задачу еще раз, подумайте,  просмотрите рекомендованный материал и тексты программ. 

Я проверил и отладил их в реальной схеме - все работает! 

 

 

Задачи Упражнения курса

 

 

 

 

 

 

 

 

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