Ни каких эмоций… ИМХО. называть человека дураком, только потому, что ему не нравятся те или иные контроллеры – по меньшей мере глупо…dosikus писал(а):АСУ, поменьше эмоций.
С чего начать программировать микроконтроллеры?
Re: С чего начать программировать микроконтроллеры?
- Реклама
Re: С чего начать программировать микроконтроллеры?
НЕ Я его обозвал "народным" ! Но я солидарен с таким названием! И отвечать не вижу смисла, это мое мнение и я тут никого не собираюсь переубеждать, дабы не выглядеть
и не попасть под репрессии администрации...за оффтопdosikus писал(а): глупо
Я играю дураков, поэтому меня везде воспринимают как родного.
©Савелий Крамаров.
©Савелий Крамаров.
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: С чего начать программировать микроконтроллеры?
Не частоты надо сравнивать, а быстродействие. в ПИК-ах частота делится на 4 и инструкции выполняются за 4 такта, правда за счет конвеера достигается производительность 1 инструкция на 2 такта, у АВР большинство инструкций выполняются за 1 такт т.е. производительтность имеем 1MIPS/МГц. PIC-и просто как более древняя архитектура обросли многочисленными костылями из-за того что заранее не позаботились о масштабируемости архитектуры - отсюда страничная память, банки регистров... и нельзя забывать о 32-х замечательных универсальных регистрах у АВР, в ПИК-ах приходится плясать вокруг единственного аккумулятора. Порой, прошивка обходится использованием лишь регистров.
- COKPOWEHEU
- Говорящий с текстолитом
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Re: С чего начать программировать микроконтроллеры?
У AVR точно так же конвейер, только вроде на 2 инструкции а не на 4. И это упоминается в командах условного перехода.
Насчет 32 регистров против страничной организации памяти могу лишь предполагать.
PIC расчитан на активное использование ОЗУ и работает с ним напрямую, разве что операции ОЗУ-ОЗУ недоступны. Соответственно, чтобы адресация нужной ячейки не занимала слишком много кода, старшая часть была вынесена в адрес банка, а младшая - в команду или регистр. Много в 14-битную (или сколько там) команду не влезает, откуда размер банка. Ну и регистры переферии перемешали с ОЗУ чтобы опять-таки не переключать банки слишком часто.
В то же время у AVR память это переферия, и контроллер может работать без нее вообще. Зато доступ гораздо дольше, 3 команды вместо 1-2. Из операций с памятью только чтение и запись, никакого сложения и прочего. И 32 РОН не всегда хорошо: долго сохранять их в прерывании, а использовать вместо них ОЗУ еще дольше. Кстати о расширяемости архитектуры и костылях, в AVR они тоже встречаются. Например, адреса переферии в m168 поделены между РВВ и ОЗУ. Причем ладно бы вынесли в ОЗУ регистры настроек, которые меняются редко, UART там или Timer, а в РВВ оставили регистры данных UDR, OCRx, так нет, тупо поделили переферию на 2 части.
Насчет 32 регистров против страничной организации памяти могу лишь предполагать.
PIC расчитан на активное использование ОЗУ и работает с ним напрямую, разве что операции ОЗУ-ОЗУ недоступны. Соответственно, чтобы адресация нужной ячейки не занимала слишком много кода, старшая часть была вынесена в адрес банка, а младшая - в команду или регистр. Много в 14-битную (или сколько там) команду не влезает, откуда размер банка. Ну и регистры переферии перемешали с ОЗУ чтобы опять-таки не переключать банки слишком часто.
В то же время у AVR память это переферия, и контроллер может работать без нее вообще. Зато доступ гораздо дольше, 3 команды вместо 1-2. Из операций с памятью только чтение и запись, никакого сложения и прочего. И 32 РОН не всегда хорошо: долго сохранять их в прерывании, а использовать вместо них ОЗУ еще дольше. Кстати о расширяемости архитектуры и костылях, в AVR они тоже встречаются. Например, адреса переферии в m168 поделены между РВВ и ОЗУ. Причем ладно бы вынесли в ОЗУ регистры настроек, которые меняются редко, UART там или Timer, а в РВВ оставили регистры данных UDR, OCRx, так нет, тупо поделили переферию на 2 части.
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: С чего начать программировать микроконтроллеры?
Конвеер, позволяющий достичь производительности почти 1MIPS/Mhz(если весь код не будет состоять из инструкций перехода). Инструкции исполняются 1 такт выборка/1 такт исполнение с конвеером получается на линейных участках кода разогнаться до 1 инструкции за такт. PIC выполняет инструкции 4 такта выборка/4 такта исполнение и точно так же конвееризируется выполнение - достигается скорость исполнения 4 такта на инструкцию на линейных участках. Но за счет того что инструкции более тяжелые реальное быстродействие несколько выше - одна инструкция PIC делает в целом больше работы чем одна инструкция AVR. Но все равно не дотягивает.
Если в прерывании происходит настолько тяжелая работа что требует сохранения всех регистров - то время их сохранения будет наименьшей из проблем. Но и таких случаях используется стек и теряется лишь по 2 такта на сохранение одного регистра и 2 такта на восстановление. В любом случае, на доступ к ячейке памяти тратится меньше тактов чем у PIC. А если идет обработка массивов ячеек в памяти с использованием индексного регистра - PIC-ам такая скорость и не снилась. Именно в таких случаях и нужно большее быстродействие нежели при обращении к одиночным ячейкам памяти.
Если в прерывании происходит настолько тяжелая работа что требует сохранения всех регистров - то время их сохранения будет наименьшей из проблем. Но и таких случаях используется стек и теряется лишь по 2 такта на сохранение одного регистра и 2 такта на восстановление. В любом случае, на доступ к ячейке памяти тратится меньше тактов чем у PIC. А если идет обработка массивов ячеек в памяти с использованием индексного регистра - PIC-ам такая скорость и не снилась. Именно в таких случаях и нужно большее быстродействие нежели при обращении к одиночным ячейкам памяти.
- Реклама
Re: С чего начать программировать микроконтроллеры?
Вместо голословных надумок советую просмотреть что есть например в :Alexeyslav писал(а): PIC-ам такая скорость и не снилась
PIC18F14K50 (C Compiler Optimized Architecture)
Enhanced PIC12
Enhanced PIC16.
А не сравнивать супер-пупер-мега/атмега с со старьем .
- COKPOWEHEU
- Говорящий с текстолитом
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Re: С чего начать программировать микроконтроллеры?
С каких это пор ATmega8, младшая среди мег, является супер-пупер? Сравнивать ее с PIC, оборудованном USB, несколько некорректно. Про 2,5 кратную разницу цен лучше промолчать.
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: С чего начать программировать микроконтроллеры?
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шт.
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: С чего начать программировать микроконтроллеры?
А насколько часто он используется в любительских поделках? Это не риторический вопрос, правда не знаю. По AVR самые популярные это ATmega8 (привычка, наверное), ATmega328 (за счет ардуины), ATtiny2313, ATmega16/32, остальные реже.
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: С чего начать программировать микроконтроллеры?
думаю не часто, потому что, к появлению Enhanced PIC16 уже были лучшее и перспективнее микроконтроллеры. Просто хотел сказать, что Enhanced PIC16 сейчас в принципе не хуже AVRов, а наличие отсутствия фузов, из-за которых очень часто возникают проблемы у начинающих на AVR, делают их (Enhanced PIC16) более удобными для освоения. В данное время, имхо, лучше начинать не с PIC (даже Enhanced) и не с AVR.
- COKPOWEHEU
- Говорящий с текстолитом
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Re: С чего начать программировать микроконтроллеры?
А с Си под ПК. Можно еще ассемблер под него же, но ИМХО это слишком жестоко.
Если не PIC и не AVR, то какой контроллер с достаточно прозрачной архитектурой рекомендуете? По мне так основная прелесть контроллера - понимание принципа функционирования любой ЭВМ, заполнение промежутка между дискретной логикой и вычислительными машинами.
Если не PIC и не AVR, то какой контроллер с достаточно прозрачной архитектурой рекомендуете? По мне так основная прелесть контроллера - понимание принципа функционирования любой ЭВМ, заполнение промежутка между дискретной логикой и вычислительными машинами.
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: С чего начать программировать микроконтроллеры?
Как раз с этих контроллеров и надо начинать т.к. они имеют максимальное количество шансов в воплощение в железе полезной для хозяйства схемы в домашних условиях. Собственно, наверно это и стало успехом PIC16F84 среди радиолюбителей. STM32 и уж темболее ARM-ы довольно требовательны к разводке платы и технологическим нормам - дома на коленке будет весьма трудно сделать что-либо полезное, а вечно изучать отладочные платы никто не будет, хотя на них можно сделать много чего интересного но куча проводов это несерьёзно. Заказывать платы в китае - тоже не так уж и заманчиво, особенно если возможны ошибки.
Re: С чего начать программировать микроконтроллеры?
Я всем начинающим рекомендую MSP430. А насчет плат под ARM, сейчас имеются ARMы в малоногиx корпусах и с бOльшим шагом, например те-же STM32F030.COKPOWEHEU писал(а):какой контроллер с достаточно прозрачной архитектурой рекомендуете?
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: С чего начать программировать микроконтроллеры?
Делали утюгом, разводил так же как и AVRы, это пробный макет, работает без сбоев на производстве, помехи присутствуют:Alexeyslav писал(а): STM32 и уж темболее ARM-ы довольно требовательны к разводке платы и технологическим нормам - дома на коленке будет весьма трудно сделать что-либо полезное
Спойлер


- COKPOWEHEU
- Говорящий с текстолитом
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Re: С чего начать программировать микроконтроллеры?
Ничего не могу сказать. Из недостатков, обнаруженных при беглом просмотре даташита, неудобный корпус (развести и изготовить плату под SMD хоть и не трудно, но требуется опыт и какое-никакое оборудование), Не нашел в даташите списка команд с временем их выполнения.
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: С чего начать программировать микроконтроллеры?
Утюгом развести 0.5мм шаг выводов не у всех выходит. Очень долго надо подбирать принтер, бумагу и отлаживать процесс отутюживания платы чтобы влезть в норму хотябы 0.5мм, иногда редким счастливчикам везет и нужная комбинация находится сразу, однако это сродни шаманству.
Re: С чего начать программировать микроконтроллеры?
Я полагаю имелось в виду MSP (?) Если так, то "народная" модель MSP430G2553 имеется даже в DIP-е. Но чем быстрее перейдёте на SMD, тем больше дверей откроется в плане комплектации. У семейства G2xxx SMD корпуса TSSOP имеют шаг 0.65 мм, а многие из семейства F2xxx выпускаются в SOIC с шагом 1.27 мм.COKPOWEHEU писал(а):неудобный корпус
Описание команд см. в User Guide на семейство для обоих типов CPU (MSP430 либо MSP430X). Вкратце, время исполнения (см. там-же) зависит от режима адресации и, например, для команд с двумя операндами варьируется от 1 цикла (если оба операнда в регистрах) до 6 циклов (если оба операнда в памяти).COKPOWEHEU писал(а):Не нашел в даташите списка команд с временем их выполнения.
Список команд ARM с временами исполнения см. на вебсайте ARM. Как правило, он не включается в ДШ или RM производителями. Кстати, шаг выводов у STM32F030 в корпусе TSSOP - 0.65 мм, а в корпусе LQFP32 - так вообще 0.8.
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: С чего начать программировать микроконтроллеры?
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/
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: С чего начать программировать микроконтроллеры?
Мы же обсуждаем контроллер для новичков, а не меня. Не спорю, что получить шаг 0.5мм и меньше вполне реально, но для этого нужен опыт. Мои первые платки были процарапаны резаком по текстолиту, потом был маркер. Для таких ручных способов DIP гораздо лучше подходит.
Еще очень важно наличие готовых обучающих статей, примеров и устройств. Не спорю, что для MSP это есть, но под AVR и PIC их больше, достаточно глянуть список подфорумов на этом сайте.
Еще очень важно наличие готовых обучающих статей, примеров и устройств. Не спорю, что для MSP это есть, но под AVR и PIC их больше, достаточно глянуть список подфорумов на этом сайте.
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: С чего начать программировать микроконтроллеры?
чтоб начать изучать AVR или PIC новичку будет необходимо спаять программатор (купить дорого). Т.к. COM и LPT отсутствует сейчас в большинстве ПК, особенно ноутбуках и планшетах. Придется паять USB программатор - там микроконтроллер, его надо прошить, возникает проблема курицы и яйца. Для AVR новичку, тоже судя по подфорумам, еще сразу же понадобится фуз доктор (там тоже микроконтроллер). Зачем, если в каждой лавченке теперь продаются достаточно недорогие отладочные платы со встроенным программатором и он же отладчик. Отладчик для начинающего будет весьма полезен в освоении.
Наличие готовых обучающих статей, примеров и устройств, по моему мнению, в большинстве случаев только вредит новичку - эти статьи и пр. сделаны в основном не профессионалами. Для новичка, уже где то писал, вполне достаточно родной документации. Некоторые новички начинали начинать
в то время когда и интернета не было, соответственно и статей и пр, был только CD от производителя.
Наличие готовых обучающих статей, примеров и устройств, по моему мнению, в большинстве случаев только вредит новичку - эти статьи и пр. сделаны в основном не профессионалами. Для новичка, уже где то писал, вполне достаточно родной документации. Некоторые новички начинали начинать


