Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помогите советом!
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
Sewer
Господа, помогите советом по следующим вопросам, пожалуйста! Хочу начать изучение микроконтроллеров AVR, в связи с этим:

1. На каком языке програмирования лучше сосредоточить внимание, Асемблер или С++? Асемблер быстрей, но сложней, С- нагляднее и вроде бы перспективнее, что посоветуете?
2. Изучение МК я хочу начать только с использованием симуляторов ( без работы с "железом" на начальном этапе), это правильный подход для более быстрого обучения?
3. Какие существуют ПО симулирующие работу МК, позволяющие написать программу, отладить ее, симулировать загрузку (компиляцию) в виртуальный МК и далее симулировать рабту МК с этой загруженой программой. Какое ПО можно посоветовать?
4. Существуют ли другие устройства для передачи данных из АЦП в компьютер (частота дискретезации АЦП 1.5кГц, разрядность 8) кроме микроконтроллера? Тоесть может ли АЦП напрямую(либо через какое-либо устройство) работать с каким -либо портом компьютера или обязательно для этого нужен МК?
mempfis_
Цитата
Господа, помогите советом по следующим вопросам, пожалуйста! Хочу начать изучение микроконтроллеров AVR, в связи с этим:

1. На каком языке програмирования лучше сосредоточить внимание, Асемблер или С++? Асемблер быстрей, но сложней, С- нагляднее и вроде бы перспективнее, что посоветуете?


Начинайте с С но в свободное время почитывайте ассемблер (чтобы понимать во что компилятор превращает ваш Сишный код).

Цитата
2. Изучение МК я хочу начать только с использованием симуляторов ( без работы с "железом" на начальном этапе), это правильный подход для более быстрого обучения?


Правильный подход купить mega8535/mega8515/mega8 в dip-корпусе напаять на монтажной плате и собрать простейший программатор STK200.
Вдохновение прийдёт когда увидите как МК заставляе мигать светодиод с помощью написанной вами программы.

Цитата
3. Какие существуют ПО симулирующие работу МК, позволяющие написать программу, отладить ее, симулировать загрузку (компиляцию) в виртуальный МК и далее симулировать рабту МК с этой загруженой программой. Какое ПО можно посоветовать?


AVRStudio (на ассемблере), IAR. В IAR удобно отлаживать подпрограммы не связанные с работой перефирии. Симулировать переферию удобней в AVRStudio.
XVR
К п3 добавлю Proteus
Lmx2315
..удобнее всего в CodeVisionAVR , в ней мастер сам за новичка выполняет первоначальную инициализацию всего что нужно - остаётся только свой код вписать и всё.
DpInRock
Никаких CodeVisionov!!!
Даташит, Си, живой контроллер ATMEGA48, программатор на проводочках. И пара кнопок и пара светодиодов и один динамик.
IAR - как среда существования.
Ассемблер - знаю несколько систем команд для разных процессоров. Но так получилось, что для AVR руки не дошли глянуть даже на нее. Чисто так получилось. Даже точно не скажу сколько у него регистров (примерно только скажу).
Т.е. - обойтись вполне можно. Си стал круче бублика в этом плане.
haker_fox
Цитата(Sewer @ Apr 1 2010, 16:05) *
1. На каком языке програмирования лучше сосредоточить внимание, Асемблер или С++? Асемблер быстрей, но сложней, С- нагляднее и вроде бы перспективнее, что посоветуете?

Если это Ваш первый МК, то начните с ассемблера. Изучите архитектуру микроконтроллера. Программирование на ассемблере поможет в этом.
Если Вы уже знаете какой-либо МК, можно и с Си стартовать. Хотя я бы посоветовал даже Си++.
Цитата(Sewer @ Apr 1 2010, 16:05) *
2. Изучение МК я хочу начать только с использованием симуляторов ( без работы с "железом" на начальном этапе), это правильный подход для более быстрого обучения?

Не совсем правильный подход. Начать можно и с симулятора, но сильно увлекаться им не нужно. Пока паяете макетку с микроконтроллером, можете работать с симулятором. После того, как сделаете плату, симулятор может служить лишь как вспомогательный инструмент, который поможет разобраться как работает программа. Постепенно от симулятора придется уйти и использовать другие средства отладки (мигание светодиодом, вывод информации через последовательный порт и т.п.), но это отдельная тема.
Цитата(Sewer @ Apr 1 2010, 16:05) *
3. Какие существуют ПО симулирующие работу МК, позволяющие написать программу, отладить ее, симулировать загрузку (компиляцию) в виртуальный МК и далее симулировать рабту МК с этой загруженой программой. Какое ПО можно посоветовать?

Для AVR берите бесплатную AVR Studio с www.atmel.com
Цитата(Sewer @ Apr 1 2010, 16:05) *
4. Существуют ли другие устройства для передачи данных из АЦП в компьютер (частота дискретезации АЦП 1.5кГц, разрядность 8) кроме микроконтроллера? Тоесть может ли АЦП напрямую(либо через какое-либо устройство) работать с каким -либо портом компьютера или обязательно для этого нужен МК?

Может. Например с LPT.

А Вы чего хотите получить в результате?
Sewer
Большое спасибо за ответы, не ожидал такого хорошего отношения.
Цитата(haker_fox @ Apr 2 2010, 06:55) *
А Вы чего хотите получить в результате?

Хочу получить оцифрованый сигнал в виде удобном для его дальнейшей обработки с помощью LabView- т.е. в в память компьютера. Просто на выходе АЦП, как я понял, сигнал не похож ни на RS 232 ни на 485. Т.е. в моем случае МК работает преобразователем интерфейса между АЦП и портом компьютера. Вообще МК, как я понимаю, целесообразно использовать не для этих целей, а тогда, когда есть управление какой-либо перефирией. Мало того, я буду ограничен в скорости преобразований АЦП еще и быстродействием самого МК. Т.е. АЦП, как я понимаю, может работать на частоте превышающей частоту МК. И в этом случае МК исзодя из своей рабочей частоты будет запускать и останавливать АЦП. Т.е. МК будет звеном задающим скорость преобразований, а не АЦП. Исходя из всего этого, возможно, мне не нужен МК для этой цели, а нужно другое устройство, о котором я не знаю.

Сейчас ищу литературу по асемблеру, как я понял, версия асемблера должна быть совместима с AVR, как мне правильно выбрать книгу по асемблеру?
ILYAUL
Цитата(Sewer @ Apr 2 2010, 06:58) *
Сейчас ищу литературу по асемблеру, как я понял, версия асемблера должна быть совместима с AVR, как мне правильно выбрать книгу по асемблеру?

"Практическое программирование AVR на ASM" - есть такая
Палыч
Цитата(Sewer @ Apr 1 2010, 10:05) *
Господа, помогите советом по следующим вопросам, пожалуйста!

1. Лучше сосредоточить внимание на С (но - не на С++ - ИМХО, для микроконтроллеров С++ - это, зачастую, слишком высокий уровень языка). Параллельно - ассемблер (не обязательно чтобы на нём писать программы, даже, скорее, чтобы НЕписать на нём прогараммы - но(!), чтобы понимать возможности AVR).
2. Симуляторы - это дешёвый подход к изучению МК, но лучше, всё-таки, - "в железе" (т.е. собрать макетку и JTAG+AVRStudio).
3. Для симуляции МК AVR - однозначно: AVRStudio.
4. Наверное, и сами сможите ответить на этот вопрос (достаточно посмотреть на внешние разъёмы компьютера и положить перед собой документацию на выбранные Вами АЦП).
Lmx2315
Цитата
Никаких CodeVisionov!!!


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

CodeVision + Proteus - для начала хватит , но конечно всё равно обязательно нужно купить или собрать живую плату , симуляторы могут и глючить.
SasaVitebsk
Цитата(Lmx2315 @ Apr 2 2010, 12:17) *
..не слушайте их , пока разгребёте как сконфигурировать уарт, ацп и и принять что-нибудь осмысленное , пропадёт желание изучать МК .
Ставьте CodeVision , получайте первые положительные эмоции от живого общения с МК . А потом можно и внутрь нырять , с головой.

CodeVision + Proteus - для начала хватит , но конечно всё равно обязательно нужно купить или собрать живую плату , симуляторы могут и глючить.

Не проецируйте свой уровень интелекта на другого человека.

Осмыслить любой узел грамотного даташита на МК - 15-20 минут. Зато сразу очевидны все возможности данного узла. Это понадобится не только и не столько для данного проекта, сколько вообще. Это гарантия, что следующее изделие будет спроектировано сразу с пониманием самого МК. Только один таймер можно инициализировать десятками способов. Сколько мы видем постов, что люди не имеют ни малейшего понимания его работы? "Как запрограммировать таймер, чтобы измерить частоту?" - такие вопросы просто поражают. 15 минут чтения - и вы будете сами давать советы! А если пользоваться визардом, то будете постоянным участником раздела "начинающие".

Не облегчайте себе жизнь, а то добъётесь обратного эффекта. Это касается визардов, симуляторов, генераторов кода и прочей синтетической хрени. Помните, что успешный сэкс с резиновой женщиной не поможет вам стать любимцем женщин.
smile.gif
Палыч
Цитата(DpInRock @ Apr 1 2010, 15:35) *
Никаких CodeVisionov!!!

Цитата(Lmx2315 @ Apr 2 2010, 12:17) *
..не слушайте их ... Ставьте CodeVision ...

Присоединюсь к противникам CodeVision.
К сожалению, стандарт языка С не учитывает особенностей МК, поэтому в разных трансляторах реализованы расширения языка С. Зачастую программы написанные для одного транслятора не понимаются другим транслятором. Среди трансляторов - лидер IAR (его, наверное, и следует пробовать, хотя для новичка - несколько тяжеловат). Если Ваше изучение AVR не предпологает поверхностное его изучение (т.е. для профессионального использования, или для любительского, но с профессиональным качеством), то CodeVision с его визардом - огромный вред! Кроме того, через некоторое врямя (как накопится некоторое количество проектов) перейти на другой транслятор становится большой проблемой (это - уже по собственному опыту...).
Lmx2315
Цитата(SasaVitebsk @ Apr 2 2010, 13:49) *
Не проецируйте свой уровень интелекта на другого человека.


..я не считаю окружающих глупее себя , вам такой манеры поведения не навязываю .
demiurg_spb
Цитата(Lmx2315 @ Apr 2 2010, 14:31) *
..я не считаю окружающих глупее себя , вам такой манеры поведения не навязываю .
Давать оценки другим это конечно же чревато разными последствиями...
Но CV-это не то на чём стоит начинать изучать Си.
Да. Для того чтобы посмотреть "C чего начинается Родина" это сойдёт, но не более.
0b11011110
Лично для меня изучение контроллеров начиналось с "ОЧЕНЬ ВЫСОКОГО" языка програмирования, такого как С++ для ARDUINO. sm.gif
Постпенно при работе с этим языком начинаешь понимать всю ограниченность своих знаний, в процессе усложнения Ваших запросов к конкретному микроконтроллеру. И тут наступает такой момент, когда выше бежать уже некуда, а поставленная задача требует решения. Что тут тогда остаётся делать???
Ответ тут только один. Спускаться сразу в подвал и изучать механизм работы вашего контроллера.
В этом вам поможет ни всякие конструкторы вроде VB и т.п. а наш старый добрый "голый ASM".
Вооружившсь парой-тройкой рускоязычных книжек по програмированию AVR на ASM, AVRstudio, терпением, усидчивостью и большим количеством времени я не сомневаюсь Вы достигните успеха! ИМХО! sm.gif
zltigo
QUOTE (Lmx2315 @ Apr 2 2010, 11:17) *
CodeVision

Поделка типа протезов для инвалидов умственного труда sad.gif
QUOTE (Sewer @ Apr 2 2010, 04:58) *
Хочу получить оцифрованый сигнал ...

Сдается мне, что волшебных букв AVR может и близко не хватить для оцифровки с приличными разрядностью и частотой дискретизации. Огласите желаемый поток.
=GM=
Цитата(Sewer @ Apr 1 2010, 06:05) *
4. Существуют ли другие устройства для передачи данных из АЦП в компьютер (частота дискретизации АЦП 1.5кГц, разрядность 8) кроме микроконтроллера?

Для таких частот дискретизации можно обойтись одним компьютером с программой на си, но на авр можно получить и 5 Мвыборок/с для 16-битного АЦП, если писать на асме. Так что думайте сами, решайте сами...

(Посоветую вам сменить ник пока не поздно, по-английски звучит не очень)
haker_fox
Господа, мы обсуждаем тему годовалой давности...

QUOTE (0b11011110 @ Aug 3 2011, 19:24) *
И тут наступает такой момент, когда выше бежать уже некуда, а поставленная задача требует решения. Что тут тогда остаётся делать???

Ответ один: менять микроконтроллер на более мощный laughing.gif
Это я к тому, что видео на AVR на ассемблере конечно обрабатывать можно, но не лучше ли взять подходящий по аппаратным возможностям МК и писать программу на Си/Си++. Учитывая, что современные компиляторы выдают очень даже неплохой код, то выигрыш от ручного кодирования - сомнительный.
Естественно, есть исключения. Но в общем я бы советовал не ограничиваться одной архитектурой и семейством МК. Их много сейчас.

Хотя надо признаться сам дальше AVR не особо вырвался))) С ARM'ом разве что пришлось повозиться. Но у меня и задачи-то пока не требуют суперскалярного вычислителя laughing.gif
0b11011110
Цитата(haker_fox @ Aug 4 2011, 20:14) *
Ответ один: менять микроконтроллер на более мощный laughing.gif

"Зачем оптимизировать код??? давайте наращивать мясо!!!"
Ага! sm.gif так и до "20ядерного сжирающего 80гб озу микроконтроллера" недалеко! sm.gif
haker_fox
QUOTE (0b11011110 @ Aug 5 2011, 15:31) *
"Зачем оптимизировать код??? давайте наращивать мясо!!!"

Вы невнимательно прочитали мой ответ!
QUOTE
Учитывая, что современные компиляторы выдают очень даже неплохой код, то выигрыш от ручного кодирования - сомнительный.
Естественно, есть исключения. Но в общем я бы советовал не ограничиваться одной архитектурой и семейством МК. Их много сейчас.

QUOTE (0b11011110 @ Aug 5 2011, 15:31) *
"Зачем оптимизировать код??? давайте наращивать мясо!!!"

Оптимизируйте! Оптимизируйте исходники на ЯВУ. Перевод программы с ЯВУ на язык низкого уровня не есть оптимизиация. Скорее всего это повод задуматься, что что-то делается не так. Некоторые критические ко времени исполнения участки кода (например прерывания) можно и на ассемблере написать. Именно эти исключения я и имел в виду выше.
QUOTE (0b11011110 @ Aug 5 2011, 15:31) *
Ага! sm.gif так и до "20ядерного сжирающего 80гб озу микроконтроллера" недалеко! sm.gif

Ну для инеженерных расчтетов (см. CAE-системы) иной раз и кластеров, обладающих указанными Вами характеристиками, недостаточно. Так что все может быть.

А вообще тема к офф-топу скатывается. Предлагаю модераторам ее закрыть или участникам воздержаться от дальнейших дискуссий на тему ASM vs. C/C++.

0b11011110, только сейчас заметил откуда Вы! Привет земляку, так сказать! Мимо Вашего города проезжал не раз, а вот в нем не был(
0b11011110
Я не до конца выразил свою мысль...
сразу по делу:
Тема поста: что выбрать новичку? ASM или С? (т.е. мы не оффтопим не в коеей мере.)
- Я не хочу сравнивать С и ASM, делают это только ленивые недоучки! по хорошему лучше знать оба языка. здесь другого не дано. по асм гораздо проще понять как работает ядро, а в свою очередь без понимания работы ядра не поймёшь, что и как нужно ПРАВИЛЬНО делать на С.
я например не вижу никакой разницы на чём писать на С или на АСМ. У меня в коде асма почти все коментарии к макросам написаны на С, всё описание работы логики программы - тоже на С. но нивичку же нужно начинать изучение с АСМ, не так он сложен как кажется.

тема закрыта.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.