Arduino DUE + Atmel Studio 7

Mexaneg
Offline
Зарегистрирован: 28.04.2016

Доброго дня.

Решил намедне познакомиться с ардуинкой. Прикупил сразу DUE. С микрухами сталкиваюсь не впервые.

Посмотрел на родную дуиновкую среду - чет не впечатлило. На форуме вычитал что есть примочка к Atmel Studio для работы с дуинкой. Студию поставил, примочку подгрузил, пустой скетч создал, на его основе запилил проект в студии - гуд. Но при компиляции вылезли ошибки - нет некоторых файлов в директории...

Скрин:

 

Сталкивался может кто с таким. Что делать? с 7 студией не шибко знаком.

Скетч компилится и грузится в Arduino IDE в Студии никаких изменений не вносил...

Хотел файлы вручную подцепить, но не нашел таковых у себя. Думал закоментить обращения к кним, но чую эт важные файлики.

 

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

где скрин?

Mexaneg
Offline
Зарегистрирован: 28.04.2016

Картинка не прицепилась, исправляюсь

Ссылочка на полный размер

http://i069.radikal.ru/1604/79/34f3a7ab5a06.jpg

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Mexaneg пишет:

Решил намедне познакомиться с ардуинкой. Прикупил сразу ...

Добро пожаловать на борт!

faeton
faeton аватар
Offline
Зарегистрирован: 21.03.2016

Простите, что не по конкретному вопросу, но нафига к студии лепить дуню? Чем Вам сама студия недостаточна? Если очень нужны библиотеки дуни, так заберите их в студию. Если хочется заливать без программатора код, через СОМ, так тулзу к студии прилепить... :)

Mexaneg
Offline
Зарегистрирован: 28.04.2016

faeton пишет:

Простите, что не по конкретному вопросу, но нафига к студии лепить дуню? Чем Вам сама студия недостаточна? Если очень нужны библиотеки дуни, так заберите их в студию. Если хочется заливать без программатора код, через СОМ, так тулзу к студии прилепить... :)

Мысль логичная, я собственно и хочу от дуинки избавиться. Решил для начала попробовать прикрутить дуинку к студии чисто ради интереса и там поковыряться с отладкой. Сразу во взрослую жизнь студии страшно :D

А не подскажете инструментину для залики прошивки через COM порт??

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

Avrdude

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

В Atmel Studio можно добавить консольную команду с параметрами вызова Avrdude. Находится в меню Tools - External Tools. Потом её можно вызывать из меню или добавить кнопку на панель инструментов и привязать к кнопке эту консольную команду.

Вот, например у меня так настроено в AS6 (только прошивка не через COM-порт, а через программатор USBasp)

 

Mexaneg
Offline
Зарегистрирован: 28.04.2016

Jeka_M пишет:

В Atmel Studio можно добавить консольную команду с параметрами вызова Avrdude. Находится в меню Tools - External Tools. Потом её можно вызывать из меню или добавить кнопку на панель инструментов и привязать к кнопке эту консольную команду.

Вот, например у меня так настроено в AS6 (только прошивка не через COM-порт, а через программатор USBasp)

 

 

Огромное спасибо! буду разбираться)

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

P.S. Avrdude я прикрутил из комплекта утилиты SinaProg (графическая оболочка для консольной Avrdude), можно прикрутить Avrdude из комплекта Arduino IDE или вовсе скачать отдельно. Без разницы, главное правильно прописать путь и параметры вызова.

Мой пример для ATtiny13a и программатора USBasp:

Command: F:\_Electronics\_AVR\Soft\SinaProg\data\avrdude.exe (путь к avrdude.exe, у Вас будет свой)

Arguments: -c usbasp -b 19200 -p t13 -U flash:w:$(ProjectDir)Debug\$(ItemFileName).hex:a -q

faeton
faeton аватар
Offline
Зарегистрирован: 21.03.2016

Mexaneg пишет:

faeton пишет:

Простите, что не по конкретному вопросу, но нафига к студии лепить дуню? Чем Вам сама студия недостаточна? Если очень нужны библиотеки дуни, так заберите их в студию. Если хочется заливать без программатора код, через СОМ, так тулзу к студии прилепить... :)

Мысль логичная, я собственно и хочу от дуинки избавиться. Решил для начала попробовать прикрутить дуинку к студии чисто ради интереса и там поковыряться с отладкой. Сразу во взрослую жизнь студии страшно :D

А не подскажете инструментину для залики прошивки через COM порт??

Про подключение Jeka_M написал, а вот с отладкой засада - китайские программаторы дешёвые не прокатят, прошивку для их приобщения к студии при первой попытке найти не смог, и не сильно старался. Пока ещё микроПаскаль пытюсь использовать...

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Да, отлаживать в железе через COM-порт или с помощью дешёвого китайского программатора Вы не сможете. Для этого нужны программаторы, которые официально поддерживаются студией, они не дёшевы. Но кое-какую отладку можно делать на встроенном в студию симуляторе. Есть окошко IO View, в котором видно всю переферию и регистры микроконтроллера с выставленными битами. В симуляторе, как и в железе, можно ставить точки останова и т.д.

faeton
faeton аватар
Offline
Зарегистрирован: 21.03.2016

Jeka_M пишет:

Да, отлаживать в железе через COM-порт или с помощью дешёвого китайского программатора Вы не сможете. Для этого нужны программаторы, которые официально поддерживаются студией, они не дёшевы. Но кое-какую отладку можно делать на встроенном в студию симуляторе. Есть окошко IO View, в котором видно всю переферию и регистры микроконтроллера с выставленными битами. В симуляторе, как и в железе, можно ставить точки останова и т.д.

Неужели ещё никто не слил код? :( Или Атмел защитился от такого безобразия схемой из 2-х процессоров?

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

JTAG ICE 2 слит и вполне, судя по отзывам, работоспособен.
Чисто мне не интересе, не юзаю камней с JTAG...

faeton
faeton аватар
Offline
Зарегистрирован: 21.03.2016

Yarik.Yar пишет:
JTAG ICE 2 слит и вполне, судя по отзывам, работоспособен. Чисто мне не интересе, не юзаю камней с JTAG...

ICE 2 поддерживает же все интерфейсы и OCD не только на JTAG ведь работает. Разве нет?

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

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Мужики, я вот совcем не знаю какие там у атмела есть аппаратные средства отладки. Сейчас заказал на атмелсторе такую вот штуку и жду, когда приедет. Там все их средства отладки есть или у них или что-то ещё бывает?

Не то, чтобы эти средства отладки мне нужны (фиговину-то покупал как параллельный программатор с кроватками под все AVR'ки), но если есть, так чего не попробовать-то?

axill
Offline
Зарегистрирован: 05.09.2011

ЕвгенийП пишет:

Мужики, я вот совcем не знаю какие там у атмела есть аппаратные средства отладки. Сейчас заказал на атмелсторе такую вот штуку и жду, когда приедет. Там все их средства отладки есть или у них или что-то ещё бывает?

Не то, чтобы эти средства отладки мне нужны (фиговину-то покупал как параллельный программатор с кроватками под все AVR'ки), но если есть, так чего не попробовать-то?

в STK500 нет средств отладки. У атмела в этим все запутано. В STM500 есть только программатор. Хороший программатор, с последовательным и паралелльными интерфейсами, но только программатор.

Для отладки нужен или из старой серии avrdragon/jtagice2/jtagice3/jtagice или новый универсальный atmel ice, стоит в минимуме 100 баксов (их 4 версии, самая дешевая версия PCB без корпуса) + доставка, можно купить у офф диллеров типа mouser, digikey, farnell

я в свое время покупал в mouser jtagice3. Делаю с ним отладку с тини13/атмега168/атмега328/атмега32/атмега128

с интерфейсами у атмела тоже все запутано - это и awire и debugwire и JTAG и PDI

В этом смысле все куда лучше проще и дешевле у STM. Можно купить универсальный программатор он же отладчик даже официальный стоит вменяемых денег, а уж китайский клон меньше 500р. Работать будет и с STM8 и с STM32

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Спасибо, axill.

faeton
faeton аватар
Offline
Зарегистрирован: 21.03.2016

ЕвгенийП пишет:

Не то, чтобы эти средства отладки мне нужны (фиговину-то покупал как параллельный программатор с кроватками под все AVR'ки), но если есть, так чего не попробовать-то?

О, попались! :))) Никак не могу найти решение, что раньше куры или яйца, т.е. как лучше поступать: прошивать проц и потом его впаивать или прошивать уже на плате. И то, и другое решение в моём сосзнании имеет равные плюсы и минусы.  Вас по какой причине кроватки привлекли?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

faeton пишет:

Вас по какой причине кроватки привлекли?

Сексуальные фантазии. А что?

axill
Offline
Зарегистрирован: 05.09.2011

Yarik.Yar пишет:
JTAG ICE 2 слит и вполне, судя по отзывам, работоспособен. Чисто мне не интересе, не юзаю камней с JTAG...

Работает только со студией древней 4й версии. С 6й и 7й работают только оригинальные отладчики. 

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

4 - нисколько не древняя! Последняя нормальная студия.

faeton
faeton аватар
Offline
Зарегистрирован: 21.03.2016

axill пишет:

Yarik.Yar пишет:
JTAG ICE 2 слит и вполне, судя по отзывам, работоспособен. Чисто мне не интересе, не юзаю камней с JTAG...

Работает только со студией древней 4й версии. С 6й и 7й работают только оригинальные отладчики. 

Вот собаки! Как-то всё больше STM32 начинает нравиться...

axill
Offline
Зарегистрирован: 05.09.2011

Yarik.Yar пишет:

4 - нисколько не древняя! Последняя нормальная студия.

все относительно. Мне 7я намного удобнее и вообще микрософт можно ругать, но студия удобнее и кейла и IAR на порядок

есть мысль использовать visualstudio для редактирования проектов stm. В сравнении  iar и кейл сильно проигрывают

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

faeton пишет:

axill пишет:

Yarik.Yar пишет:
JTAG ICE 2 слит и вполне, судя по отзывам, работоспособен. Чисто мне не интересе, не юзаю камней с JTAG...

Работает только со студией древней 4й версии. С 6й и 7й работают только оригинальные отладчики. 

Вот собаки! Как-то всё больше STM32 начинает нравиться...

коматозник, ты только сейчас узнал, что цивилизованным людям влом лепить клоны JTAG ICE для новых версий, а проще купить фирменный от Атмел?

releyshic
Offline
Зарегистрирован: 20.11.2015

axill пишет:

Yarik.Yar пишет:
JTAG ICE 2 слит и вполне, судя по отзывам, работоспособен. Чисто мне не интересе, не юзаю камней с JTAG...

Работает только со студией древней 4й версии. С 6й и 7й работают только оригинальные отладчики. 

ниужели совсем нет альтернативы оригшиналу?

Не нравится эта политика фирм, лишьбы на всём бабла срубить

SIEMENS себя так же ведёт, софт платный, да и стоит по 30к, сейчас не знаю как с учётом курса

faeton
faeton аватар
Offline
Зарегистрирован: 21.03.2016

Вот приехал сегодня программатор - китайский клон ST-Link за копейки. Оригинальные драйверы подошли, даже обновлённая прошивка в него загрузилась, всё работает... Попробовал прочитать код из часиков на ST32 - что-то прочиталось. Пока ничего про ST32 не знаю, но, пожоже, оно не как Atmel - корова бесплатно, но с ней кошка в нагрузку за мульён...

Baks
Baks аватар
Offline
Зарегистрирован: 11.01.2016

Приветствую господа, вот решил поставить Атмел Студию, встала с первого раза, также установил плагин визуал микро, для работы с Ардуинкой (появился пункт в меню)  но чтото не разберусь,  выдает ошибку.... подчеркивает весь текст как будто бы не знаком (на скрине видно) .. 

на компе установлена ардуино ИДЕ 1.7.10 версии, в настройках Студии указал путь к ИДЕ, и больше не знаю где и что ставить......

вот скрин , кто что может подсказать?

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

Baks пишет:

на компе установлена ардуино ИДЕ 1.7.10 версии

и, где ты взял 1.7.10, если последняя официальная финальная arduino-1.6.9 ?

Baks
Baks аватар
Offline
Зарегистрирован: 11.01.2016

ловите http://www.arduino.org/downloads но дело не в этом, пробовал переустанавливал на 1.6.9 тоже не помогло

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

Baks пишет:

ловите http://www.arduino.org/downloads но дело не в этом, пробовал переустанавливал на 1.6.9 тоже не помогло

ты мне ещё на http://www.porn.org/downloads ссылку дай.

если до тебя не доходит - прямой текст: долбоёб, качай софт с официальных источников

Baks
Baks аватар
Offline
Зарегистрирован: 11.01.2016

Очень приятно познакомиться , Меня Денис звать...

и кстати версия сейчас 1.6.9  и все равно не помогло, старую снес!

 

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

Baks пишет:

и кстати версия сейчас 1.6.9  и все равно не помогло, старую снес!

а, кто сказал, что поможет? тебе было сказано, что ты юзаешь какой-то шлак - не более.

Baks
Baks аватар
Offline
Зарегистрирован: 11.01.2016

я Вас попрашу не превращеть тему во флудилку, если нечего канкретного подсказать то лучше ничего не писать.

Обращаюсь к пользователям атмел студии кто что подскажет..... 

П С Визуал студию поставил все норм работает и даже заливает скетч, но душа не очень лежит к ней.

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

Baks пишет:

Обращаюсь к пользователям атмел студии кто что подскажет..... 

П С Визуал студию поставил все норм работает и даже заливает скетч, но душа не очень лежит к ней.

а, атмел студио уложит твою стоячую душу?

Baks
Baks аватар
Offline
Зарегистрирован: 11.01.2016

вот похоже что то нашел, выдает ошибку только вот что там указать в строке не знаю ....

releyshic
Offline
Зарегистрирован: 20.11.2015
Baks
Baks аватар
Offline
Зарегистрирован: 11.01.2016

ничего не нашел что нужно писать в этой строке.

Кто использует Атмел студию может посмотреть что там у вас прописано?

releyshic
Offline
Зарегистрирован: 20.11.2015

Jeka_M пишет:

P.S. Avrdude я прикрутил из комплекта утилиты SinaProg (графическая оболочка для консольной Avrdude), можно прикрутить Avrdude из комплекта Arduino IDE или вовсе скачать отдельно. Без разницы, главное правильно прописать путь и параметры вызова.

Как Из ATmel Studio шить Arduinу без программатора? Причем я знаю наверняка что код от студии гораздо производительней всего остального, то есть как это делать не чез левые компиляторы и прочее?

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Напрямую Atmel Studio шьет только через программатор (причём USBasp не поддерживается). Но можно прикрутить avrdude, выше я объяснял с картинками как это сделать. А уже avrdude, в свою очередь, может  прошивать и без программатора - так сделано в Arduino IDE. Нужно только разобраться с параметрами вызова avrdude.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

releyshic пишет:

Как Из ATmel Studio шить Arduinу без программатора? 

Без программатора? Да, почти никак. Студия заточена на использование STK-500 - это такая плата, в атмелсторе за 83 бакса продаётся - очень рекомендую, я купил и не пожалел ни разу. Если есть любой программатор, то то можно запускать его через PostBuild event - это позволяет использовать любой программатор, даже тот, про который студия ничего не знает (например, у меня отлично работает USBASP). Ну, а про остальное Вам коллега уже написал.

releyshic
Offline
Зарегистрирован: 20.11.2015

ЕвгенийП пишет:
Если есть любой программатор, то то можно запускать его через PostBuild event - это позволяет использовать любой программатор, даже тот, про который студия ничего не знает (например, у меня отлично работает USBASP). .

нука-нука, что энто за зверь? по поиску не понятно

Догадываюсь, бери Хекс и шей чем хочешь только автоматом?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

releyshic пишет:

Догадываюсь, бери Хекс и шей чем хочешь только автоматом?

В общем и целом - да.

Открываете студию, наводите мышь на название проекта, по правой кнопке в меню выбираете "Properties".

В появившемся окне ищете "Build Events". Там в окошке "Post build event command line" прописываете строку вызова Вашего программатора со всеми путями к нему и параметрами.

Для обозначения платы и имени hex файла используете макросы студии. Смотрите, как я их использую ($(avrdevce), $(OutputDirectory) и $(OutputFileName))

Теперь по команде "Build" она должна всё компилировать и прошивать после компиляции.

Попробуйте, если всё нормально, то рекомменду сделать ещё один шаг.

Очиситите проект (оставьте только пустой main и, может быть свои самые любимые include). Поставьте мышь на Solution и выберите из меню "File | Export template". Сохраните этот проект как шаблон с каким-нибудь именем. Тогда при создании нового проекта этот шаблон будет появляться в общем списке шаблонов и Вы сможете создавать новые проекты с уже установленной загрузкой - чтобы больше об этом не думать. 

releyshic
Offline
Зарегистрирован: 20.11.2015

Спасибо, попробую потом )

У меня вот пока не получается Скетч запучтить в VisualMicro+AtmelStudio

Компилятор как будто не видит мою позовательскую структру и пишет что мол "Структура Блабла не имя типа"

http://forum.amperka.ru/threads/atmel-studio-%D0%B8%D0%B3%D0%BD%D0%BE%D1%80%D0%B8%D1%80%D1%83%D0%B5%D1%82-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D1%83%D1%8E-%D0%A1%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D1%83-%D0%B8-%D0%B2%D1%8B%D0%B4%D0%B0%D1%91%D1%82-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8-%D1%81-arduino-ide-%D0%BD%D0%B0-visual-micro.9293/#post-84540

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

releyshic пишет:

Компилятор как будто не видит мою позовательскую структру и пишет что мол "Структура Блабла не имя типа"

Рискну предположить, что когда они делали поддержку Ардуиновских скетчей, они для совместимости перетащили всё безграмотное дерьмо из Ардуино IDE. Причём, в последних версиях IDE до разработчиков наконец-таки дошло, что они неправы и они это дерьмо убрали (в старых версиях IDE такое тоже не скомпилировалось бы). А разработчики плагина для Студии перетаскивали до того, как убрали, и всё говнецо себе перетащили - для совместимости. Иначе бы многие ардуиновские скетчи у них бы не компилировались.

Суть дерьма я уже объяснял, почитайте. Там со слов "сначала я объявляю класс" как раз Ваш случай рассматривается.

Бороться с этим просто. Например, забудьте про Ардуино и нормально программируйте в студии. Или, если не хотите забывать про Ардуино, то не используйте собственные типы в параметрах функций. Передавайте указатель на void, а уже внутри функции преобразовывайте - там можно.

releyshic
Offline
Зарегистрирован: 20.11.2015

ЕвгенийП пишет:
Бороться с этим просто.

нас самом деле оказалось что нужно просто все прототипы функций выписать вначале после дефайнов и код заработал, однако проблема новая нарисовалась - почемуто Тач не срабатывает, точнее скорее всего Функция не срабатывает для выхода из setup или обработчик нажатий чтото в этом духе

ЕвгенийП пишет:
Например, забудьте про Ардуино и нормально программируйте в студии.

на самом деле я только за, не так давно обнаружил что Arduino IDE тупо пропускал выполнение case-ов без каких либо на то причин, компилирует и загружает но не выполняет то что внутри ни в какром виде, я так и сяк пробовал, и в блоки всё одеваю и все значения проверял в порт выводил, а он тупо не выполняет кусок кода ))) результат - заменил на if такое было в 2х местах

Правда есть ещё вариант что гдето в памяти контроллера какойто касяк, но это я хрен узнаю

А есть какаято обучалка как переделать Скетч Ардуины в нормальный проект AtmelStudio (я не имею ввиду на нормальный синтаксис С++, а вот как куда библиотеки подключать и что да как там)?

ЕвгенийП пишет:
Или, если не хотите забывать про Ардуино, то не используйте собственные типы в параметрах функций. Передавайте указатель на void, а уже внутри функции преобразовывайте - там можно.

а примерчик маленьки можно? не вкурю как указатель типа void поможет объект передать

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

releyshic пишет:

а примерчик маленьки можно? не вкурю как указатель типа void поможет объект передать

class A {
	int a;
};

/*
	Вместо

	void f(A * p) {
		// ... что-то делается с указателем p
	}

	напишем
*/

void f(void * vp) {
	A *p = (A*)vp;
	// ... что-то делается с указателем p
}

void setup(void) {
	A a;
	f(& a);
}

Вот и всё. В новой функции f мы спокойно пользуемся указателем p на класс A, но пр и этом сам класс в параметрах не фигурирует.

releyshic
Offline
Зарегистрирован: 20.11.2015

ЕвгенийП пишет:
Вот и всё. В новой функции f мы спокойно пользуемся указателем p на класс A, но пр и этом сам класс в параметрах не фигурирует.

чтото я не понимаю, мы передаём указатель на объеки а типа А, а принимаем мы указатель типа void

Почему компилятор не возражает на это ведь вроде бы указатели на разные типы разные?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

releyshic пишет:

Почему компилятор не возражает на это ведь вроде бы указатели на разные типы разные?

void * - унивесральный указательный тип (указатель на что-нибудь"), который может сойти за любой указатель. Можно сказать так: "void *" - это "указатель вообще" - т.е. просто "адрес памяти". Поэтому его можно использовать вместо любого конкретного указателя.

Правда, лучше без крайне нужды этого не делать, т.к. при этом теряется контроль типов и компилятор не может предупредить Вас о том, что Вы передаёте неправильный тип. Но в тех ситуациях, когда функции надо передать просто указатель на кусок памяти, это оправдано и функции, принимающей void * можно передать любой указатель.

releyshic
Offline
Зарегистрирован: 20.11.2015

я так понял что Тип указателя нужен только для того чтобы программа знала какого Типа переменная хранится по адресу в указателе

То есть если создать указатель с неправильням типом будет касяк в памяти

А где вообще почитать про работу компилятора?

Вот сейчас например нужно знать где хранятся Значения констант #define?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

releyshic пишет:

То есть если создать указатель с неправильням типом будет касяк в памяти

Не будет, если тип вовремя преобразовать в правильный, что мы и делаем.

releyshic пишет:

А где вообще почитать про работу компилятора?

Для начала Вам нужно почитать про язык, т.к. Вы не знаете языка и никакие знания о компиляторе Вам не помогут. О языке читайте (именно в такой последовательности):

1. http://www.programming1189.ru/files/Kern_Ritch.pdf
2. http://8361.ru/6sem/books/Straustrup-Yazyk_programmirovaniya_c.pdf

Когда Вы это прочтёте, то вопросы типа

releyshic пишет:

где хранятся Значения констант #define?

отпадут сами собой. Кстати, ответ, - если маленькие, то нигде не хранятся, вставляются прямо в код. Если большие, то зависит от опций компилятора.