Avr studio 4 как включить нумерацию строк

| Текущее время: Пн фев 05, 2024 02:49:33 |
Часовой пояс: UTC + 3 часа
Запрошенной темы не существует.
Часовой пояс: UTC + 3 часа

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y
Работоспособность сайта проверена в браузерах:
IE8.0, Opera 9.0, Netscape Navigator 7.0, Mozilla Firefox 5.0
Адаптирован для работы при разрешениях экрана от 1280х1024 и выше.
При меньших разрешениях возможно появление горизонтальной прокрутки.
По всем вопросам обращайтесь к Коту: kot@radiokot.ru
©2005-2024
номера строк в AVRStudio


Для матрицы из 6 строк и 5 столбцов отпечатать номера тех строк, сумма элементов которых кратна заданной величине, и число таких строк.
Для матрицы из 6 строк и 5 столбцов отпечатать номера тех строк, сумма элементов которых кратна.
Вывести номера трех участников (номера строк двумерного массива), которые набрали наименьшее количество баллов
Задание 17. В текстовом файле создать матрицу размером 10×5, в которой находится информация о.
Вывести номера строк исходного текстового файла и номера позиций в строке где встречаеться заданное слово
вывести номера строк исходного текстового файла и номера позиций в строке где встречаеться заданное.
Среда разработки AVR Studio 4
В ниже приведенном руководстве описывается установка среды разработки AVR для операционной системы Windows.
Установка программного обеспечения
Перед установкой программного обеспечения необходимо добыть нижеследующее программное обеспечение, с сайта производителя или сайта Домашней Лаборатории или с диска находящегося в чемодане Домашней Лаборатории.
1. AVR Studio
AVRS tudio 4 IDE (Integrated Development Environment) – это программа, которая предназначена для написания программного кода и загрузки его в микроконтроллер. Последняя версия AVR Studio находится на веб-сайте производителя Atmel.
2. WinAVR WinAVR является GNU-GCC компилятором для микроконтроллеров AVR.Это свободное программное обеспечение, которое можно найти на сайте Sourceforge. При инсталляции WinAVR предлагает имя каталога, которое также содержит номер версии, но директория должна быть изменена вручную:
C:\WinAVR
3. Библиотека Домашней Лаборатории
Библиотека Домашней Лаборатории содержит функции, облегчающие использование AVR и устройств комплекта Домашней Лаборатории. Последняя версия библиотеки находится на сайте Домашней Лаборатории. Библиотека должна быть обязательно установлена в том же каталоге, где WinAVR.
4. Драйвер виртуального COM порта
Драйвер позволяет подключить к компьютеру программатор JTAG ICE. Драйвер должен быть установлен до подключения к компьютеру программатора. Имя установочной программы ‘CDM x.xx.xx.exe», где «х» обозначает версию. Затем необходимо подключить программатор к компьютеру через USB интерфейс, и позволить Windows выполнит автоматическую установку. В строке состояния должно появиться примерно такое сообщение:
В зависимости от того, сколько виртуальных последовательных портов на вашем компьютере уже установлено и введено в эксплуатацию, Windows автоматически установит следующий порядковый номер виртуального порта. Новый порядковый номер генерируется и при смене порта USB. Некоторые версии AVR Studio признают программатор ICE JTAG, только в последовательных портах COM1 … COM9 и функцию отладки позволяют использовать только последовательные порты COM1 … COM4. Пользователь имеет возможность изменить порядковый номер порта, использую инструмент Device Manager. Посмотри процедуру на сайте.
Следующее руководство описывает установку среды разработки версии 5 Домашней Лаборатории (Контроллер v1 — ATmega2561) и использование еёв операционной системы Windows.
Установка программного обеспечения
Перед установкой программного обеспечения необходимо добыть нижеследующее программное обеспечение, с сайта производителя или сайта Домашней Лаборатории или с диска находящегося в чемодане Домашней Лаборатории.
1. AVR Studio
AVR Studio 4 IDE (Integrated Development Environment) – это программа, которая предназначена для написания программного кода и загрузки его в микроконтроллер. Последняя версия AVR Studio находится на веб-сайте производителя Atmel. Обычно для AVR Studio выдается пакет обновлений (Service Pack — SP). Всегда рекомендуется после установки AVRStudio добавить и самый новый пакет обновлений.
2. WinAVR
WinAVR является GNU-GCC компилятором для микроконтроллеров AVR. Это свободное программное обеспечение, которое можно найти на сайте Sourceforge. При инсталляции WinAVR предлагает имя каталога, которое также содержит номер версии, но директория должна быть изменена вручную:
C:\WinAVR
3. Библиотека Домашней Лаборатории
Библиотека Домашней Лаборатории содержит функции, облегчающие использование AVR и устройств комплекта Домашней Лаборатории. Последняя версия библиотеки находится на сайте Домашней Лаборатории. Библиотека должна быть обязательно установлена в том же каталоге, где WinAVR. Для Домашней Лаборатории (Controllerboardv1.x) снабженной контроллером ATmega2561 подходит homelab_library_v2.x. Homelab library v2.1
4. JTAG интерфейс
JTAG интерфейс — HappyJTAG2 представляет собой интерфейс между программатором и AVR Studio. Программа упакована в ZIP файл, и достаточно только распаковать в нужную папку, к примеру,C: \ WinAVR (отдельно устанавливать программное обеспечение не нужно) HappyJTAG2 for HomeLab
5. Драйвер программатора
Драйвер позволяет подключить к компьютеру программатор, который находится на плате контроллера. Если плату контроллера подключить к компьютеру через USB интерфейс, то Windows начнет выполнять автоматическую установку (Windows 7). Если открыть окно процесса установки, то должно появиться примерно такое сообщение:
Перед следующим шагом необходимо подождать, пока установка полностью не завершится.
AvrStudio 4. Библиотека для AVR. Модуль для I2C или TWI
Введение Для Arduino написано много библиотек бери да пользуйся, не исключение и шина I 2 C. А если посмотреть в сторону тех кто пишет на AvrStudio, то будет голое поле. Библиотеку писал на основе открытой библиотеки которую я скачал с сайта http://www.procyonengineering.com. Информации про интерфейс в интернете много, а библиотек для работы с ним нет. Только GitHub в помощь. Несколько слов про интерфейс. Интерфейс, по-философии, чем-то похож на интерфейс 1-wire. Только для 1-wire синхронизация идет по времени и сигналам, а тут только по отдельной линии. Привожу таблицу сравнения
| I2C | 1-Wire | |
| сброс линии | нет | есть |
| стартовый бит | есть | есть |
| адрес устройства | есть | есть |
| Сигнал присутствия | есть | есть |
| стоповый бит | есть | нет |
Лично для меня реализация интерфейса показалась достаточно сложной, объемной. Плюс данного интерфейса высокая скорость и возможность коммуникации между многими устройствами, что является не маловажным. Своего рода TCP/IP для мира микроконтроллеров. Можете посмотреть ради интереса фолианты по TCP/IP. Подключение библиотеки Перейдем к цели, а именно рассказать про использование библиотеки. Библиотека состоит из 2 файлов: i2c.h и i2c.c. 1. В начале необходимо скинуть эти 2 файла в папку с проектом. 2. Подключить в главном си-файле заголовочный файл: #include
#include #include int main(void) < while(1) < >>
3. Затем необходимо открыть опции конфигурирования проекта: Project—>Configuration Option 3.1. В вкладке General необходимо в строке Frequency указать частоту тактирования контроллера . ВНИМАНИЕ: если это не сделать проект будет выдавать ошибку.
3.2. Затем необходимо Включить корневую папку проекта в поиск Стандартных библиотек. Для этого во вкладке Include Directories нажимают кнопку New(Insert) и выбирают папку проекта.
3.3. Последний этап это включение файла i2c.c в проект. Для этого в дереве проекта на папке Source File кликают 2 раза ПКМ и выбирают пункт Add Existing File(s) и добавляют файл i2c.c. После этого проект должен собраться. Библиотека может работать в режиме Мастер или Slave. В библиотеке можно подключить/отключить любой режим. По-умолчанию библиотека собирается в режиме Master.
![]()
Описание концепции работы библиотеки Иногда скачаешь библиотеку, и думаешь как ей пользоваться? А потом решаешь свою написать. Поэтому опишу почему пришел к такой структуре библиотеки. Библиотеку начал писать для работы с LCD2004 по I 2 C. Разных чипов работающих по I 2 C навалом, но все они работают по принципу EEPROM памяти. В начале Мастер посылает пакет в котором записывает в один или два байта адрес ячейки с которой хочет начать чтение данных в памяти, а затем Начинает их читать. Интерфейс я бы сказал ОЧЕНЬ ВЕЖЛИВЫЙ, это тебе не UART. Хочу передаю, хочу не передаю и ответственности за приемник никакой. Тут же Мастер интересуется кому посылает, готов сам откликнуться на чужую нужду и бросить свое дело. Ведомый же всегда скажет если дома, если есть место честно об этом скажет, а если не может больше принять данных, то тоже сообщит. Рассмотрим запись и чтение данных из EEPROM памяти at24c512. Схема подключения представлена на рисунке. В данном случае at24c512 имеет адрес устройства 0b1010000. Дебаггер для I2C присоединил для удобства. В таблице привожу общение контроллера с памятью. Само общение можно посмотреть с помощью Дебаггера. Каждая строка в таблице коммуникации это попадание в прерывание для Master. Вот так выглядит таблица ячеек памяти для at24c512 после записи.
| Номер ячейки памяти | Значение Ячейки памяти |
| Нет адреса | Старший байт адрес (0x00) |
| Нет адреса | Младший байт адрес (0x03) |
| 0x0000 | 0xFF |
| 0x0001 | 0xF0 |
| 0x0002 | 0xF1 |
| 0x0003 | 0xFF |
| 0xXXYY | 0xZZ |
| ———————— | ———————— |
| 0xFFFE | 0xFF |
| 0xFFFF | 0xFF |
Перед нами стоит следующая задача. Записать два байта 0xF0 и 0xF1 в ячейки памяти с индексами 0x0001 и 0x0002 соответственно. Для этого мы в начале отправляем адрес устройства с командой записи, а затем посылаем данные. Первые 2 байта это индекс первой ячейки для записи, а все последующие это данные которые последовательно будут записываться в ячейки памяти. Пока ячейки не кончаться Память будет посылать готовность к записи. А ниже я привожу таблицу обмена между контроллером и памятью at24c512
| Посылка Байт+(N)Ask | Номер прерывания при выполнении для Master | Действие Master | Описание события Master после наступления прерывания | Действие Slave | Описание действия Slave |
| START-бит | 0x08 | S Мастер посылает СТАРТ-бит | Мастер инициировал сеанс связи | Нет действий | Логика Slave готовиться к принятию адреса и сравнению со своим |
| 0b1010000W_Ask | 0x18 | 0b10100000 Мастер отправил адрес Slave для записи | Мастер отправил адрес Slave и получил Ask | Ask | Логика Slave приняла свой адрес для записи и отправила готовность к записи |
| 0x00_Ask | 0x28 | 0x00 Мастер отправил старший адрес 0x00 ячейки памяти для at24c512. | Мастер отправил данные и получил Ask, т.е. готовность к дальнейшему общению | Ask | Slave записал старший адрес ячейки памяти и готов дальнейшему общению |
| 0x01_Ask | 0x28 | 0x01 Мастер отправил младший адрес 0x01 ячейки памяти для at24c512. | Мастер отправил данные и получил Ask, т.е. готовность к дальнейшему общению | Ask | Slave записал младший адрес ячейки памяти и готов дальнейшему общению. Теперь следующий байт будет записан в ячейку с номером 0x0001 |
| 0xF0_Ask | 0x28 | 0xF0 Мастер отправил данные для Slave | Мастер отправил данные и получил подтверждение для дальнейшей передачи | Ask | Slave записал данные (0xF0) в ячейку памяти с номером 0x0001. Номер адреса ячейки памяти увеличен на 1. |
| 0xF1_Ask | 0x28 | 0xF1 Мастер отправил данные для Slave | Мастер отправил данные и получил подтверждение для дальнейшей передачи | Ask | Slave записал данные (0xF1) в ячейку памяти с номером 0x0002. Номер адреса ячейки памяти увеличен на 1. |
| Stop | Нет прерывания | Stop Мастер закончил отправку данных и посылает Стоп-бит | После отправки СТОП Мастер не попадает в прерывание | Нет действия | Slave прекращает сеанс общения |
Следующая задача обратная. Считать значения ячеек памяти по адресам 0x0001 и 0x0002. В начале Мастер посылает адрес Slave памяти с битом ЗАПИСИ, а затем 2 байта для записи адреса ячейки памяти Slave. После этого посылаем Повторный СТАРТ и снова Адрес Slave c битом ЧТЕНИЯ. И начинаем читать данные. Если мы прочитал последний байт, то Мастер не должен отправлять ASK. После этого Мастер посылаем СТОП. Сеанс общение закончился.
| Посылка Байт+(N)Ask | Номер прерывания при выполнении для Master | Действие Master | Описание события Master после наступления прерывания | Действие Slave | Описание действия Slave |
| START-бит | 0x08 | S Мастер посылает СТАРТ-бит | Мастер инициировал сеанс связи | Нет действий | Логика Slave готовиться к принятию адреса и сравнению со своим |
| 0b1010000W_Ask | 0x18 | 0b10100000 Мастер отправил адрес Slave для записи | Мастер отправил адрес Slave и получил Ask | Ask | Логика Slave приняла свой адрес для записи и отправила готовность к записи |
| 0x00_Ask | 0x28 | 0x00 Мастер отправил старший адрес 0x00 ячейки памяти для at24c512. | Мастер отправил данные и получил Ask, т.е. готовность к дальнейшему общению | Ask | Slave записал старший адрес ячейки памяти и готов дальнейшему общению |
| 0x01_Ask | 0x28 | 0x01 Мастер отправил младший адрес 0x01 ячейки памяти для at24c512. | Мастер отправил данные и получил Ask, т.е. готовность к дальнейшему общению | Ask | Slave записал младший адрес ячейки памяти и готов дальнейшему общению. Теперь следующий байт будет записан в ячейку с номером 0x0001 |
| ReSTART-бит | 0x10 | S Мастер посылает СТАРТ-бит | Мастер инициировал сеанс связи | Нет действий | Логика Slave готовиться к принятию адреса и сравнению со своим |
| 0b1010000R_Ask | 0x40 | 0b1010000R Мастер отправил адрес Slave c битом ЧТЕНИЯ | Мастер получил подтверждения готовности Slave к чтению | Ask | Slave отправил готовность чтению. Передачи данных начинается с загруженного адреса (0x0001) |
| 0xF0_Ask | 0x50 | Ask | Мастер отправил подтверждение, т.е запрос на чтение следующего байта | 0xF0 | Slave отправил данные из ячейки 0x0001, увеличил счетчик на 1, принял запрос на передачу следующего байта |
| 0xF1_NAsk | 0x58 | NAsk | Мастер НЕ отправил ПОДТверждение, т.е запрос Мастер прочитал все необходимые байты. | 0xF1 | Slave отправил данные из ячейки 0x0002, увеличил счетчик на 1. Slave не принял подтверждения. Ожидает СТОП-бит. |
| Stop | Нет прерывания | Stop Мастер закончил отправку данных и посылает Стоп-бит | После отправки СТОП Мастер не попадает в прерывание | Нет действия | Slave прекращает сеанс общения |
![]()
Теория программирования С теорией интерфейса мы закончили, а как же это реализовать обмен с помощью библиотеки? Опишу вкратце значение функций для режима Master. Инициализация, естественно, библиотеки. void i2cInit(void); Загрузка данных для отправки в виртуальный Мастер буфер uint8_t i2cMasterUploadBuf(uint8_t data); Мы последовательно записываем данные в буфер, пока место не кончиться. Если байт записался, то выдаем нам 1, иначе 0. В это случае байты не записываются. А если мы записала байты, а потом поняли что не то записал, что делать? Для этого есть функция сброса данных о загруженных байтах. Т.е. байт загруженные остались, а библиотека думает что передавать нечего. void i2cMasterBufReset(void); Данные загрузили, теперь надо отправить их адресату uint8_t i2cMasterSendBuf(uint8_t deviceAdd); А если надо данные принять, то в начале загружаем 2 байта адреса ячеек памяти в буфер и вызываем функцию передачи по адресу устройства в количество N — байт. uint8_t i2cMasterReceive(uint8_t deviceAdd, uint8_t lenght); Данные считали, теперь надо их получить для этого есть спец функция для считывания значений из Мастер буфера по индексам. Если данная ячейка существует, то результат функции будет 1, иначе 0. uint8_t i2cMasterDownloadBufIndex(uint8_t* result, uint8_t index); Максимальный объем памяти Мастер буфера 255 байт. Практическое задание Давайте реализуем такое задание. У нас будет 2 кнопки. Задача одной из них записывать последовательно 2 байта в EEPROM память at24c512 в ячейку 0х0001 при нажатии начиная с 0x00, 0x01, затем 0x02, 0x03 и т.д. Задача 2 кнопки это считывание значений и вывод их на на светодиоды 2 портов. Вот схема из протеуса Листинг программы с комментариями //=====================================================
#include #include void init(void) < DDRA=0xFF; // настроили на вывод DDRB=0xFF; // настроили на вывод PORTA=0; // Подтянули к земле PORTB=0; // Подтянули к земле DDRD=0x00; // настроили на вход PORTD=0xFF;// подтянули к питанию >#define ADDRES_at24c512 0b1010000 static volatile uint8_t temp=0x00,a[2]; int main(void) < init(); i2cInit(); // инициализация шины while(1) < if ((PIND&0b1000)==0) < // Ожидаем когда отпустят кнопку while(!(PIND&0b1000)); // Загружаем старший адрес ячейки памяти i2cMasterUploadBuf(0x00); // Загружаем старший адрес ячейки памяти i2cMasterUploadBuf(0x01); // Загружаем данные для записи for(uint8_t i=0;i<2;i++) < i2cMasterUploadBuf(temp); temp++; >// Отправляем данные на запись i2cMasterSendBuf(ADDRES_at24c512); > if ((PIND&0b10000000)==0) < // Ожидаем когда отпустят кнопку while(!(PIND&0b10000000)); // Загружаем старший адрес ячейки памяти i2cMasterUploadBuf(0x00); // Загружаем старший адрес ячейки памяти i2cMasterUploadBuf(0x01); // Читаем данные из At24c512, кол-во 2 байта i2cMasterReceive(ADDRES_at24c512, 2); // копируем значения из Мастер-буфера for(uint8_t i=0;i<2;i++) i2cMasterDownloadBufIndex((uint8_t*)&a[i] , i); // Загружаем данные в барометры PORTA=a[0]; PORTB=a[1]; >> >
//================================================================ Заключение Сама шина реализуется методом конечного автомата. Поэтому библиотека очень похожа на АК-47, а буфер на рожок с патронами. В начале вы забиваете рожок патроны (байты). Объем рожка — это размер буфера. Потом прицеливаетесь (вводите адрес), и стреляете пока не кончаться патроны (байты), или не будет осечки (Slave не может принять байты). Кол-во попаданий (загруженных байт) будет результатом функции. P.S. В библиотеке реализована поддержка Slave режима. Если кому-то будет интересна данная тема могу написать статью. Там используется тот же подход, что и при работе с EEPROM памятью. Если при использовании встретите какие-либо ошибки пишите в комментариях или сообщениях.
Прикрепленные файлы:
- twi_test.rar (68 Кб)