AVR studio в вопросах и ответах
-
veso74
- Поставщик валерьянки для Кота
- Сообщения: 1905
- Зарегистрирован: Сб май 05, 2012 20:24:52
- Откуда: KN34PC, Болгария
- Контактная информация:
Re: AVR studio в вопросах и ответах
Красная надпись
. Предупреждение - на свое место: "предупредил, но программист решает".
- vitaminkvl
- Нашел транзистор. Понюхал.
- Сообщения: 169
- Зарегистрирован: Сб фев 20, 2010 17:33:02
Re: AVR studio в вопросах и ответах
Почему нельзя занять всю память ??? Почему конец объявленного массива заполнен фигней какойто ? При этом нет никаких ошибок!


- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: AVR studio в вопросах и ответах
когда скомпилированная прошивка больше размера flash, вы тоже не получаете никаких сообщений об ошибках. надо просто пользоваться своей головой: если написано, что 100% оперативной памяти занято под статические переменные, то как что-то может быть работоспособным?!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- vitaminkvl
- Нашел транзистор. Понюхал.
- Сообщения: 169
- Зарегистрирован: Сб фев 20, 2010 17:33:02
Re: AVR studio в вопросах и ответах
[uquote="Just_Fluffy",url="/forum/viewtopic.php?p=4343091#p4343091"]А потом, поскольку локальные переменные живут на стеке - начал заполняться этот временный массив данными, затирая верхнюю часть объявленного массива.
Так что за объемом памяти надо следить самостоятельно. И помнить, сколько ОЗУ в МК и сколько нужно программисту.[/uquote]
Ну вот выше пример на картинке в камне 1024байта я хочу их всех, локальных переменных нет, кто затер конец массива ??
Так что за объемом памяти надо следить самостоятельно. И помнить, сколько ОЗУ в МК и сколько нужно программисту.[/uquote]
Ну вот выше пример на картинке в камне 1024байта я хочу их всех, локальных переменных нет, кто затер конец массива ??
-
veso74
- Поставщик валерьянки для Кота
- Сообщения: 1905
- Зарегистрирован: Сб май 05, 2012 20:24:52
- Откуда: KN34PC, Болгария
- Контактная информация:
Re: AVR studio в вопросах и ответах
vitaminkvl, разобраться с работой МК. Оперативная память предназначена не только для распределения пользовательских данных. Уже упоминали об этом несколько раз.
ATmega8:
ATmega8:
Оптимизируете. Либо меняете МК (крайнее решение). Глядя на приложение: для управления OLED, с "маленькими" МК просто не использовать кадровый буфер.EN: During interrupts and subroutine calls, the return address Program Counter (PC) is stored on the Stack. The Stack is effectively allocated in the general data SRAM, and consequently the Stack size is only limited by the total SRAM size and the usage of the SRAM.
РУ: Во время прерываний и вызовов подпрограмм программный счетчик адреса возврата (PC)) сохраняется в стеке. Стек эффективно размещается в SRAM общих данных, и, следовательно, размер стека ограничен только общим размером SRAM и использованием SRAM.
- vitaminkvl
- Нашел транзистор. Понюхал.
- Сообщения: 169
- Зарегистрирован: Сб фев 20, 2010 17:33:02
Re: AVR studio в вопросах и ответах
[uquote="veso74",url="/forum/viewtopic.php?p=4343360#p4343360"]Глядя на приложение: для управления OLED, с "маленькими" МК просто не использовать кадровый буфер.[/uquote]
Да вопрос появился в рамках изучения дисплейчика ssd1306 , наткнулся наэтот пример
там в файле 1306.h как раз задается этот буфер. Я закатал пример в atmega8 и экранчик отобразил мне логотип из примера, но любые другие манипуляции в коде приводили к ошибкам. Теперь стало понятно что любые переменные некуда пихать так как все занято. Может кто подскажет библилтеку на С (НЕ С++) для работы с этим экраном по I2C.
Да вопрос появился в рамках изучения дисплейчика ssd1306 , наткнулся наэтот пример
там в файле 1306.h как раз задается этот буфер. Я закатал пример в atmega8 и экранчик отобразил мне логотип из примера, но любые другие манипуляции в коде приводили к ошибкам. Теперь стало понятно что любые переменные некуда пихать так как все занято. Может кто подскажет библилтеку на С (НЕ С++) для работы с этим экраном по I2C.
- Just_Fluffy
- Вымогатель припоя
- Сообщения: 532
- Зарегистрирован: Ср июн 29, 2022 16:25:45
Re: AVR studio в вопросах и ответах
vitaminkvl, Почитайте любое русскоязычное описание принципа работы АВРок... Белов, Евстифеев и т.д.
У АВР стек расположен в ОЗУ (за исключением некоторых мелких тинек - там он аппаратный и маленький).
При инициализации необходимо указатель стека поставить на самую последнюю ячейку ОЗУ.
Потом, когда программа, например, хочет что то сохранить в стеке - она сохраняет это по адресу, записанному в указателе стека, а указатель уменьшает.
При переходе к ассемблерной подпрограмме МК сам в стек сохраняет 2 байта исходного адреса и потом бежит к подпрограмме. При возврате из подпрограммы - МК восстанавливает указатель адреса, читая его из стека. При обработке прерываний чуть посложнее - там в стек, кроме адреса возврата, нужно еще сохранить регистры процессора.
В случае сишных функций еще интереснее. Там в стеке сохраняется не только адрес возврата из функции, а еще и параметры, передаваемые в функцию, если они не помещаются в регистрах, и в стеке же организуются все локальные переменные функции....
Касательно олед-экранчика - у него память организована страницами. их 8 шт для экраничка 128*64.
Организуйте у себя в ОЗУ буфер на 1-2 страницы, рисуйте в буфере и выводите его в нужное место.
У АВР стек расположен в ОЗУ (за исключением некоторых мелких тинек - там он аппаратный и маленький).
При инициализации необходимо указатель стека поставить на самую последнюю ячейку ОЗУ.
Потом, когда программа, например, хочет что то сохранить в стеке - она сохраняет это по адресу, записанному в указателе стека, а указатель уменьшает.
При переходе к ассемблерной подпрограмме МК сам в стек сохраняет 2 байта исходного адреса и потом бежит к подпрограмме. При возврате из подпрограммы - МК восстанавливает указатель адреса, читая его из стека. При обработке прерываний чуть посложнее - там в стек, кроме адреса возврата, нужно еще сохранить регистры процессора.
В случае сишных функций еще интереснее. Там в стеке сохраняется не только адрес возврата из функции, а еще и параметры, передаваемые в функцию, если они не помещаются в регистрах, и в стеке же организуются все локальные переменные функции....
Касательно олед-экранчика - у него память организована страницами. их 8 шт для экраничка 128*64.
Организуйте у себя в ОЗУ буфер на 1-2 страницы, рисуйте в буфере и выводите его в нужное место.
Белая и Пушистая
Re: AVR studio в вопросах и ответах
Добрый вечер! Данные с датчика выдаются в формате IEEE754 (4 байта). Как преобразовать это значение во float, чтобы вывести на OLED экранчик? Спасибо!
Примечание: микроконтроллер Mega328, Atmel Studio...
Примечание2: сам спросил, сам ответил. Ничего преобразовывать не надо - всё украдено преобразовано до нас
Примечание: микроконтроллер Mega328, Atmel Studio...
Примечание2: сам спросил, сам ответил. Ничего преобразовывать не надо - всё украдено преобразовано до нас
-
ZyaK
- Потрогал лапой паяльник
- Сообщения: 361
- Зарегистрирован: Сб май 03, 2014 20:01:51
- Откуда: Ижевск
Re: AVR studio в вопросах и ответах
Доброго всем времени суток, подскажите пожалуйста пишу прошивку для котла на меге16-й,
вроде бы всё работает, меню отображается, параметры меняются, ацп опрашивается...
Сейчас добрался до УАРТа, разрешаю прерывания и всё, камень улетает в циклический перезагруз, всю голову уже сломал, не понимаю чего ему не нравится, отключаю прерывания - всё работает как должно. ткните пожалуйста носом что не так
файлы прилагаю спасибо
вроде бы всё работает, меню отображается, параметры меняются, ацп опрашивается...
Сейчас добрался до УАРТа, разрешаю прерывания и всё, камень улетает в циклический перезагруз, всю голову уже сломал, не понимаю чего ему не нравится, отключаю прерывания - всё работает как должно. ткните пожалуйста носом что не так
файлы прилагаю спасибо
- Вложения
-
- main_init.h
- (1.5 КБ) 141 скачивание
-
- main.h
- (14.43 КБ) 142 скачивания
-
- main.c
- (1.5 КБ) 149 скачиваний
Электроника -очень точная наука, бубен необходимо держать в левой руке!!!
-
С.Н.
- Потрогал лапой паяльник
- Сообщения: 307
- Зарегистрирован: Пн окт 26, 2020 08:37:51
- Откуда: г.Волгоград
Re: AVR studio в вопросах и ответах
[uquote="ZyaK",url="/forum/viewtopic.php?p=4354785#p4354785"]...разрешаю прерывания и всё, камень улетает в циклический перезагруз[/uquote]
Как вариант - в прерывании ISR(USART_RXC_vect) регистр принятых данных то прочитайте, иначе если прилетит что, то это прерывание будет бесконечным. Правда не понятно, ведь Вы получаете перегруз не принимая данных по UART.
Добавлю:
Еще один трабл - использование прерывания пустового буфера передачи 1<<UDRIE. Прерывание то Вы включаете, а вот вектора то нет в программе.
Это прерывание надо правильно использовать - если отправить в UDR байт для отправки, то сразу возникнет это прерывание, в котором надо уже следующий байт пихать ибо регистр передающий двухэтажный и данные "проваливаются" в буфер передачи и регистр UDR пуст! Я, например, его использую, но у меня буферизированная приема-передача.
Как вариант - в прерывании ISR(USART_RXC_vect) регистр принятых данных то прочитайте, иначе если прилетит что, то это прерывание будет бесконечным. Правда не понятно, ведь Вы получаете перегруз не принимая данных по UART.
Добавлю:
Еще один трабл - использование прерывания пустового буфера передачи 1<<UDRIE. Прерывание то Вы включаете, а вот вектора то нет в программе.
Это прерывание надо правильно использовать - если отправить в UDR байт для отправки, то сразу возникнет это прерывание, в котором надо уже следующий байт пихать ибо регистр передающий двухэтажный и данные "проваливаются" в буфер передачи и регистр UDR пуст! Я, например, его использую, но у меня буферизированная приема-передача.
Последний раз редактировалось С.Н. Вс янв 15, 2023 19:40:33, всего редактировалось 1 раз.
ФУОЗ на платформе Ардуино: https://radiokot.ru/forum/viewtopic.php ... 6#p4366626
ВК - "ФУОЗ на микроконтроллере Atmega328P (МПСЗ)"
ВК - "ФУОЗ на микроконтроллере Atmega328P (МПСЗ)"
-
ZyaK
- Потрогал лапой паяльник
- Сообщения: 361
- Зарегистрирован: Сб май 03, 2014 20:01:51
- Откуда: Ижевск
Re: AVR studio в вопросах и ответах
[uquote="С.Н.",url="/forum/viewtopic.php?p=4354857#p4354857"][uquote="ZyaK",url="/forum/viewtopic.php?p=4354785#p4354785"]...разрешаю прерывания и всё, камень улетает в циклический перезагруз[/uquote]
Как вариант - в прерывании ISR(USART_RXC_vect) регистр принятых данных то прочитайте, иначе если прилетит что, то это прерывание будет бесконечным. Правда не понятно, ведь Вы получаете перегруз не принимая данных по UART.[/uquote]
пробовал - ничего не меняется, как только раскоментирую разрешение прерываний - сразу циклический ребут
Как вариант - в прерывании ISR(USART_RXC_vect) регистр принятых данных то прочитайте, иначе если прилетит что, то это прерывание будет бесконечным. Правда не понятно, ведь Вы получаете перегруз не принимая данных по UART.[/uquote]
пробовал - ничего не меняется, как только раскоментирую разрешение прерываний - сразу циклический ребут
Электроника -очень точная наука, бубен необходимо держать в левой руке!!!
-
С.Н.
- Потрогал лапой паяльник
- Сообщения: 307
- Зарегистрирован: Пн окт 26, 2020 08:37:51
- Откуда: г.Волгоград
Re: AVR studio в вопросах и ответах
Добавил Вам причину.
ФУОЗ на платформе Ардуино: https://radiokot.ru/forum/viewtopic.php ... 6#p4366626
ВК - "ФУОЗ на микроконтроллере Atmega328P (МПСЗ)"
ВК - "ФУОЗ на микроконтроллере Atmega328P (МПСЗ)"
-
ZyaK
- Потрогал лапой паяльник
- Сообщения: 361
- Зарегистрирован: Сб май 03, 2014 20:01:51
- Откуда: Ижевск
Re: AVR studio в вопросах и ответах
[uquote="С.Н.",url="/forum/viewtopic.php?p=4354891#p4354891"]Добавил Вам причину.[/uquote]
Убрал полностью уарт, проблема не в нем, мне кажется дело в библиотеке AXLIB, использую её для работы с дисплеем.
даже ацп убрал, всё равно при включении прерываний бесконечный ребут.
может есть какая то еще не особо тяжелая библиотека для дисплея 16*2?
Убрал полностью уарт, проблема не в нем, мне кажется дело в библиотеке AXLIB, использую её для работы с дисплеем.
даже ацп убрал, всё равно при включении прерываний бесконечный ребут.
может есть какая то еще не особо тяжелая библиотека для дисплея 16*2?
Электроника -очень точная наука, бубен необходимо держать в левой руке!!!
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: AVR studio в вопросах и ответах
внимательно смотрите, какие прерывания в настройках периферии вы включили, но не сделали для них ISR-обработчик. самая вероятная причина ребута - это наличие разрешенного прерывания без соответствующего обработчика.
P.S. кто вас учил в h-файле код размещать?
P.S. кто вас учил в h-файле код размещать?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
-
ZyaK
- Потрогал лапой паяльник
- Сообщения: 361
- Зарегистрирован: Сб май 03, 2014 20:01:51
- Откуда: Ижевск
Re: AVR studio в вопросах и ответах
[uquote="ARV",url="/forum/viewtopic.php?p=4354930#p4354930"]P.S. кто вас учил в h-файле код размещать?[/uquote]
да быстро накидал пока время было, красотой буду потом заниматься, если оживёт как положено.
Поищу где ещё какие прерывания, но вроде бы ничего не включал.
да быстро накидал пока время было, красотой буду потом заниматься, если оживёт как положено.
Поищу где ещё какие прерывания, но вроде бы ничего не включал.
Электроника -очень точная наука, бубен необходимо держать в левой руке!!!
Re: AVR studio в вопросах и ответах
Прошу у знающих совета. Установил Atmel Studio 7.0, написал на С "Hello World" и, и все... Такая вот ошибка
Severity
Code Description Project File Line
Error recipe for target '8.elf' failed 8 D:\AVR_7\8\8\Debug\Makefile 106
Подскажите по вкладке "Toolchain", как там должно быть. Не собирается makefile.
Severity
Code Description Project File Line
Error recipe for target '8.elf' failed 8 D:\AVR_7\8\8\Debug\Makefile 106
Подскажите по вкладке "Toolchain", как там должно быть. Не собирается makefile.
Re: AVR studio в вопросах и ответах
Доброго, коллеги.
Жизнь вынудила начать осваивать перенавороченное 808-е семейство, и соответственно - неудобоваримую AStudio7.
Помимо прочих мучений, не могу найти где в ея редакторе устанавливается ширина табуляции.
Кто поможет добрым советом? ))
Жизнь вынудила начать осваивать перенавороченное 808-е семейство, и соответственно - неудобоваримую AStudio7.
Помимо прочих мучений, не могу найти где в ея редакторе устанавливается ширина табуляции.
Кто поможет добрым советом? ))
- Just_Fluffy
- Вымогатель припоя
- Сообщения: 532
- Зарегистрирован: Ср июн 29, 2022 16:25:45
Re: AVR studio в вопросах и ответах
В Options

- Вложения
-
- tabsi.jpg
- (31.92 КБ) 580 скачиваний
Белая и Пушистая
Re: AVR studio в вопросах и ответах
Спасибо, матушка. )) Кто же мог представить, что они опции редактора упрячут в Debug. )))
А может, вы скажете и как присвоить имена регистрам в отладочном окне симулятора? Например, в старой доброй 4,19: Я и волшебное слово знаю - муррмяу... )))
А может, вы скажете и как присвоить имена регистрам в отладочном окне симулятора? Например, в старой доброй 4,19: Я и волшебное слово знаю - муррмяу... )))
- Just_Fluffy
- Вымогатель припоя
- Сообщения: 532
- Зарегистрирован: Ср июн 29, 2022 16:25:45
Re: AVR studio в вопросах и ответах
Леоныч, Да нет, не в Debug.... оно в отдельном логичном блоке - Text editor..
По именам регистров не скажу.... Отладка асма - это давно было... Очень давно... На сях как то проще.....
По именам регистров не скажу.... Отладка асма - это давно было... Очень давно... На сях как то проще.....
Белая и Пушистая