Обсуждаем контроллеры компании Atmel.
Ответить

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

Чт мар 29, 2018 11:05:15

значит так, показывайте всё, что есть в удобном для просмотра на форуме формате: схему протеуса, исходники в том виде, как тестируете в протеусе, настройки МК в протеусе и настройки проекта в Студии или чем вы там собираете. без этого дальнейшее гадание на кофейной гуще считаю пустой тратой времени

Добавлено after 1 minute 57 seconds:
хотя нет, не выкладывайте :) 32 Гц чем вас не устраивает, вы сколько хотите? вы учли, что у вас OC1A дергается в 2 раза реже, ведь при каждом совпадении он МЕНЯЕТ своё состояние :)))

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

Чт мар 29, 2018 13:00:47

С кварцем разобрался Это что то с математикой в протеусе.
я уже и 8 версию поставил все ровно проблема не ушла
По расчетам должно быть так 16000000/1024/250 = 62,5Гц
а фактически вот так 16000000/1024/124 = 62,5Гц метод подбора сработал

32 Гц чем вас не устраивает

В дальнейшем на каждое нажатие кнопки частота будит меняться на 62,5Гц в описании я выкладывал
За подсказку огромное спасибо по настройки кварца.

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

Чт мар 29, 2018 13:53:13

bango писал(а):По расчетам должно быть так 16000000/1024/250 = 62,5Гц
а фактически вот так 16000000/1024/124 = 62,5Гц метод подбора сработал
еще раз повторяю:
вы настроили 16000000/1024/250=62,5 Гц. и именно с этой частотой у вас возникают прерывания (или происходит совпадение с OCR1A). именно в этот момент происходит изменение уровня на пине на противоположный, т.е. фронты сигнала следут с частотой 62,5 Гц, а период этого сигнала, естественно, в 2 раза ниже, т.к. в периоде 2 фронта. именно поэтому вам пришлось в 2 раза уменьшить OCR1A, чтобы полчить ваши 62,5 Гц

никакого подбора, просто внимательно считать надо. и когда я писал "32 чем не устраивают", я намекал на то, что вы получили ровно то, что настроили :)

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

Чт мар 29, 2018 14:27:48

в описании написано вот так (Результирующий сигнал имеет частоту 62.5 Гц)
_
| |_| Я в этом пределе считал клетки и их умножал на время.

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

Чт мар 29, 2018 14:39:08

я вас не понимаю. чтобы получить меандр 62,5 Гц вашим методом надо 16 МГц при предделлителе 1024 дополнительно при помощи OCR1A поделить на 125. это не гадание, а расчет.

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

Чт мар 29, 2018 15:27:09

Мне самому очень трудно объяснить, а на пальцах показать не получается (самое главное что частота нужная получилась) Я как ЗАМАТЕРЕЮ в программировании вот тогда я всем все объясню ЭТО шутка.

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

Вт июл 03, 2018 13:42:23

Товарищи! Подскажите... Понемногу разбираюсь с написанием прог для МК, а конкретно для AT2313 добрался до работы с экранчиком 16x2 по I2C
Почитав разных материалов понял что без доп.библиотеки будет тяжело, нашел на просторах инета http://davidegironi.blogspot.com/2013/0 ... based.html

в попытках приспособить данную библиотеку и код примера в atmel studio 7
столкнулся с ошибками вида

error: undefined reference to `uart_init(unsigned int)'
error: undefined reference to `uart_puts(char const*)'
error: undefined reference to `lcd_init(unsigned char)'
error: undefined reference to `lcd_home()'
error: undefined reference to `lcd_led(unsigned char)'
и т.д.

я так понимаю типа не определены процедуры/функции с этими именами: uart_init, uart_puts и т.д.
но по факту они определены в файле uart.h, файл этот подключен. В солюшн эксплорере все эти файлы обозначенные в #include добавил по ПКМ->Add existing item. Что ему проклятому нужно?

main.cpp


uart.h


Ваще есть ещё какие-нибудь IDE с дебагером для написания программ на Atmel-овских МК, Atmel-studio как-то излишне заморочена на мой взгляд, инсталятор ставит тьму всякой-всячины.
Последний раз редактировалось karaseg Вт июл 03, 2018 20:13:55, всего редактировалось 1 раз.

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

Вт июл 03, 2018 17:12:30

Вообще-то такие длинные тексты лучше брать под спойлер (это все появляется, если нажать кнопик "Редактор").

Ну, и по делу - нужно сложить ту библиотеку в папку проекта, прямо с ее папками, а потом включать в проект посредством ПКМ не *.h, а *.c. Нужные *.h компилятор найдет сам, там же пути прописаны - #include "uart/uart.h" означает, что компилятор должен взять uart.h из подпапки uart в папке проекта. А вот *.с компилятор сам не найдет, их надо включить в проект.

Atmel-studio как-то излишне заморочена на мой взгляд, инсталятор ставит тьму всякой-всячины.
Народ, если нет особых требований, типа поддержки ATXmega, обычно, пользуется АВР Студией 4.19, она, пожалуй, самая стабильная и хорошо работающая. Более поздние Студии, да, излишне тяжелые и тормозные, особенно на машинках постарше. А Студия 4.19 летает на любых машинках, начиная с 3-го Пентиума.

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

Ср июл 04, 2018 11:07:30

В AVR Studio 4, в Tools-Customise-Tools хотел добавить пунктик вызов avrdude чтобы вливать прошивку в МК через программатор USBASP
в Atmel Studio 7 была возможность указать "макросы" вместо пути и имени файла $(TargetDir)$(TargetName)
в поле arguments: "-c usbasp -p t2313 -v -U flash:w:$(TargetDir)$(TargetName).hex:i"
В 4 версии что-то не пойму, нельзя имя "прошивки" передавать во внешнюю программу?

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

Ср июл 04, 2018 13:13:58

В AVR Studio 4, в Tools-Customise-Tools хотел добавить пунктик вызов avrdude чтобы вливать прошивку в МК через программатор USBASP
А зачем? ИМХО, лучший вариант для USBASP - прорамма AVRDUDEPROG 3.3. Первый раз собрал проект, запустил AVRDUDEPROG, нашел и открыл в ней хекс-файл, записал, попробовал, свернул AVRDUDEPROG в трей, и все, правь проект дальше. Сделал новую сборку, одним кликом поднял из трея AVRDUDEPROG, вторым прошил новый вариант, и вперед!..

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

Ср июл 04, 2018 15:22:58

Здравствуйте
Как в памяти программ (FLASH) хранить массив указателей?
на
Код:
const unsigned char *Main_strings[13]PROGMEM={strng1,strng2,strng3,strng4};


ругается :"variable 'Main_strings' must be const in order to be put into read-only section by means of '__attribute__((progmem))'"

кстати, строки strng1,strng2,strng3,strng4 тоже лежат во флеше

Добавлено after 1 hour 3 minutes 12 seconds:
Проблему решила

строки во флеше (.c) у меня объявляются так:
Код:
const unsigned char strng1[]PROGMEM ={"строка1\0"};                           
const unsigned char strng2[]PROGMEM ={"строка2\0"};                  
const unsigned char strng3[]PROGMEM ={"строка3\0"};            
const unsigned char strng4[]PROGMEM ={"строка4\0"};

указатель на эти строки в (.c)
Код:
const unsigned char * const Main_strings[]PROGMEM={strng1,strng2,strng3,strng4};


в (.h) файле они объявляются так :
Код:
extern const unsigned char strng1[];
extern const unsigned char strng2[];
extern const unsigned char strng3[];
extern const unsigned char strng4[];
extern const unsigned char * const Main_Menu_strings[];



а обращаться к ним в программе можно так:

Код:
for(uint8_t i=0;i<13;i++){
strings[i]=(const unsigned char * const)pgm_read_byte(&(Main_strings[i]));
}


Ну а вдруг кому поможет

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

Ср июл 04, 2018 17:52:29

Я делал проще.

Код:
char stnames[][16] PROGMEM =
{
        "              ",
        "  Тенгри FM   ",       // 100.50
        "  Радио Текс  ",       // 101.20
        "Русское радио ",       // 102.80
        "  Love Radio  ",       // 104.80
        "   Радио NS   ",       // 105.60
        "  Авторадио   ",       // 106.30
        "  Что-то FM   ",       // 106.70
        "  Наше радио  ",       // 107.00
        "   Дала FM    "        // 107.70

};


В качестве указателей на строку используются stnames[i]. И, если не врет мой склероз, фиксированная длина строки необязательна. И писать "\0" после текста строки тоже необязательно, Си сам дополняет двоичным нулём строку, записанную в кавычках.

Да, а с кнопками разобралась? (в соседней теме)

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

Ср июл 04, 2018 21:59:13

Я делал проще.

Вы сделали не правильно.
Предыдущему оратору: судя по вашим ошибкам, вы используете свежую версию avr-gcc, поэтому попробуйте квалификатор __flash вместо PROGMEM, только писать его надо сразу после или перед каждым const.
Если скомпилируется, то можно будет работать с указателями на строки точно так же, как с указателями на ОЗУ, т.е. pgm_read_XXX не будут нужны. Это невероятно удобнее.

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

Пт июл 06, 2018 03:33:02

Вы сделали не правильно.
Как сказать? Я решал ту же самую задачу: получить набор строк для выдачи на LCD-экранчик, но для ее решения применил не кучку отдельных строк с массивом указателей на них, а обыкновенный двумерный массив. Недостаток этого решения - фиксированная (и максимальная) длина строки, т.е. перерасход памяти на пробелы, дополняющие более короткие строки. Впрочем, не факт, что это недостаток - при изменении какой-либо строки на экране не надо отдельно стирать предыдущую - новая строка точно перекрывает старую. Для этого же служит и первая (нулевая) пробельная строка, но это актуально только для моего приложения.

Да, про необязательность одинаковой длины строк я ошибся, мой склероз таки соврал. :(

Добавлено after 43 minutes 15 seconds:
И вообще, здесь это слегка оффтопик, а у меня возник вопрос по теме.

вы используете свежую версию avr-gcc
Как я понимаю, эта версия входит в свежую версию Студии, да? А нельзя ли как-нибудь прикрутить ее к Студии 4.19?

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

Пт июл 06, 2018 06:51:48

afz писал(а):Как сказать
почитайте о том, как avr-gcc распределяет память при инициализации строковых "переменных", чтобы понять, что я имел ввиду под "неправильно": Storing and Retrieving Strings in the Program Space
afz писал(а):А нельзя ли как-нибудь прикрутить ее к Студии 4.19?
можно, путем тупого переписывания папки со "старым" тулчейном файлами из "нового". Если хочется сохранить и работоспособность старого - тогда при помощи компиляции "внешним" makefile.

я собираю проекты в Eclipse, и у меня шесть версий avr-gcc (хотя пользуюсь старыми только для отладки в протеусе, т.к. новые генерируют отладочную инфу так, что протеус не понимает нифига).

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

Пт июл 06, 2018 08:17:37

Как я понимаю, эта версия входит в свежую версию Студии, да? А нельзя ли как-нибудь прикрутить ее к Студии 4.19?

Можно так - убрать птичку и указать путь к toolchain:
Изображение
В качестве продвинутого редактора можно использовать Netbeans - хорошо импортирует проект созданный AVR Studio 4

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

Пт июл 06, 2018 08:36:44

oleg110592 писал(а):и указать путь к toolchain
не всегда помогает. я столкнулся с тем, что в последних версиях avr-gcc то ли папки как-то поменяли, то ли их содержимое стало другим, но просто указание СТАРОЙ студии пути к НОВОМУ тулчейну может привести к тому, что некоторые утилиты (типа avr-size или make) не смогут вызываться. не утверждаю, что так происходит всегда, но у меня так было...

мой вариант (с переписыванием папок) хотя бы оставляет доступными старые утилиты.

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

Пт июл 06, 2018 10:57:36

да avr-size AVR Studio не включает в свой makefile, при использовании внешнего toolchain. Но компилируется нормально. В новых GCC исключили опцию -C для avr-size. Используют avr-objdump.exe - опций много, он поинтереснее выдает информацию (GCC AVR 8.1):
Изображение
или так:
avr-objdump -s -j .note.gnu.avr.deviceinfo avr.elf
Contents of section .note.gnu.avr.deviceinfo:
Код:
 0000 04000000 2b000000 01000000 41565200  ....+.......AVR.
 0010 00000000 00400000 60000000 00040000  .....@..`.......
 0020 00000000 00020000 08000000 01000000  ................
 0030 0061746d 65676131 36000000           .atmega16...


http://ccrma.stanford.edu/planetccrma/m ... ump.1.html

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

Пт июл 06, 2018 12:18:02

ARV писал(а):как avr-gcc распределяет память при инициализации строковых "переменных"
Ну посмотрел. Это же опять про массив указателей на кучку отдельных строк, и то, и другое в PROGMEM. Я же предложил банальный массив строк. И то, и другое средство позволяют получить доступ к строке по ее номеру - собственно, ради этого все и затевалось. Только массив указателей на отдельные строки позволяет делать сами строки различной произвольной длины, а массив строк должен набираться из строк одинаковой длины, поскольку адресация в него ведется банальным умножением первого индекса (номера строки) на длину одной строки (это я подглядел в дизасме). Да, время выполнения этого действия больше, чем достать указатель из таблицы, но кого это волнует? А про то, что менять строки на экране проще, поскольку новая строка точно перекрывает старую, я уже написал.

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

Пт июл 13, 2018 19:38:45

Доброго времени суток. Как в Atmel Studio 7 задать частоту контроллера в опциях проекта, чтобы не задавать ее вручную в хидерах. В AVR Studio 4 это было легко и интуитивно, тут же просто черт ногу сломит :dont_know:
Ответить