Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: несколько вопросов
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
skilful
Здравствуйте. Помогите, пожалуйста, начинающему smile.gif


Начинаю переходить с Асма на Си. Использую WinAvr.

1) Так вот...как можно в Студии посмотреть значения моих переменных?
2) потом...#define F_CPU 7372800UL что означают эти строчки? Это частота кварца. Для чего она указывается? При использования подпрограмм задержки - delay_loop?
3) Я пытался вызвать функцию из другой функции, но что-то в Студии корректного перехода не увидел - это я такой кривой или программная отладка тупит? wink.gif)
4) Как втыкать ассемблерные вставки в Сишный код, например, в обработчиках прерываний?


5) Сишники, дайте литературы (по WinAvr и по Сям) - хочу учиться ... wink.gif а не задавать глупые вопросы wink.gif


Заранее благодарю.
mdmitry
Цитата(skilful @ Nov 25 2007, 00:18) *
Здравствуйте. Помогите, пожалуйста, начинающему smile.gif
Начинаю переходить с Асма на Си. Использую WinAvr.

1) Так вот...как можно в Студии посмотреть значения моих переменных?
2) потом...#define F_CPU 7372800UL что означают эти строчки? Это частота кварца. Для чего она указывается? При использования подпрограмм задержки - delay_loop?
3) Я пытался вызвать функцию из другой функции, но что-то в Студии корректного перехода не увидел - это я такой кривой или программная отладка тупит? wink.gif)
4) Как втыкать ассемблерные вставки в Сишный код, например, в обработчиках прерываний?
5) Сишники, дайте литературы (по WinAvr и по Сям) - хочу учиться ... wink.gif а не задавать глупые вопросы wink.gif
Заранее благодарю.

1 Как обычно в Студии через watch
2 да
3 нужно больше информации, возможно? надо включить соответствующие заголовочные файлы.
4 документация по avr-libc поможет
5 Керниган, Ричи Язык программирования С, для Winavr документация по библиотеке и компилятору gcc
skilful
Так я пытался через Watch - только там пишется Not in scope. Причем ниче не могу посмотреть - ни РОН, ни регистры ввода/вывода.
Qwertty
Цитата(skilful @ Nov 25 2007, 11:25) *
Так я пытался через Watch - только там пишется Not in scope. Причем ниче не могу посмотреть - ни РОН, ни регистры ввода/вывода.

А это такая особенность студии - переменные размещенные в регистрах не показывать sad.gif
Если их сделать глобальными, gcc разместит их в раме и студия будет их отображать. Неудобно, но что делать...
А ввод/вывод смотрится так же как и в ассемблере - через вкладку I/O View.
skilful
спасибо. Разобрался. Чтоб увидеть свою переменную поставил уровень оптимизации -оО и о чудо...
но отладка какая-то буторная - указатель команды ставится на пустые строчки, с функциями вообще жесть....
mdmitry
Цитата(skilful @ Nov 25 2007, 23:13) *
спасибо. Разобрался. Чтоб увидеть свою переменную поставил уровень оптимизации -оО и о чудо...
но отладка какая-то буторная - указатель команды ставится на пустые строчки, с функциями вообще жесть....

Посмотрите диасссемблер, станет понятнее про пустые строчки.
SergeyYA
Цитата(skilful @ Nov 25 2007, 00:18) *
Здравствуйте. Помогите, пожалуйста, начинающему smile.gif
Начинаю переходить с Асма на Си. Использую WinAvr.

1) Так вот...как можно в Студии посмотреть значения моих переменных?
2) потом...#define F_CPU 7372800UL что означают эти строчки? Это частота кварца. Для чего она указывается? При использования подпрограмм задержки - delay_loop?
3) Я пытался вызвать функцию из другой функции, но что-то в Студии корректного перехода не увидел - это я такой кривой или программная отладка тупит? wink.gif)
4) Как втыкать ассемблерные вставки в Сишный код, например, в обработчиках прерываний?
5) Сишники, дайте литературы (по WinAvr и по Сям) - хочу учиться ... wink.gif а не задавать глупые вопросы wink.gif
Заранее благодарю.

Компилятор тута ни при чем изучай С когда ты объявляешь локальные переменные они видятся только там где их ты объявил а если объявишь глобальные то их можно посмотреть в любой функции или прерывании и еще когода объевляешь переменную которая используется и в прерывании и в функции обязательно ставь volatile
Freeze Anti
Из литературы могу посоветвать книжку: Ю.А.Шпак Программирование на языке C для AVR и PIC микроконтроллеров.

только у меня в связи с этой книжкой вопрос... я все время программировал в IAR Embedded Workbench, а тут во нужно быстро перейти но WinAVR. У меня возникла первая же сложность с makefile. В книжке, которую я указал выше есть совет использовать makefile, записанный на прилагаемом диске с некоторыми корректировками, которые объясняются в книге... но я скачивал книгу в djvu формате из интернета и, разумеется никакого диска у меня нет... может кто сможет написать содержимое этого makefile или дать какие-то инструкции, как его изготовить самому...
mdmitry
Цитата(Freeze Anti @ Nov 28 2007, 10:07) *
Из литературы могу посоветвать книжку: Ю.А.Шпак Программирование на языке C для AVR и PIC микроконтроллеров.

только у меня в связи с этой книжкой вопрос... я все время программировал в IAR Embedded Workbench, а тут во нужно быстро перейти но WinAVR. У меня возникла первая же сложность с makefile. В книжке, которую я указал выше есть совет использовать makefile, записанный на прилагаемом диске с некоторыми корректировками, которые объясняются в книге... но я скачивал книгу в djvu формате из интернета и, разумеется никакого диска у меня нет... может кто сможет написать содержимое этого makefile или дать какие-то инструкции, как его изготовить самому...

В ветке по AVR выкладывались makefile, не менее двух вариантов. Воспользуйтесь поиском.
skilful
там все просто. Создаешь свой makefile утилиткой Mfile. Изменяешь оптимизацию, МК и все такое...
Дальше
Debug format = AVR Studio 4.07+
Target = <название твоего файла> без расширения

А потом открываешь Makefile и прописываешь:
SRC = <название файла>.c
CPPSRC = пусто


И все компилится нормально и все работает как по книге wink.gif

SergeyYA, спасибо за ответ. Уже потихоньку изучаю wink.gif
Сергей Борщ
Цитата(Freeze Anti @ Nov 28 2007, 09:07) *
В книжке, которую я указал выше есть совет использовать makefile, записанный на прилагаемом диске с некоторыми корректировками
Тот плагин, который сейчас идет в комплекте со студией сам создает нужный makefile. Т.е. создаете новый проект, в качестве toolchain выбираете GCC и получаете заготовку проекта с main() и makefile. Все настройки через менюшки студии, новые файлы добавляются в makefile автоматически. Когда возможностей менюшки вам станет мало, укажете в опциях проекта external makefile, возьмете то, что уже создала студия и будете его править.
mdmitry
Цитата(Сергей Борщ @ Nov 28 2007, 13:16) *
Тот плагин, который сейчас идет в комплекте со студией сам создает нужный makefile. Т.е. создаете новый проект, в качестве toolchain выбираете GCC и получаете заготовку проекта с main() и makefile. Все настройки через менюшки студии, новые файлы добавляются в makefile автоматически. Когда возможностей менюшки вам станет мало, укажете в опциях проекта external makefile, возьмете то, что уже создала студия и будете его править.

Makefile студии отличается от файла, генерируемого утилитой для WinAvr. может собраться студией, а make его может забраковать ( личный опыт).
SergeyYA
Цитата(mdmitry @ Nov 28 2007, 15:24) *
Makefile студии отличается от файла, генерируемого утилитой для WinAvr. может собраться студией, а make его может забраковать ( личный опыт).

согласен что на вин авр написанный проект не компилится под студию но изначально созданный в студии проект компилится отлаживается и все такое всегда без проблем и маке файл там создается автоматически и настраивается из под меню элементарно вот уже год сижу на студии пока проблем таких грандиозных вроде пока не было 1111493779.gif
fmdost
Цитата(Freeze Anti @ Nov 28 2007, 11:07) *
Из литературы могу посоветвать книжку: Ю.А.Шпак Программирование на языке C для AVR и PIC микроконтроллеров.
.....

Дядь! Ссылочкой бы поделился, а ещё лучше на сахару её саму.
skilful
http://dasbook.ru/?id=24&n=2
mdmitry
Цитата(SergeyYA @ Nov 28 2007, 16:30) *
согласен что на вин авр написанный проект не компилится под студию но изначально созданный в студии проект компилится отлаживается и все такое всегда без проблем и маке файл там создается автоматически и настраивается из под меню элементарно вот уже год сижу на студии пока проблем таких грандиозных вроде пока не было 1111493779.gif

Из командной строки make'ом проект студии нормально не собрать, что на мой взгляд , плохо. из-за этого отказался от студии sad.gif
sensor_ua
Цитата
Из командной строки make'ом проект студии нормально не собрать, что на мой взгляд , плохо.

IMNHO, чудеса рассказываете.
mdmitry
Цитата(sensor_ua @ Nov 30 2007, 01:58) *
IMNHO, чудеса рассказываете.

Прописал параметры в фаил студии руками, которые из меню не выставляются и результат sad.gif Один раз попробовал и отказался. Использую make (makefile редактирую только руками) с eclipse. Может руки у меня кривые?
sensor_ua
Цитата
Прописал параметры

Причём тут студия? Там свои ключики есть куда вписывать. Она генерит makefile, он и выполняется. Соответственно его можно "попросить остаться" - какая-то там птичка в студии позволяет. Когда-то мучал Eclipse - дык у той сгенерённый makefile был недоступен - существовал только во время выполнения(не знаю как сейчас - надеюсь, что-то изменилось). Кстати, как там в Eclipse drag-n-drop в редакторе уже появился?
mdmitry
Цитата(sensor_ua @ Dec 1 2007, 16:51) *
Причём тут студия? Там свои ключики есть куда вписывать. Она генерит makefile, он и выполняется. Соответственно его можно "попросить остаться" - какая-то там птичка в студии позволяет. Когда-то мучал Eclipse - дык у той сгенерённый makefile был недоступен - существовал только во время выполнения(не знаю как сейчас - надеюсь, что-то изменилось).

Студия генерирует файл отличающийся по структуре от файла для make. В Eclipse проект с внешним makefile, проблем нет
Сергей Борщ
Цитата(mdmitry @ Dec 1 2007, 19:51) *
Студия генерирует файл отличающийся по структуре от файла для make.
Чудеса. Специально взял проект студента, где makefile генерится студией, запустил make - все откомпилировалось.
Qwertty
Видимо имеется ввиду то, что утилита MFILE не может редактировать мейкфайл сгенерированный студией. Если бы make не понимал этот мейкфайл, то и из под студии проекты тоже бы не собирались smile.gif
mdmitry
Цитата(Qwertty @ Dec 1 2007, 23:45) *
Видимо имеется ввиду то, что утилита MFILE не может редактировать мейкфайл сгенерированный студией. Если бы make не понимал этот мейкфайл, то и из под студии проекты тоже бы не собирались smile.gif

Да, mfile не редактирует. У меня студия (версию не помню) плодила еще довески к основному файлу, кажется в подкаталогах. Разбираться куда какие насторойки уходил желания не было и редактировать куски тоже. На мой взгляд эти допфайлы - уход от идеалогии GNU make. Утилита позваляет подгружать дополнительные файлы, о чем сказано в документации, но назначение подгрузки файлов другое.
sensor_ua
Для запуска makefile, сгенеренного студией (4.13SP1) без студии пришлось чуток пободаться (раньше вроде не было такого) - прописал батинок

@set PATH=c:\winavr-20070525\bin;c:\winavr-20070525\utils\bin

make.exe %1

Причём в environment variables винды (XP Pro En SP1) есть аналогичный path. А чудеса перед этим махонькие были - появилась какая-то ошибка запуска sh.exe из WinAVR - откопал, что для лечения трабла нужно поменять msys-1.0.dll -
http://www.madwizard.org/extern/winavr-vista/
помогло. Чудеса эти проявились сначала (сегодня)wink.gif с WinAVR-20070122 (но было время, когда оно работало в этом составе на этом компе и безо всяких застирываний, не помню только, SP на студию был проставлен или нет)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.