С чего начать программировать микроконтроллеры?

Здесь принимаются все самые невообразимые вопросы... Главное - не стесняйтесь. Поверьте, у нас поначалу вопросы были еще глупее :)
АСУ
Друг Кота
Сообщения: 3342
Зарегистрирован: Ср янв 02, 2013 08:37:35

Re: С чего начать программировать микроконтроллеры?

Сообщение АСУ »

dosikus писал(а):АСУ, поменьше эмоций.

Ни каких эмоций… ИМХО. называть человека дураком, только потому, что ему не нравятся те или иные контроллеры – по меньшей мере глупо…
Аватара пользователя
Stupid
Опытный кот
Сообщения: 779
Зарегистрирован: Пт дек 26, 2014 09:14:33
Откуда: K-PAX

Re: С чего начать программировать микроконтроллеры?

Сообщение Stupid »

НЕ Я его обозвал "народным" ! Но я солидарен с таким названием! И отвечать не вижу смисла, это мое мнение и я тут никого не собираюсь переубеждать, дабы не выглядеть
dosikus писал(а): глупо
и не попасть под репрессии администрации...за оффтоп
Я играю дураков, поэтому меня везде воспринимают как родного.
©Савелий Крамаров.
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

Re: С чего начать программировать микроконтроллеры?

Сообщение Alexeyslav »

Не частоты надо сравнивать, а быстродействие. в ПИК-ах частота делится на 4 и инструкции выполняются за 4 такта, правда за счет конвеера достигается производительность 1 инструкция на 2 такта, у АВР большинство инструкций выполняются за 1 такт т.е. производительтность имеем 1MIPS/МГц. PIC-и просто как более древняя архитектура обросли многочисленными костылями из-за того что заранее не позаботились о масштабируемости архитектуры - отсюда страничная память, банки регистров... и нельзя забывать о 32-х замечательных универсальных регистрах у АВР, в ПИК-ах приходится плясать вокруг единственного аккумулятора. Порой, прошивка обходится использованием лишь регистров.
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Re: С чего начать программировать микроконтроллеры?

Сообщение COKPOWEHEU »

У AVR точно так же конвейер, только вроде на 2 инструкции а не на 4. И это упоминается в командах условного перехода.
Насчет 32 регистров против страничной организации памяти могу лишь предполагать.
PIC расчитан на активное использование ОЗУ и работает с ним напрямую, разве что операции ОЗУ-ОЗУ недоступны. Соответственно, чтобы адресация нужной ячейки не занимала слишком много кода, старшая часть была вынесена в адрес банка, а младшая - в команду или регистр. Много в 14-битную (или сколько там) команду не влезает, откуда размер банка. Ну и регистры переферии перемешали с ОЗУ чтобы опять-таки не переключать банки слишком часто.
В то же время у AVR память это переферия, и контроллер может работать без нее вообще. Зато доступ гораздо дольше, 3 команды вместо 1-2. Из операций с памятью только чтение и запись, никакого сложения и прочего. И 32 РОН не всегда хорошо: долго сохранять их в прерывании, а использовать вместо них ОЗУ еще дольше. Кстати о расширяемости архитектуры и костылях, в AVR они тоже встречаются. Например, адреса переферии в m168 поделены между РВВ и ОЗУ. Причем ладно бы вынесли в ОЗУ регистры настроек, которые меняются редко, UART там или Timer, а в РВВ оставили регистры данных UDR, OCRx, так нет, тупо поделили переферию на 2 части.
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

Re: С чего начать программировать микроконтроллеры?

Сообщение Alexeyslav »

Конвеер, позволяющий достичь производительности почти 1MIPS/Mhz(если весь код не будет состоять из инструкций перехода). Инструкции исполняются 1 такт выборка/1 такт исполнение с конвеером получается на линейных участках кода разогнаться до 1 инструкции за такт. PIC выполняет инструкции 4 такта выборка/4 такта исполнение и точно так же конвееризируется выполнение - достигается скорость исполнения 4 такта на инструкцию на линейных участках. Но за счет того что инструкции более тяжелые реальное быстродействие несколько выше - одна инструкция PIC делает в целом больше работы чем одна инструкция AVR. Но все равно не дотягивает.

Если в прерывании происходит настолько тяжелая работа что требует сохранения всех регистров - то время их сохранения будет наименьшей из проблем. Но и таких случаях используется стек и теряется лишь по 2 такта на сохранение одного регистра и 2 такта на восстановление. В любом случае, на доступ к ячейке памяти тратится меньше тактов чем у PIC. А если идет обработка массивов ячеек в памяти с использованием индексного регистра - PIC-ам такая скорость и не снилась. Именно в таких случаях и нужно большее быстродействие нежели при обращении к одиночным ячейкам памяти.
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: С чего начать программировать микроконтроллеры?

Сообщение dosikus »

Alexeyslav писал(а): PIC-ам такая скорость и не снилась

Вместо голословных надумок советую просмотреть что есть например в :

PIC18F14K50 (C Compiler Optimized Architecture)
Enhanced PIC12
Enhanced PIC16.

А не сравнивать супер-пупер-мега/атмега с со старьем .
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Re: С чего начать программировать микроконтроллеры?

Сообщение COKPOWEHEU »

С каких это пор ATmega8, младшая среди мег, является супер-пупер? Сравнивать ее с PIC, оборудованном USB, несколько некорректно. Про 2,5 кратную разницу цен лучше промолчать.
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: С чего начать программировать микроконтроллеры?

Сообщение oleg110592 »

Enhanced пики сейчас подтянулись к мегам, в том числе и по цене, например без USB:
PIC16F1934 Enhanced Mid-range Core with 49 Instruction, 16 Stack Levels
* 96 LCD segment drive support
* Internal 32MHz oscillator
* Timers 4 x 8-bit, 1 x 16-bit
* Digital Communication Peripherals 1-UART, 1-A/E/USART, 1-SPI, 1-I2C1-MSSP(SPI/I2C)
* Cap Touch Channels 16
* Temperature Range (C) -40 to 125

в корпусе TQFP-44L цена 1.3150$ от 600шт. в Компэле
ATmega8-16AU в корпусе TQFP-32 там дороже - 1.3381$ от 600 шт.

можно еще глянуть на возможности STM32F030R8T6, там же по цене 0.9139$ от 600шт.
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Re: С чего начать программировать микроконтроллеры?

Сообщение COKPOWEHEU »

А насколько часто он используется в любительских поделках? Это не риторический вопрос, правда не знаю. По AVR самые популярные это ATmega8 (привычка, наверное), ATmega328 (за счет ардуины), ATtiny2313, ATmega16/32, остальные реже.
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: С чего начать программировать микроконтроллеры?

Сообщение oleg110592 »

думаю не часто, потому что, к появлению Enhanced PIC16 уже были лучшее и перспективнее микроконтроллеры. Просто хотел сказать, что Enhanced PIC16 сейчас в принципе не хуже AVRов, а наличие отсутствия фузов, из-за которых очень часто возникают проблемы у начинающих на AVR, делают их (Enhanced PIC16) более удобными для освоения. В данное время, имхо, лучше начинать не с PIC (даже Enhanced) и не с AVR.
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Re: С чего начать программировать микроконтроллеры?

Сообщение COKPOWEHEU »

А с Си под ПК. Можно еще ассемблер под него же, но ИМХО это слишком жестоко.
Если не PIC и не AVR, то какой контроллер с достаточно прозрачной архитектурой рекомендуете? По мне так основная прелесть контроллера - понимание принципа функционирования любой ЭВМ, заполнение промежутка между дискретной логикой и вычислительными машинами.
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

Re: С чего начать программировать микроконтроллеры?

Сообщение Alexeyslav »

Как раз с этих контроллеров и надо начинать т.к. они имеют максимальное количество шансов в воплощение в железе полезной для хозяйства схемы в домашних условиях. Собственно, наверно это и стало успехом PIC16F84 среди радиолюбителей. STM32 и уж темболее ARM-ы довольно требовательны к разводке платы и технологическим нормам - дома на коленке будет весьма трудно сделать что-либо полезное, а вечно изучать отладочные платы никто не будет, хотя на них можно сделать много чего интересного но куча проводов это несерьёзно. Заказывать платы в китае - тоже не так уж и заманчиво, особенно если возможны ошибки.
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Re: С чего начать программировать микроконтроллеры?

Сообщение Ser60 »

COKPOWEHEU писал(а):какой контроллер с достаточно прозрачной архитектурой рекомендуете?

Я всем начинающим рекомендую MSP430. А насчет плат под ARM, сейчас имеются ARMы в малоногиx корпусах и с бOльшим шагом, например те-же STM32F030.
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: С чего начать программировать микроконтроллеры?

Сообщение oleg110592 »

Alexeyslav писал(а): STM32 и уж темболее ARM-ы довольно требовательны к разводке платы и технологическим нормам - дома на коленке будет весьма трудно сделать что-либо полезное

Делали утюгом, разводил так же как и AVRы, это пробный макет, работает без сбоев на производстве, помехи присутствуют:
СпойлерИзображение
Изображение

динамическая индикация без прерываний и участия ядра, через DMA - это здорово (имхо).
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Re: С чего начать программировать микроконтроллеры?

Сообщение COKPOWEHEU »

Ничего не могу сказать. Из недостатков, обнаруженных при беглом просмотре даташита, неудобный корпус (развести и изготовить плату под SMD хоть и не трудно, но требуется опыт и какое-никакое оборудование), Не нашел в даташите списка команд с временем их выполнения.
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

Re: С чего начать программировать микроконтроллеры?

Сообщение Alexeyslav »

Утюгом развести 0.5мм шаг выводов не у всех выходит. Очень долго надо подбирать принтер, бумагу и отлаживать процесс отутюживания платы чтобы влезть в норму хотябы 0.5мм, иногда редким счастливчикам везет и нужная комбинация находится сразу, однако это сродни шаманству.
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Re: С чего начать программировать микроконтроллеры?

Сообщение Ser60 »

COKPOWEHEU писал(а):неудобный корпус

Я полагаю имелось в виду MSP (?) Если так, то "народная" модель MSP430G2553 имеется даже в DIP-е. Но чем быстрее перейдёте на SMD, тем больше дверей откроется в плане комплектации. У семейства G2xxx SMD корпуса TSSOP имеют шаг 0.65 мм, а многие из семейства F2xxx выпускаются в SOIC с шагом 1.27 мм.

COKPOWEHEU писал(а):Не нашел в даташите списка команд с временем их выполнения.

Описание команд см. в User Guide на семейство для обоих типов CPU (MSP430 либо MSP430X). Вкратце, время исполнения (см. там-же) зависит от режима адресации и, например, для команд с двумя операндами варьируется от 1 цикла (если оба операнда в регистрах) до 6 циклов (если оба операнда в памяти).

Список команд ARM с временами исполнения см. на вебсайте ARM. Как правило, он не включается в ДШ или RM производителями. Кстати, шаг выводов у STM32F030 в корпусе TSSOP - 0.65 мм, а в корпусе LQFP32 - так вообще 0.8.
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: С чего начать программировать микроконтроллеры?

Сообщение oleg110592 »

MSP430 почему то не стал в СНГ "народным", хотя должен был - LaunchPad 430 раньше можно было заказать за 4.30$, теперь стоит 10$(все равно не дорого за отладчик программатор + 2 микроконтроллера и USB кабель) . Можно глянуть как заграничные любители делают поделки без всякой пайки:
https://www.youtube.com/watch?v=NJHCcKLHL8E#t=168
сайт его поделок: http://www.simpleavr.com/msp430-projects/ , интересно что сайт называется "simpleavr" - начинал с AVR
в msp430 нет такого разнобоя в периферии как в AVR - все совместимо снизу вверх. msp430 фирма продолжает развивать - в старших моделях присутствует DMA и много чего другого. А AVR развитие что то тормозит - в этом году будут улучшенные ATmega48PB/88PB/168PB.
Из улучшений:
улучшена точность внутреннего генератора - UART можно без кварца
улучшен внутренний Vref для АЦП
ДИП корпуса не будет
если автор не против, msp430 местная ссылка: http://radiokot.ru/circuit/digital/measure/71/
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Re: С чего начать программировать микроконтроллеры?

Сообщение COKPOWEHEU »

Мы же обсуждаем контроллер для новичков, а не меня. Не спорю, что получить шаг 0.5мм и меньше вполне реально, но для этого нужен опыт. Мои первые платки были процарапаны резаком по текстолиту, потом был маркер. Для таких ручных способов DIP гораздо лучше подходит.
Еще очень важно наличие готовых обучающих статей, примеров и устройств. Не спорю, что для MSP это есть, но под AVR и PIC их больше, достаточно глянуть список подфорумов на этом сайте.
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: С чего начать программировать микроконтроллеры?

Сообщение oleg110592 »

чтоб начать изучать AVR или PIC новичку будет необходимо спаять программатор (купить дорого). Т.к. COM и LPT отсутствует сейчас в большинстве ПК, особенно ноутбуках и планшетах. Придется паять USB программатор - там микроконтроллер, его надо прошить, возникает проблема курицы и яйца. Для AVR новичку, тоже судя по подфорумам, еще сразу же понадобится фуз доктор (там тоже микроконтроллер). Зачем, если в каждой лавченке теперь продаются достаточно недорогие отладочные платы со встроенным программатором и он же отладчик. Отладчик для начинающего будет весьма полезен в освоении.
Наличие готовых обучающих статей, примеров и устройств, по моему мнению, в большинстве случаев только вредит новичку - эти статьи и пр. сделаны в основном не профессионалами. Для новичка, уже где то писал, вполне достаточно родной документации. Некоторые новички начинали начинать :) в то время когда и интернета не было, соответственно и статей и пр, был только CD от производителя.
Ответить

Вернуться в «Теория»