AVR studio в вопросах и ответах
Re: AVR studio в вопросах и ответах
После компиляции становится активным Up/Download Memory в окне Debug. Выбираете EEPROM
Re: AVR studio в вопросах и ответах
akl, убейте, не понимаю, о каком окне идет речь (
Re: AVR studio в вопросах и ответах
Не знаю, какая студия у вас. Студия 4.19, к примеру, показывает так

Спойлер
Спойлер
- vitaminkvl
- Нашел транзистор. Понюхал.
- Сообщения: 169
- Зарегистрирован: Сб фев 20, 2010 17:33:02
Re: AVR studio в вопросах и ответах
Помогите я запарился прям руки опускаются. Atmel Studio 7 не работают точки останова и все тут. Код простой на картинке. Почему не хочет останавливаться? Оптимизатор выключен.
Причем в мануале начиная с 66 страницы типа все должно работать

Причем в мануале начиная с 66 страницы типа все должно работать
- Вложения
-
- Безымянный.jpg
- (20.51 КБ) 628 скачиваний
- Just_Fluffy
- Вымогатель припоя
- Сообщения: 532
- Зарегистрирован: Ср июн 29, 2022 16:25:45
Re: AVR studio в вопросах и ответах
vitaminkvl, где то пробегало, что в пути к проекту не должно быть кириллических символов
Белая и Пушистая
- vitaminkvl
- Нашел транзистор. Понюхал.
- Сообщения: 169
- Зарегистрирован: Сб фев 20, 2010 17:33:02
Re: AVR studio в вопросах и ответах
[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а дня оставлю другим на заметку. Действительно виноваты русские буквы в пути до проекта. Но прочитав о том что такое может быть я папку с проектом перенес так чтоб путь был латиницей и все равно брекпоинты НЕ работали !!! ПРОЕКТ НАДО СОЗДАВАТЬ ЗАНОВО ЧТОБ ОН СРАЗУ БЫЛ ПО ПУТИ ЛАТИНИЦЕЙ!!!!
Проект по короткому пути "D:\AVR_project\Test_LEDS" уже студию переставил именно на ATMEL Studio 7, таже фигня не хочет останавливаться хоть на каждой строчке брекпоинты ставь. Уже все перепробовал все что нагуглил.
В видеоинструкции от Atmel в симуляторе спокойно ставят точки и они работают. Че студия от меня хочет не пойму.
Добавлено after 2 hours 14 minutes 23 seconds:
Заработало, я на это потратил 2а дня оставлю другим на заметку. Действительно виноваты русские буквы в пути до проекта. Но прочитав о том что такое может быть я папку с проектом перенес так чтоб путь был латиницей и все равно брекпоинты НЕ работали !!! ПРОЕКТ НАДО СОЗДАВАТЬ ЗАНОВО ЧТОБ ОН СРАЗУ БЫЛ ПО ПУТИ ЛАТИНИЦЕЙ!!!!
- Just_Fluffy
- Вымогатель припоя
- Сообщения: 532
- Зарегистрирован: Ср июн 29, 2022 16:25:45
Re: AVR studio в вопросах и ответах
Возможно, надо из проекта вынести все файлы и добавить их заново. (Справа, в окошке состава проекта)vitaminkvl писал(а):ПРОЕКТ НАДО СОЗДАВАТЬ ЗАНОВО ЧТОБ ОН СРАЗУ БЫЛ ПО ПУТИ ЛАТИНИЦЕЙ
Белая и Пушистая
- vitaminkvl
- Нашел транзистор. Понюхал.
- Сообщения: 169
- Зарегистрирован: Сб фев 20, 2010 17:33:02
Re: AVR studio в вопросах и ответах
Народ помогите разобраться, до фунции mein обьявлен массив buffer заполненный сразу. Останавливаю дебагер на первой строчке, никаких изменений buffer не произвожу еще. Но дебагер показывает какуюто чушь в этом массиве buffer, а не то что заказывал. Элемент массива с индексом 0 должен быть 0xFF а дебагер кажет 0х12 и тд. Что не так?

- Вложения
-
- 111.jpg
- (67.64 КБ) 567 скачиваний
- vitaminkvl
- Нашел транзистор. Понюхал.
- Сообщения: 169
- Зарегистрирован: Сб фев 20, 2010 17:33:02
Re: AVR studio в вопросах и ответах
Уперся в непонимание следующего , до функции 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
Помогите разобраться
тут привел кусок большого массива чтоб покороче сообщение было.
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
Помогите разобраться
-
veso74
- Поставщик валерьянки для Кота
- Сообщения: 1905
- Зарегистрирован: Сб май 05, 2012 20:24:52
- Откуда: KN34PC, Болгария
- Контактная информация:
Re: AVR studio в вопросах и ответах
МК какой? Если данные в массиве не меняются, может лучше переместить MYbuffer во флеш (PROGMEM)?
- vitaminkvl
- Нашел транзистор. Понюхал.
- Сообщения: 169
- Зарегистрирован: Сб фев 20, 2010 17:33:02
Re: AVR studio в вопросах и ответах
Atmega8, массив будет постоянно меняться , мне бы вообще понять почему рядом обьявленные массивы попадают в разные места . я не могу достучаться до большого массива, при компилировании ошибок нет.
- Just_Fluffy
- Вымогатель припоя
- Сообщения: 532
- Зарегистрирован: Ср июн 29, 2022 16:25:45
Re: AVR studio в вопросах и ответах
vitaminkvl, Вообще странно... Атмега 8 - это всего 1024 байта ОЗУ.
А у вас туда помещается и массив в 1024 байта, и рядом объявленные массивы... И компилятор не ругается.... ?
А ведь еще где то надо стек положить.....
А у вас туда помещается и массив в 1024 байта, и рядом объявленные массивы... И компилятор не ругается.... ?
А ведь еще где то надо стек положить.....
Белая и Пушистая
-
veso74
- Поставщик валерьянки для Кота
- Сообщения: 1905
- Зарегистрирован: Сб май 05, 2012 20:24:52
- Откуда: KN34PC, Болгария
- Контактная информация:
Re: AVR studio в вопросах и ответах
Оптимизатор есть, попытался уменьшить объем памяти (и ему это удалось ... по-своему). Выключите, или с помощью volatile к данным.
Но наверняка будет другая проблема: данные не собираются в памяти
. А потом вперед, к другим МК.
Или оптимизировать данные - напр. с "есть повторяющиеся данные, почему записаны в нескольких местах одинаковые?".
Но наверняка будет другая проблема: данные не собираются в памяти
Или оптимизировать данные - напр. с "есть повторяющиеся данные, почему записаны в нескольких местах одинаковые?".
- vitaminkvl
- Нашел транзистор. Понюхал.
- Сообщения: 169
- Зарегистрирован: Сб фев 20, 2010 17:33:02
Re: AVR studio в вопросах и ответах
[uquote="Just_Fluffy",url="/forum/viewtopic.php?p=4342523#p4342523"]vitaminkvl, Вообще странно... Атмега 8 - это всего 1024 байта ОЗУ.
А у вас туда помещается и массив в 1024 байта, и рядом объявленные массивы... И компилятор не ругается.... ?
А ведь еще где то надо стек положить.....[/uquote]
Да действительно это мое непонимание того что надо следить за заполнением памяти.
И да компилятор ничего не говорит если включен оптимизатор.
А у вас туда помещается и массив в 1024 байта, и рядом объявленные массивы... И компилятор не ругается.... ?
А ведь еще где то надо стек положить.....[/uquote]
Да действительно это мое непонимание того что надо следить за заполнением памяти.
И да компилятор ничего не говорит если включен оптимизатор.
- Just_Fluffy
- Вымогатель припоя
- Сообщения: 532
- Зарегистрирован: Ср июн 29, 2022 16:25:45
Re: AVR studio в вопросах и ответах
Вообще странно, что при объявлении статических переменных объемом, превышающим доступное ОЗУ, компилятор не ругается.
Вот попробовала, пустой проект , седьмая студия, настройки проекта по умолчанию, оптимизация О1
Массив 1025 байт.
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 байта.
А потом, поскольку локальные переменные живут на стеке - начал заполняться этот временный массив данными, затирая верхнюю часть объявленного массива.
Так что за объемом памяти надо следить самостоятельно. И помнить, сколько ОЗУ в МК и сколько нужно программисту.
Вот попробовала, пустой проект , седьмая студия, настройки проекта по умолчанию, оптимизация О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)
{
}
}Data Memory Usage : 1025 bytes 100,1 % Full (Memory Overflow) dummy8a dummy8a 0
Добавлено after 9 minutes 28 seconds:
Попробовала при объявленном массиве в 1024 байта объявить в функции локальный массив в 100 байт и попробовать посмотреть на выполнение в отладчике студии. При оптимизации О0 и О1 проект собирается.
При выполнении:
Заполняется в ОЗУ массив 1024 байта.
А потом, поскольку локальные переменные живут на стеке - начал заполняться этот временный массив данными, затирая верхнюю часть объявленного массива.
Так что за объемом памяти надо следить самостоятельно. И помнить, сколько ОЗУ в МК и сколько нужно программисту.
Белая и Пушистая
-
veso74
- Поставщик валерьянки для Кота
- Сообщения: 1905
- Зарегистрирован: Сб май 05, 2012 20:24:52
- Откуда: KN34PC, Болгария
- Контактная информация:
Re: AVR studio в вопросах и ответах
Та же программа, ATmega8 через MiniCore:
PIC16F1829 в CCS с тем же кодом:
---
С уменьшением данных: MiniCore с уменьшенным стеком предупреждает, что могут быть конфликты, CCS в том же случае не позволяет: Not enough RAM for all variables
Код: Выделить всё
Скетч использует 98 байт (1%) памяти устройства. Всего доступно 7680 байт.
Глобальные переменные используют 1025 байт (100%) динамической памяти, оставляя -1 байт для локальных переменных. Максимум: 1024 байт.data section exceeds available space in board
Not enough memory; see https://support.arduino.cc/hc/en-us/articles/360013825179 for tips on reducing your footprint.
Ошибка компиляции для платы ATmega8.Код: Выделить всё
Compiling C:\Users\aaa\Desktop\blink\main on 25-äåê-22 at 23:49
*** Error 74 "C:\Users\aaa\Desktop\blink\main.c" Line 24(1,2): Not enough RAM for all variables
1 Errors, 0 Warnings.
Build Failed.С уменьшением данных: MiniCore с уменьшенным стеком предупреждает, что могут быть конфликты, CCS в том же случае не позволяет: Not enough RAM for all variables
Последний раз редактировалось veso74 Пн дек 26, 2022 01:14:04, всего редактировалось 1 раз.
- Just_Fluffy
- Вымогатель припоя
- Сообщения: 532
- Зарегистрирован: Ср июн 29, 2022 16:25:45
Re: AVR studio в вопросах и ответах
veso74, А если вот такой код для атмеги?
У меня в симуляторе он работает, но гадит в верхние адреса массива, поскольку стек накладывается на массив.....
Код: Выделить всё
#include <avr/io.h>
uint8_t arr[1024] = { 0x00 };
void xxx(uint16_t n){
uint8_t xarr[100];
for(uint8_t i = 0; i < 100; i++) xarr[n+i] = n & 0xFF;
for(uint8_t i = 0; i < 100; i++) arr[n+i] ^= xarr[i];
}
int main(void)
{
for (uint16_t i = 0; i<1024; i++) arr[i] = i & 0xFF;
while (1)
{
xxx(1);
xxx(2);
}
}Белая и Пушистая
-
veso74
- Поставщик валерьянки для Кота
- Сообщения: 1905
- Зарегистрирован: Сб май 05, 2012 20:24:52
- Откуда: KN34PC, Болгария
- Контактная информация:
Re: AVR studio в вопросах и ответах
Код: Выделить всё
Скетч использует 220 байт (2%) памяти устройства. Всего доступно 7680 байт.
Глобальные переменные используют 1024 байт (100%) динамической памяти, оставляя 0 байт для локальных переменных. Максимум: 1024 байт.
Недостаточно памяти, программа может работать нестабильно.- Just_Fluffy
- Вымогатель припоя
- Сообщения: 532
- Зарегистрирован: Ср июн 29, 2022 16:25:45
Re: AVR studio в вопросах и ответах
"Недостаточно памяти, программа может работать нестабильно" xDDD
тестовая программа сделает вид, что она работает. Реальная, активно работающая с массивом - загнется из-за срыва стека.
тестовая программа сделает вид, что она работает. Реальная, активно работающая с массивом - загнется из-за срыва стека.
Белая и Пушистая