Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: AVR + Си
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
zalg
До этого писал на ассемблере. Сейчас начал новый проект на AT90USB1286 и попутно изучать usb. Как то у меня все очень медленно продвигается. Я так понимаю сделать usb-устройство на ассемблере задача нетривиальная и решил, что пора переходить на Си, так как есть готовые библиотеки.

Посоветуйте пожалуйста среду разработки и компилятор. И еще буду благодарен за полезные ресурсы по usb. (Пока читаю книгу Агурова "Интерфейс usb. Практика использования и программирования." и втыкаю в atmel'евские appnotes )
_dem
USB in a Nutshell. В случае с АВР - фреймворк Атмела.
kovigor
Цитата(zalg @ Feb 24 2011, 23:49) *
До этого писал на ассемблере. Сейчас начал новый проект на AT90USB1286 и попутно изучать usb. Как то у меня все очень медленно продвигается. Я так понимаю сделать usb-устройство на ассемблере задача нетривиальная и решил, что пора переходить на Си, так как есть готовые библиотеки.

Посоветуйте пожалуйста среду разработки и компилятор. И еще буду благодарен за полезные ресурсы по usb. (Пока читаю книгу Агурова "Интерфейс usb. Практика использования и программирования." и втыкаю в atmel'евские appnotes )


По Си - книжку Крупника "Изучаем Си"
и Герберта Шилдта "Полный справочник по Си":

http://www.lord-n.narod.ru/walla.html

Компилятор - для начинающего лучше всего Codevision. Можно IAR.

По USB - Агуров - не лучший выбор. Масса ошибок, а написано просто ужасно. Лучше спецификацию. Ну и, конечно, Гука "Шины PCI, USB и FireWire". Где скачать - поищите сами ...
KRS
Берите лучше нормальный многоплатформенный компилер - IAR или GNU.
А то потом захочется/понадобится на ARM перейти (который уже дешевле и мощнее AVR)
kovigor
Цитата(KRS @ Feb 25 2011, 01:29) *
Берите лучше нормальный многоплатформенный компилер - IAR или GNU.
А то потом захочется/понадобится на ARM перейти (который уже дешевле и мощнее AVR)


Применяю Codevision и Keil для самых разных МК, и для ARM в том числе. Недавно пришлось осваивать еще и IAR. Скажу только, что знание Codevision и Keil освоению IAR нисколько не помешало.

По USB еще очень рекомендую Jan Alexson "USB Complete" ...
Vetal-Soft
ихмо)
Codevision - поделка не для usb, помигать светодиодом можно и только.
gcc для avr!
sigmaN
да, кодэвижн - тот ещё отстой.
ни одной темы не пропускаю, чтобы не предупредить людей, чтоб не связывались с ним!
-SANYCH-
А в чем именно заключается отстойность кодевижина?
mykyta
Однозначно GNU AVR GCC ! Штука мощная, поддерживаемая! На ней куча людей пишут, выкладывают, проекты! Да и перейти потом на ARM можно без проблем!
Сергей Борщ
QUOTE (-SANYCH- @ Mar 1 2011, 09:27) *
А в чем именно заключается отстойность кодевижина?
1) Это не компилятор С. Это компилятор "языка, похожего на С".
2) Его визард отучает самостоятельно думать о правильной инициализации периферии.
3) правда в этом не виноват ни компилятор, ни его автор - воровать нехорошо.
-SANYCH-
Цитата
2) Его визард отучает самостоятельно думать о правильной инициализации периферии.


На мой взгляд это наоборот удобная штука. В любых программах нужно стараться максимум использовать готовые библиотеки, так как это ускоряет написание программы и разработку в целом.
Если все писать самому то это похоже на изобретение велосипеда. В том-же GCC для авров тоже есть готовые библиотеки и это я считаю только плюс.
mykyta
хочешь быстро и сразу, пользуйся КодеВижином ! В нем куча готовых библиотек и готовых настроек. А хочешь разобраться и качественно сделать, бери GCC !
Harbinger
Цитата(-SANYCH- @ Mar 1 2011, 12:34) *
На мой взгляд это наоборот удобная штука.

Удобная-то удобная, но критическое отношение не мешает. В аналогичном визарде от ES Academy (для NXP-шных МК) встречаются ляпы.
Если я правильно понял, проект CV поддерживает один-единственный программист, в отличие от GCC и дорогих коммерческих продуктов...
-SANYCH-
Цитата
Удобная-то удобная, но критическое отношение не мешает. В аналогичном визарде от ES Academy (для NXP-шных МК) встречаются ляпы.
Если я правильно понял, проект CV поддерживает один-единственный программист, в отличие от GCC и дорогих коммерческих продуктов...


А что вы скажете по поводу того что на разных версиях GCC получается разный размер прошивки? Причем прилично. Был размер прошивки 1,8к когда я перекомпилил ту же программу более новой версией GCC получил размер 2,1к естественно она не влезла в контроллер.
В GCC меня привлекает только то, что он бесплатный и много под него уже наработок, а как компилятор для микроконтроллеров на мой взгляд он далеко не самый лучший.
Marto
Цитата(Сергей Борщ @ Mar 1 2011, 16:05) *
1) Это не компилятор С. Это компилятор "языка, похожего на С".
2) Его визард отучает самостоятельно думать о правильной инициализации периферии.
3) правда в этом не виноват ни компилятор, ни его автор - воровать нехорошо.


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

АВР студио + ВинАвр
sigmaN
Цитата
А что вы скажете по поводу того что на разных версиях GCC получается разный размер прошивки?
Компилятор постоянно оптимизируется и меняется тюнинг оптимизации... как правило такую разницу можно свести на нет, а то и склонить в более выгодную сторону подбором флагов оптимизации(10 - 15 типичных). +stdlib тоже развивается и некоторые функции могут стать чуть тяжелее... дело то житейское )
zltigo
QUOTE (-SANYCH- @ Mar 1 2011, 13:34) *
На мой взгляд это наоборот удобная штука. В любых программах нужно стараться максимум использовать готовые библиотеки, так как это ускоряет написание программы и разработку в целом.

Только вот ответственность за то дерьмо, которое Вы притащили с визардом и прочими "библиотеками" Вами никакой волшебник не разделит sm.gif. И правильно сделает!
-SANYCH-
Цитата
Только вот ответственность за то дерьмо, которое Вы притащили с визардом и прочими "библиотеками" Вами никакой волшебник не разделит sm.gif. И правильно сделает!


То-есть Вы хотите сказать что все библиотеки которые выкладываются производителями чипов дерьмо. А программы нужно писать самому и с нуля и тогда будет все супер?
VladimirYU
Цитата(-SANYCH- @ Mar 3 2011, 15:16) *
То-есть Вы хотите сказать что все библиотеки которые выкладываются производителями чипов дерьмо. А программы нужно писать самому и с нуля и тогда будет все супер?

Нет же вам этого не говорили, просто использование подобных "волшебников" затеняет понимание сущности, и далеко не всегда генерируемый ими код соответствует требованиям решаемой программистом задачи. По аналогии это непонятного качества полуфабрикат в сравнении с приготовленным самостоятельно продуктом.
-SANYCH-
Цитата
Нет же вам этого не говорили, просто использование подобных "волшебников" затеняет понимание сущности, и далеко не всегда генерируемый ими код соответствует требованиям решаемой программистом задачи. По аналогии это непонятного качества полуфабрикат в сравнении с приготовленным самостоятельно продуктом.


Когда человек впервые программирует контроллер да еще при этом учиться программировать то для этого нужно просто помигать светодиодом или сделать что-то элементарное. И когда с помощью "волшебника" генерированный кот работает с первого раза то потом можно этот код модифицировать и смотреть что и зачем.
Конечно для профессионалов "волшебники" это ненужная фигня на которую они даже не смотрят (для них это сырой полуфабрикат плохого качества).
Вот только я не пойму как эти все волшебники могут затуманить понимание?
zltigo
QUOTE (-SANYCH- @ Mar 3 2011, 15:16) *
То-есть Вы хотите сказать что все библиотеки которые выкладываются производителями чипов дерьмо.

Скажем так, совершенно не являются образчиками приличного программирования, по крайней мере мне не разу не удалось увидеть. "Библиотеки от производителей чипов" становятся все более плохими и их единственная реальная цель закрыть пробелы в документации и errata sad.gif. Возможности железа не описываются и вместо этого выдаются несколько шаблонов на несколько случаев, причем побочные эффекты и накладные расходы за счет использования тоже не документированы. При этом идеальный с точки зрения производителя пользователь кроме всего прочего привязывается к "библиотеке" и мысля только данными ему производителем "кубиками" со страхом думает о том, что придется не то,что думать не кубиками, но даже кубиками от другого производителя, не говоря уже о том, что-бы полностью представлять и контролировать процесс.
QUOTE
А программы нужно писать самому и с нуля и тогда будет все супер?

Если Вы НЕ понимаете, что Вы используете в качестве библиотек, то "писать самому" это на мой взгляд, преждевременное утверждениеsad.gif. Соответственно на никакой "супер" надеяться не приходится. Если ПОНИМАЕТЕ, то скорее всего будете использовать "библиотеки" по минимуму, или вообще не использовать. Вот такое противоречие sad.gif

QUOTE (-SANYCH- @ Mar 3 2011, 17:03) *
Когда человек впервые программирует контроллер да еще при этом учиться программировать то для этого нужно просто помигать светодиодом или сделать что-то элементарное. И когда с помощью "волшебника" генерированный кот работает с первого раза то потом можно этот код модифицировать и смотреть что и зачем.

По разборке машинного творчества бездумного визарда Вы НИКОГДА не поймете "что и зачем". У него другая логика, логика нагенерить кучу однообразного кода по шаблону примерно годящемуся хоть для мигания светодиодом, хоть для WEB интерфейса. Таким образом вместо СОБСТВЕННОРУЧНО НАПИСАННЫХ И ОСОЗНАННЫХ нескольких строк для мигания светодиодом Вы получаете нечто в чем РАЗОБРАТЬСЯ Вам для начала будет не по силам. В результате имеем мигающий светодиод и полное не понимание того, что там визард наделал и зачем, и как это без него дальше жить.
-SANYCH-
А если собственно ручно написанный код на отрез отказывается работать?
На счет визарда в кодевижене я бы не сказал что он генерит запутанный и бездумный код. Там даже комментарии есть.
Новички вот такой код (PORTC=0x05) гораздо лучше понимают чем написанный профессионалом вот такой код (PORTC &=~(1<<PC1)&~(1<<PC2)). Конечно потом они разбираются и приходят к этому но по началу почему-то для них это кажется ужасно запутанно.
zltigo
QUOTE (-SANYCH- @ Mar 3 2011, 17:46) *
А если собственно ручно написанный код на отрез отказывается работать?

Значит надо заставлять. Надо заставлять себя учиться "ходить", а не садиться в инвалидную коляску и заниматься выбором более продвинутых инвалидных колясок.
QUOTE
Конечно потом они....

"Потом" удручающе часто не наступает sad.gif. Если ребенок сразу не научился ходить, говорить, попу подтирать "потом" уже много сложнее.
-SANYCH-
Лично мне хватило два дня для того чтобы спрыгнуть с кодевижена и перейти на иар. А если человек лентяй как по мне то это диагноз rolleyes.gif
zltigo
QUOTE (-SANYCH- @ Mar 3 2011, 18:21) *
Лично мне хватило два дня для того чтобы спрыгнуть с кодевижена и перейти на иар.

Это категорически не попытка какого-то наезда, но если Вы при этом не заметили особой разницы между "похожим на 'C'" языком, и 'C', то это очень странно. И у меня нет никаких других мыслей, кроме той, что для этого надо писать на уж очень ограниченном диалекте языка sad.gif. Я тут недавно вынужденно был использовать даже не псевдоcишный компилятор, а просто замерший в прошлом компилятор для M8C, так очень даже ругался sad.gif. Не два дня ругался, а больше sad.gif. Кстати, предыдущий софт для этой железки был написан с визардом в полный рост - инициализация по многосотбайтным таблицам, более полусотни файлов с потрясающие "нужными" функциями имеющими названия из многих слов, для, например, шевеления пином, записью байта в регистр, чтением байта из регистра и прочим мусором. Отлаживали и отлаживали этот исходник не один год, только железка как-то все зависала и пакетики теряла когда хотела.
-SANYCH-
Я и не говорил что не заметил разницы. Между IAR и GCC тоже есть различия.
zltigo
QUOTE (-SANYCH- @ Mar 3 2011, 21:37) *
Я и не говорил что не заметил разницы. Между IAR и GCC тоже есть различия.

Если без всякой надобности не использовать всякие заложенные разработчиками опять-же для привязки к своему продукту искусственные навороты, то реально обоснованных отличий между компиляторами соответствующих C99 практически нет. Портирование, если надо, то за считанные минуты.
-SANYCH-
Время портирования сильно зависит еще от размера проекта. А без искусственных наворотов часто тяжело обходиться.
zltigo
QUOTE (-SANYCH- @ Mar 3 2011, 22:22) *
Время портирования сильно зависит еще от размера проекта.

Время портирования не зависит от размера проекта, а только от ФАКТА использования какого либо компиляторо-платформенного расширения по разному sad.gif реализованному в компиляторах. Поиск/замена в пределах проекта дело минутное, а иногда и миллисекундное sm.gif.
QUOTE
А без искусственных наворотов часто тяжело обходиться.

Без искусственных - легче легкого, надо просто прилично знать язык, дабы отличать превнесенное от стандартного.
-SANYCH-
а как насчет ассемблерных вставок?
zltigo
QUOTE (-SANYCH- @ Mar 3 2011, 22:43) *
а как насчет ассемблерных вставок?

Ассемблерные вставки моветон, меньший на GCC и безусловный на всех других известных мне компиляторах. Все нужные вещи пишутся на нормальном ASM. Различия в диалектах ассемблеров обычно решаются более-менее на автомате.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.