ага, а как мне задать конкретный регистр и положить туда конкретные данные. мне ж их потом еще считывать..
просто как я понял я пишу тупо подряд. Смотрел файл там в начале еще какой то байт появился, который я не инициализировал. как то странно.
мне кажется легче прописать все в регистры, записать в МК а потом просто считать файл еепром и юзать..
Одержать сто побед в ста битвах — это не вершина воинского искусства. Повергнуть врага без сражения — вот вершина.
[uquote="ARV",url="/forum/viewtopic.php?p=4287872#p4287872"]если приинклюдили avr/eeprom.h, то EEMEM уже есть[/uquote]
Вы правы, есть.
Сбило то, что студия показывает :
Уважаемые, а как к проекту в Студии подкинуть файл с содержимым eeprom? Именно, чтобы в режиме отладки использовать его. Поиском не нашел тут подобного вопроса.
Помогите я запарился прям руки опускаются. Atmel Studio 7 не работают точки останова и все тут. Код простой на картинке. Почему не хочет останавливаться? Оптимизатор выключен.
Причем в мануале начиная с 66 страницы типа все должно работать
[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а дня оставлю другим на заметку. Действительно виноваты русские буквы в пути до проекта. Но прочитав о том что такое может быть я папку с проектом перенес так чтоб путь был латиницей и все равно брекпоинты НЕ работали !!! ПРОЕКТ НАДО СОЗДАВАТЬ ЗАНОВО ЧТОБ ОН СРАЗУ БЫЛ ПО ПУТИ ЛАТИНИЦЕЙ!!!!
Народ помогите разобраться, до фунции mein обьявлен массив buffer заполненный сразу. Останавливаю дебагер на первой строчке, никаких изменений buffer не произвожу еще. Но дебагер показывает какуюто чушь в этом массиве buffer, а не то что заказывал. Элемент массива с индексом 0 должен быть 0xFF а дебагер кажет 0х12 и тд. Что не так?
Уперся в непонимание следующего , до функции main объявлены пару массивов один короткий mychar и один большой MYbuffer на 1024 байта они сразу заполнены
тут привел кусок большого массива чтоб покороче сообщение было.
Массив Mychar попадает в ОЗУ читается начиная с адреса 0x0060 и обращение к массиву mychar[3] возвращает 0x46 что соответсвует букве F как и положено.
А вот большой массив MYbuffer не понимаю куда он попадает , и почему MYbuffer[0] и MYbuffer[1] возвращает чтото начина с адреса 0x0000 из памяти PROG FLASH,
а там лежит чтото другое тоесть
MYbuffer[0] должен возвращать 0xFF а прилетает 0х12
MYbuffer[1] должен возвращать 0x01 а прилетает 0хс0
Atmega8, массив будет постоянно меняться , мне бы вообще понять почему рядом обьявленные массивы попадают в разные места . я не могу достучаться до большого массива, при компилировании ошибок нет.
vitaminkvl, Вообще странно... Атмега 8 - это всего 1024 байта ОЗУ.
А у вас туда помещается и массив в 1024 байта, и рядом объявленные массивы... И компилятор не ругается.... ?
А ведь еще где то надо стек положить.....
Оптимизатор есть, попытался уменьшить объем памяти (и ему это удалось ... по-своему). Выключите, или с помощью volatile к данным.
Но наверняка будет другая проблема: данные не собираются в памяти . А потом вперед, к другим МК.
Или оптимизировать данные - напр. с "есть повторяющиеся данные, почему записаны в нескольких местах одинаковые?".
[uquote="Just_Fluffy",url="/forum/viewtopic.php?p=4342523#p4342523"]vitaminkvl, Вообще странно... Атмега 8 - это всего 1024 байта ОЗУ.
А у вас туда помещается и массив в 1024 байта, и рядом объявленные массивы... И компилятор не ругается.... ?
А ведь еще где то надо стек положить.....[/uquote]
Да действительно это мое непонимание того что надо следить за заполнением памяти.
И да компилятор ничего не говорит если включен оптимизатор.
Вообще странно, что при объявлении статических переменных объемом, превышающим доступное ОЗУ, компилятор не ругается.
Вот попробовала, пустой проект , седьмая студия, настройки проекта по умолчанию, оптимизация О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 байта.
А потом, поскольку локальные переменные живут на стеке - начал заполняться этот временный массив данными, затирая верхнюю часть объявленного массива.
Так что за объемом памяти надо следить самостоятельно. И помнить, сколько ОЗУ в МК и сколько нужно программисту.