WinAvr в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
a_skr
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

Re: WinAvr в вопросах и ответах

Сообщение a_skr »

можно вызвать одну функцию. сама запишет (при необходимости) 5 символов:
char src[] = "12345";
eeprom_update_block ((void*)src, (void *)0, 5);
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: WinAvr в вопросах и ответах

Сообщение vitalik_1984 »

a_skr писал(а):можно вызвать одну функцию. сама запишет (при необходимости) 5 символов:
char src[] = "12345";
eeprom_update_block ((void*)src, (void *)0, 5);

А как программа узнает где эта переменная должна находиться?
Разве спецификатор EEMEM не нужно использовать?
Если подсказывать, то полностью.
a_skr
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

Re: WinAvr в вопросах и ответах

Сообщение a_skr »

а я не заводил переменной EEMEM, а указал явный адрес в EEPROM - ноль (второй параметр функции eeprom_update_block) и копирую туда строку src из ОЗУ. можно завести и переменную в EEPROM. вопрос был "как записать в еепром строку длиной 5 символов".
alex1126
Вымогатель припоя
Сообщения: 567
Зарегистрирован: Ср дек 19, 2012 12:16:22

Re: WinAvr в вопросах и ответах

Сообщение alex1126 »

Ромыч писал(а):как записать в еепром строку длинной в 5 символов

В яндекс вбиваешь вопрос свой и получишь что то типа такого:
http://samou4ka.net/page/chtenie-i-zapi ... m-v-winavr
Аватара пользователя
Ромыч
Прорезались зубы
Сообщения: 210
Зарегистрирован: Ср янв 06, 2010 22:02:25
Откуда: Уфа сити
Контактная информация:

Re: WinAvr в вопросах и ответах

Сообщение Ромыч »

я пока так и сделал. спасибо. а теперь вопрос реально нубасский :) есть, скажем, массив[20] с полезными 8 ячейками. чтобы добавить девятую надо искать первый ноль в массиве (если полезное значение в любом случае !=0)? эх... работала бы отладка студио-протеус с бреками по си, а не по ассемблеру.....
Что в цивилизованном мире называют "устаревшие технологии", в России зовется "технологии, проверенные временем"
a_skr
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

Re: WinAvr в вопросах и ответах

Сообщение a_skr »

отладка по исходному коду работает:
Изображение
только надо учесть оптимизацию.
p.s. использовать не hex, а elf, например.
Аватара пользователя
Ромыч
Прорезались зубы
Сообщения: 210
Зарегистрирован: Ср янв 06, 2010 22:02:25
Откуда: Уфа сити
Контактная информация:

Re: WinAvr в вопросах и ответах

Сообщение Ромыч »

оптимизация отключена, выбрать свой *.с не получается, для трассировки доступна только delay.c
на этом шаге у меня и есть заминка... прошивка - .елф
СпойлерИзображение
Последний раз редактировалось Gudd-Head Ср май 15, 2013 14:23:59, всего редактировалось 1 раз.
Причина: Нарушение п.2.6 Правил Форума
Что в цивилизованном мире называют "устаревшие технологии", в России зовется "технологии, проверенные временем"
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: WinAvr в вопросах и ответах

Сообщение vitalik_1984 »

a_skr писал(а):а я не заводил переменной EEMEM, а указал явный адрес в EEPROM - ноль (второй параметр функции eeprom_update_block) и копирую туда строку src из ОЗУ. можно завести и переменную в EEPROM. вопрос был "как записать в еепром строку длиной 5 символов".

Хорошее дело, а потом путаться что по какому адресу находится, лучше бы реально полезный пример :dont_know: Я то понял как можно, но не все так понимают.
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: WinAvr в вопросах и ответах

Сообщение ibiza11 »

vitalik_1984, а Ваши два сообщения прямо блещут полезностью? по мне так a_skr помог больше, чем Вы.
Ставим плюсы: )
Аватара пользователя
Ромыч
Прорезались зубы
Сообщения: 210
Зарегистрирован: Ср янв 06, 2010 22:02:25
Откуда: Уфа сити
Контактная информация:

Re: WinAvr в вопросах и ответах

Сообщение Ромыч »

ребят, по моему вопросу. Почему реально он лезет за исходником в програм файлс? прошелся по этому .елф хексом - это путь к тулчейну студии. в настройках у нее такой же стоит. студия шестая кстати..
Что в цивилизованном мире называют "устаревшие технологии", в России зовется "технологии, проверенные временем"
alex1126
Вымогатель припоя
Сообщения: 567
Зарегистрирован: Ср дек 19, 2012 12:16:22

Re: WinAvr в вопросах и ответах

Сообщение alex1126 »

Ромыч писал(а):есть, скажем, массив[20] с полезными 8 ячейками. чтобы добавить девятую надо искать первый ноль в массиве (если полезное значение в любом случае !=0)?

ну да, а как иначе? Можно держать массив в памяти и по нему смотреть где ноль. или при очистке значения (установке его в ноль) запоминаешь где-нить номер ячейки. И при записи просто пишешь в этот номер. Но тут надо при записи тогда искать новый ноль, если у тебя может сразу следовать новая запись.
Ну или если в программировании нормально секешь то организуй буфер FIFO на базе связного списка с указателями и ты всегда будешь знать где у тебя ноль и есть ли ще вообще пустые ячейки.
Аватара пользователя
uni
Встал на лапы
Сообщения: 137
Зарегистрирован: Пт дек 07, 2007 11:17:40
Откуда: г. Екатеринбург
Контактная информация:

Re: WinAvr в вопросах и ответах

Сообщение uni »

Файл dsn должен находиться в корне C проекта. Это один из самых часто задаваемых вопросов по Proteus.
Россия навсегда!
Аватара пользователя
Ромыч
Прорезались зубы
Сообщения: 210
Зарегистрирован: Ср янв 06, 2010 22:02:25
Откуда: Уфа сити
Контактная информация:

Re: WinAvr в вопросах и ответах

Сообщение Ромыч »

скажите, а реально программно понизить частоту процессора? скажем, в простое в каком то состоянии ожидания понизить, потом по необходимости повысить, когда применение вачдога невозможно
Что в цивилизованном мире называют "устаревшие технологии", в России зовется "технологии, проверенные временем"
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: WinAvr в вопросах и ответах

Сообщение ibiza11 »

в некоторых AVR есть, в некоторых нет. На память помню единственный с такой возможностью: ATtiny2313. Надо смотреть даташит на конкретный контроллер в разделе Clock System.
Ставим плюсы: )
alex1126
Вымогатель припоя
Сообщения: 567
Зарегистрирован: Ср дек 19, 2012 12:16:22

Re: WinAvr в вопросах и ответах

Сообщение alex1126 »

Пишу прошивку для ATMega88PA-AU. ВинАвр такого не принимает, поэтому указал MCU = atmega88pa, но при этом он ругается на таймеры:

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

main.c:78: error: 'TCCR0' undeclared (first use in this function)
main.c:78: error: (Each undeclared identifier is reported only once
main.c:78: error: for each function it appears in.)
main.c:79: error: 'TIMSK' undeclared (first use in this function)
main.c: In function '__vector_16':
main.c:91: error: 'TCCR0' undeclared (first use in this function)
make.exe: *** [main.o] Error 1

какой файл надо заинключить или что сделать?

До этого писал для атмеги16, подключал только

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

#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>

и все работало. Тут не проходит такой фокус.
Аватара пользователя
Ромыч
Прорезались зубы
Сообщения: 210
Зарегистрирован: Ср янв 06, 2010 22:02:25
Откуда: Уфа сити
Контактная информация:

Re: WinAvr в вопросах и ответах

Сообщение Ромыч »

а если просто atmega88 прпробовать? обычно всякие PU, L и прочие окончания не ставятся
Что в цивилизованном мире называют "устаревшие технологии", в России зовется "технологии, проверенные временем"
alex1126
Вымогатель припоя
Сообщения: 567
Зарегистрирован: Ср дек 19, 2012 12:16:22

Re: WinAvr в вопросах и ответах

Сообщение alex1126 »

пробовал. Изначально так и было, пока до таймеров не дошел.
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: WinAvr в вопросах и ответах

Сообщение vitalik_1984 »

Ромыч писал(а):а если просто atmega88 попробовать? обычно всякие PU, L и прочие окончания не ставятся

Что пробовать то Есть файл - костыль io.h в нем конкретно для каждого мк прописан заголовочный файл, который подходит для каждого мк.
Далее если с io.h не происходит ошибок, значит соответствующий заголовок atmegaxx.h для мк загружается.
Так же это значит,что некоторые регистры в мк 88 отличаются от того, что пытаются использовать в программе.
Вот документы, в них написано, что все обновления и модификации сделаны с учетом старых регистров и таким образом имеют обратную совместимость.
AVR512: Migration from ATmega48/88/168 to ATmega48P/88P/168P
AVR528: Migrating from ATmega48P/88P/168P to ATmega48PA/88PA/168PA
При этом еще нужно нормально в проекте указывать камень, иначе не будет правильно работать данный костыль.
Далее берем регистр, которого якобы нет в камне TCCR0 находим в даташите TCCR0B Опа не хватает буквы.
Смотрим по коду какой бит меняется и заменяем обращение к неопределенному регистру на нормальное.

Либо тогда уже если хочется обращаться как к двухбайтному регистру, тогда прописываем в заголовочном адреса первых байт этих регистров.

PS есть в обиходе и 88P и 88PA
Вот копия строки вызова компилятора из Студии
avr-gcc -mmcu=atmega88pa -Wall -gdwarf-2 -std=gnu99 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT 3123.o -MF dep/3123.o.d -c ../3123.c
alex1126
Вымогатель припоя
Сообщения: 567
Зарегистрирован: Ср дек 19, 2012 12:16:22

Re: WinAvr в вопросах и ответах

Сообщение alex1126 »

А io.h я так понимаю автоматом подгружается? Заменил названия регистров, все зашуршало....
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: WinAvr в вопросах и ответах

Сообщение vitalik_1984 »

Нет, io.h вы записываете, а из него автоматом в соответствии с ключами компиляции для конкретного Мк препроцессор подключает нужные заголовочные файлы.
Ответить

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