AVR studio в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Ответить
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18859
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

если приинклюдили avr/eeprom.h, то EEMEM уже есть
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Прорезались зубы
Аватара пользователя
Сообщения: 232
Зарегистрирован: Вт фев 05, 2019 17:20:08
Откуда: Днепр, Украина

Сообщение Roman Solovey »

ага, а как мне задать конкретный регистр и положить туда конкретные данные. мне ж их потом еще считывать..
просто как я понял я пишу тупо подряд. Смотрел файл там в начале еще какой то байт появился, который я не инициализировал. как то странно.
мне кажется легче прописать все в регистры, записать в МК а потом просто считать файл еепром и юзать..
Одержать сто побед в ста битвах — это не вершина воинского искусства. Повергнуть врага без сражения — вот вершина.
Контактная информация:
Реклама
Вымогатель припоя
Сообщения: 550
Зарегистрирован: Вт фев 09, 2010 17:52:26

Сообщение codenamehawk »

[uquote="ARV",url="/forum/viewtopic.php?p=4287872#p4287872"]если приинклюдили avr/eeprom.h, то EEMEM уже есть[/uquote]
Вы правы, есть.
Сбило то, что студия показывает :
error.png
(139.12 КБ) 116 скачиваний
Как насчет сохранения еепрома между отладками?
Прорезались зубы
Сообщения: 217
Зарегистрирован: Ср янв 11, 2012 11:55:51

Сообщение Land »

Уважаемые, а как к проекту в Студии подкинуть файл с содержимым eeprom? Именно, чтобы в режиме отладки использовать его. Поиском не нашел тут подобного вопроса.
Реклама
Эиком - электронные компоненты и радиодетали
akl
Друг Кота
Сообщения: 4476
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

После компиляции становится активным Up/Download Memory в окне Debug. Выбираете EEPROM
Реклама
Прорезались зубы
Сообщения: 217
Зарегистрирован: Ср янв 11, 2012 11:55:51

Сообщение Land »

akl, убейте, не понимаю, о каком окне идет речь (
Реклама
akl
Друг Кота
Сообщения: 4476
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

Не знаю, какая студия у вас. Студия 4.19, к примеру, показывает так
СпойлерИзображение
СпойлерИзображение
Прорезались зубы
Сообщения: 217
Зарегистрирован: Ср янв 11, 2012 11:55:51

Сообщение Land »

увы, у меня 7-я. Там такого пункта просто нет (
Изображение
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 169
Зарегистрирован: Сб фев 20, 2010 17:33:02

Сообщение vitaminkvl »

Помогите я запарился прям руки опускаются. Atmel Studio 7 не работают точки останова и все тут. Код простой на картинке. Почему не хочет останавливаться? Оптимизатор выключен.
Причем в мануале начиная с 66 страницы типа все должно работать

Изображение
Вложения
Безымянный.jpg
(20.51 КБ) 680 скачиваний
Вымогатель припоя
Аватара пользователя
Сообщения: 556
Зарегистрирован: Ср июн 29, 2022 16:25:45

Сообщение Just_Fluffy »

vitaminkvl, где то пробегало, что в пути к проекту не должно быть кириллических символов
Белая и Пушистая
Я не ИИ, поэтому могу ошибаться.
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 169
Зарегистрирован: Сб фев 20, 2010 17:33:02

Сообщение vitaminkvl »

[uquote="Just_Fluffy",url="/forum/viewtopic.php?p=4331231#p4331231"]vitaminkvl, где то пробегало, что в пути к проекту не должно быть кириллических символов[/uquote]
Проект по короткому пути "D:\AVR_project\Test_LEDS" уже студию переставил именно на ATMEL Studio 7, таже фигня не хочет останавливаться хоть на каждой строчке брекпоинты ставь. Уже все перепробовал все что нагуглил.

В видеоинструкции от Atmel в симуляторе спокойно ставят точки и они работают. Че студия от меня хочет не пойму.


Добавлено after 2 hours 14 minutes 23 seconds:
Заработало, я на это потратил 2а дня оставлю другим на заметку. Действительно виноваты русские буквы в пути до проекта. Но прочитав о том что такое может быть я папку с проектом перенес так чтоб путь был латиницей и все равно брекпоинты НЕ работали !!! ПРОЕКТ НАДО СОЗДАВАТЬ ЗАНОВО ЧТОБ ОН СРАЗУ БЫЛ ПО ПУТИ ЛАТИНИЦЕЙ!!!!
Вымогатель припоя
Аватара пользователя
Сообщения: 556
Зарегистрирован: Ср июн 29, 2022 16:25:45

Сообщение Just_Fluffy »

vitaminkvl писал(а):ПРОЕКТ НАДО СОЗДАВАТЬ ЗАНОВО ЧТОБ ОН СРАЗУ БЫЛ ПО ПУТИ ЛАТИНИЦЕЙ
Возможно, надо из проекта вынести все файлы и добавить их заново. (Справа, в окошке состава проекта)
Белая и Пушистая
Я не ИИ, поэтому могу ошибаться.
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 169
Зарегистрирован: Сб фев 20, 2010 17:33:02

Сообщение vitaminkvl »

Народ помогите разобраться, до фунции mein обьявлен массив buffer заполненный сразу. Останавливаю дебагер на первой строчке, никаких изменений buffer не произвожу еще. Но дебагер показывает какуюто чушь в этом массиве buffer, а не то что заказывал. Элемент массива с индексом 0 должен быть 0xFF а дебагер кажет 0х12 и тд. Что не так?

Изображение
Вложения
111.jpg
(67.64 КБ) 624 скачивания
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 169
Зарегистрирован: Сб фев 20, 2010 17:33:02

Сообщение vitaminkvl »

Уперся в непонимание следующего , до функции main объявлены пару массивов один короткий mychar и один большой MYbuffer на 1024 байта они сразу заполнены
тут привел кусок большого массива чтоб покороче сообщение было.

char mychar[]="ASDFGH";

uint8_t MYbuffer[1024] =
{
0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF,
0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF,
..............................

int main(void)
{

char Simb = mychar[3];
uint8_t B=MYbuffer[0];
uint8_t C=MYbuffer[1];


Массив Mychar попадает в ОЗУ читается начиная с адреса 0x0060 и обращение к массиву mychar[3] возвращает 0x46 что соответсвует букве F как и положено.

А вот большой массив MYbuffer не понимаю куда он попадает , и почему MYbuffer[0] и MYbuffer[1] возвращает чтото начина с адреса 0x0000 из памяти PROG FLASH,
а там лежит чтото другое тоесть
MYbuffer[0] должен возвращать 0xFF а прилетает 0х12
MYbuffer[1] должен возвращать 0x01 а прилетает 0хс0

Помогите разобраться
Поставщик валерьянки для Кота
Сообщения: 1990
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария

Сообщение veso74 »

МК какой? Если данные в массиве не меняются, может лучше переместить MYbuffer во флеш (PROGMEM)?
Контактная информация:
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 169
Зарегистрирован: Сб фев 20, 2010 17:33:02

Сообщение vitaminkvl »

Atmega8, массив будет постоянно меняться , мне бы вообще понять почему рядом обьявленные массивы попадают в разные места . я не могу достучаться до большого массива, при компилировании ошибок нет.
Вымогатель припоя
Аватара пользователя
Сообщения: 556
Зарегистрирован: Ср июн 29, 2022 16:25:45

Сообщение Just_Fluffy »

vitaminkvl, Вообще странно... Атмега 8 - это всего 1024 байта ОЗУ.
А у вас туда помещается и массив в 1024 байта, и рядом объявленные массивы... И компилятор не ругается.... ?
А ведь еще где то надо стек положить.....
Белая и Пушистая
Я не ИИ, поэтому могу ошибаться.
Поставщик валерьянки для Кота
Сообщения: 1990
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария

Сообщение veso74 »

Оптимизатор есть, попытался уменьшить объем памяти (и ему это удалось ... по-своему). Выключите, или с помощью volatile к данным.

Но наверняка будет другая проблема: данные не собираются в памяти :). А потом вперед, к другим МК.
Или оптимизировать данные - напр. с "есть повторяющиеся данные, почему записаны в нескольких местах одинаковые?".
Контактная информация:
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 169
Зарегистрирован: Сб фев 20, 2010 17:33:02

Сообщение vitaminkvl »

[uquote="Just_Fluffy",url="/forum/viewtopic.php?p=4342523#p4342523"]vitaminkvl, Вообще странно... Атмега 8 - это всего 1024 байта ОЗУ.
А у вас туда помещается и массив в 1024 байта, и рядом объявленные массивы... И компилятор не ругается.... ?
А ведь еще где то надо стек положить.....[/uquote]
Да действительно это мое непонимание того что надо следить за заполнением памяти.
И да компилятор ничего не говорит если включен оптимизатор.
Вымогатель припоя
Аватара пользователя
Сообщения: 556
Зарегистрирован: Ср июн 29, 2022 16:25:45

Сообщение Just_Fluffy »

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

Код: Выделить всё

#include <avr/io.h>

uint8_t arr[1025] = { 0x00 };

int main(void)
{
    
	for (uint16_t i = 0; i<1025; i++) arr[i] = i & 0xFF;
    while (1) 
    {
    }
}
Error Program Memory Usage : 100 bytes 1,2 % Full
Data Memory Usage : 1025 bytes 100,1 % Full (Memory Overflow) dummy8a dummy8a 0

Добавлено after 9 minutes 28 seconds:
Попробовала при объявленном массиве в 1024 байта объявить в функции локальный массив в 100 байт и попробовать посмотреть на выполнение в отладчике студии. При оптимизации О0 и О1 проект собирается.
При выполнении:
Заполняется в ОЗУ массив 1024 байта.
А потом, поскольку локальные переменные живут на стеке - начал заполняться этот временный массив данными, затирая верхнюю часть объявленного массива.
Так что за объемом памяти надо следить самостоятельно. И помнить, сколько ОЗУ в МК и сколько нужно программисту.
Белая и Пушистая
Я не ИИ, поэтому могу ошибаться.
Ответить

Вернуться в «AVR»