Кто сам изучил програмирование мк?

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

Re: Кто сам изучил програмирование мк?

Сообщение dosikus »

a5021 писал(а):Этот способ может и компактнее, но нужно либо держать в голове постоянно огромный массив данных, какой бит в каком регистре за что отвечает, либо постоянно лазить в даташит. Первое проблематично, второе отнимает время. Прикиньте, скажем, для арма сроки написания таким способом инициализации капчуры по третьему каналу четвертого таймера. Не ахти какая задачка, но полистать даташит немного придется. Потом еще и проверить, так ли проинитилось. А в кодвижене для AVR такое делается тремя кликами мыши и работает железобетонно. И чего нормальный разработчик выберет, если не лопух?


Мда , все еще больше запущенно , чем я думал.
А Вам никогда не приходило в голову , что имена регистров это не бессмысленный набор символов ?
Хотя скорей всего опыт разработок и стаж изучения документации у Вас слишком мал , что бы осознать это .
Открою страшную тайну- описание любого бита в том же хэдере содержит в себе :
Модуль_Регистр_Бит
К примеру TIM_SR_UIF TIMer_Status Registr_UpdateInterruptFlag
И уже не кажется все таким бессмысленным и унылым как SPL .
К тому же практически все модули имеет похожую структуру - регистры конфигурации , статусные регистры .
Научитесь работать с документацией , тогда и на не нужны будут визарды .
Аватара пользователя
DX168B
Друг Кота
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)
Контактная информация:

Re: Кто сам изучил програмирование мк?

Сообщение DX168B »

a5021 писал(а):
Нормальный эмбеддер заменит сии простыни максимум десятком строк прямой записью в регистры .

Этот способ может и компактнее, но нужно либо держать в голове постоянно огромный массив данных, какой бит в каком регистре за что отвечает, либо постоянно лазить в даташит. Первое проблематично, второе отнимает время. Прикиньте, скажем, для арма сроки написания таким способом инициализации капчуры по третьему каналу четвертого таймера. Не ахти какая задачка, но полистать даташит немного придется. Потом еще и проверить, так ли проинитилось. А в кодвижене для AVR такое делается тремя кликами мыши и работает железобетонно. И чего нормальный разработчик выберет, если не лопух?


Кусок кода из одного моего проекта. МК - STM32F103RBT6
Настраивает SPI и его ноги.

Код: Выделить всё


void SPI_Config
(void)
{
    // Enable clocking for SPI1 components
  RCC->APB2ENR |= (RCC_APB2ENR_IOPAEN | // GPIOA clocking enable
                   RCC_APB2ENR_AFIOEN | // AFIO clocking enable
                   RCC_APB2ENR_SPI1EN );// SPI1 clocking enable                 
  
  
// Reset all SPI1 pins confiuration
  GPIOA->CRL &=  ~(GPIO_CRL_MODE4 | GPIO_CRL_CNF4   |   // CS
                   GPIO_CRL_MODE5 | GPIO_CRL_CNF5   |   // SCK
                   GPIO_CRL_MODE6 | GPIO_CRL_CNF6   |   // MISO
                   GPIO_CRL_MODE7 | GPIO_CRL_CNF7   );  // MOSI
  
  GPIOA
->BSRR =   (GPIO_BSRR_BS4  |                     // CS
                   GPIO_BSRR_BR5  |                     // SCK
                   GPIO_BSRR_BS6  |                     // MISO
                   GPIO_BSRR_BR7  );                    // MOSI
  
  
// Set SPI1 pins configuration
  GPIOA->CRL |=   (GPIO_CRL_MODE4 |                     // SS (Output 50 MHz)
                   GPIO_CRL_MODE5 | GPIO_CRL_CNF5_1 |   // SCK (Output 50 MHz)
                                    GPIO_CRL_CNF6_1 |   // MISO (Input with Pull UP/Down)
                   GPIO_CRL_MODE7 | GPIO_CRL_CNF7_1 );  // MOSI (Output 50 MHz)
  
  
  
// Set SPI1 configuration
  SPI1->I2SCFGR = 0x0000;                               // Disable I2S mode
  SPI1->I2SPR   = 0x0000;                               // Disable all features for I2S
  
  SPI1
->CR1 = (SPI_CR1_MSTR |                           // SPI1 Master mode
               SPI_CR1_BR_1 | SPI_CR1_BR_0 |            // SPI1 Baud
               SPI_CR1_SSI  |                           // Software Slave Select
               SPI_CR1_SSM  );                          // Set to master
  
  SPI1
->CR2     = 0x0000;                               // Disable all features in CR2
  
  SPI1
->CR1 |= SPI_CR1_SPE;                             // Enable the SPI1
}
 


Напрямую в регистры. Не вижу ничего военного. ))
В STM32F1XX еще немного запутано. Мухи и котлеты в одной сковороде.
В старших, типа STM32F407 и выше немного проще и красивее.
(зажигаем два светодиода)

Код: Выделить всё

// Enable GPIOG clocking
  RCC->AHB1ENR |= RCC_AHB1ENR_GPIOGEN;
  
  
// Set pins mode
  GPIOG->MODER |= (GPIO_MODER_MODER13_0 |
                   GPIO_MODER_MODER14_0 );
  GPIOG->MODER &= ~(GPIO_MODER_MODER13_1 |
                    GPIO_MODER_MODER14_1 );
  
  
// Set output type
  GPIOG->OTYPER &= ~(GPIO_OTYPER_OT_13 |
                     GPIO_OTYPER_OT_14 );
  
  
// Set output speed
  GPIOG->OSPEEDR |= (GPIO_OSPEEDER_OSPEEDR13 |
                     GPIO_OSPEEDER_OSPEEDR14 );
  // Set pullup type
  GPIOG->PUPDR &= ~(GPIO_PUPDR_PUPDR13 |
                    GPIO_PUPDR_PUPDR14 );
  // Write 1 to pin 13 & 14
  GPIOG->ODR |= (GPIO_ODR_ODR_13 |
                 GPIO_ODR_ODR_14 );
 
I am DX168B and this is my favourite forum on internet!
nahimovv
Нашел транзистор. Понюхал.
Сообщения: 180
Зарегистрирован: Чт янв 23, 2014 01:51:35

Re: Кто сам изучил програмирование мк?

Сообщение nahimovv »

a5021 писал(а):Эту тему поднял я и говорил про рынок, а не про разработки. Слились, имейте мужество утереться и помалкивать.

Что за детская истерика? Какую тему вы подняли? Тема называется: "Кто сам изучил програмирование мк?", если вы ещё помните.
Какой рынок, какие помидоры? Читайте даташит, не отвлекайтесь!
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Re: Кто сам изучил програмирование мк?

Сообщение a5021 »

YS писал(а):"FullHD @ 100500 FPS" выглядит эффектно. Потому и делают.

В том и дело. Мир не идеален. Не идеально поведение потребителя на рынке. А от него все зависит. И хочет он ярко, быстро и дешево. Быстро + дешево привлекательнее, чем долго + качественно. Вот и движется прогресс толкая перед собой фичи и волоча за собой качество.


Ну так это... Тут же тоже "любая лаборатория". И ей нужен орбитальный локатор. Так нужен, что они пригласили меня для решения этого вопроса. А по вашей логике такие как я больше не нужны - школьник с ардуиной компетентен в такой же мере.


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

осле ваших слов и не понимаю - зачем же пригласили меня (и еще двоих инженеров), почему же не взяли ардуину, если это в наши дни так просто?


А вы не обратили внимания, что я не сказал, что "после запуска ардуины в космос разработчики космической техники больше не нужны" ? Если лаборатории требуется уморить микробов в банке на борту спутника, то вас может и не позовут. Но это не означает, что теперь вас не позовут вообще никогда. Ардуина в космосе дает возможность делать немыслимые ранее вещи. Сочетание "немыслимые ранее" не имеет значения "любые".

А вот начавшему с Ардуино потребуется много лет, чтобы разобраться в том, как все на самом деле устроено. Да, у 90% ее пользователей такой потребности никогда не возникнет, но кто-то же должен решать и действительно содержательные задачи. Да хотя бы поддержку той же Ардуины - большинство ее пользователей вообще не в курсе, как там все устроено под капотом, и впадают в ступор при виде элементарных неполадок типа слетевшего загрузчика.

Я не вижу тут ни проблемы, ни феномена. Пользователи чего угодно ведут себя по такому шаблону. Одному автолюбителю нравится крутить гайки и колдовать над мотором, а ста другим нет. Первый чинит свое авто, а потом и авто знакомых и в конечном счете становится неплохим автомехаником, а другие и через десять лет бледнеют при виде спущенного колеса. Стал бы тот первый автомехаником, если бы автомобилей не было ни у кого? Скорее всего, что нет. Плохо ли то, что сто автолюбителей так и не стали автомеханиками? Да не плохо и не хорошо. Ну не стали и не стали, что ж с этого.

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

Если вернуться к нашим ардуинам, то тут стоит отследить такой момент, что именно ардуина открывает или расширяет тот самый путь сверху, который был описан в двух примерах выше. Хочет старая гвардия электронщиков того или нет, теперь в их среду можно явиться не только начав с изучения закона Ома, паяния проводков и пускания синего дыма, но и свалиться сверху, через подключения шилдов к ардуине, кручения моторов или зажигания светодиодных кубов. Какой путь лучше? Да никакой не лучше. Кто-то снизу не захотел идти дальше УМЗЧ и радио, а кто-то сверху не пойдет дальше подпайки сороковатным паяльником дипов к макетке. Все разные и у каждого свое.

Стоит ли слушать прошедших снизу вверх, что идущие сверху вниз все сплошь уроды, дебилы и калеки, а придут только все портить? Врят ли. Это стандартная реакция социума на появление "чужаков". И хочет того кто-то или нет, а придется ассимилироваться тем и другим, т.к. предстоит долгое совместное сосуществование.
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Re: Кто сам изучил програмирование мк?

Сообщение a5021 »

dosikus писал(а): А Вам никогда не приходило в голову , что имена регистров это не бессмысленный набор символов ?

И чо? Там есть волшебный бит с названием "TOGLE_ON_THE_INPUT_CAPTURE_PLEASE" (произносится с сильным акцентом) или регистр с названием "INPUT_CAPTURE_HERE_он_есть" (произносится с еще более сильным акцентом, мешая английские слова с русскими)? Спалились вы, dosikus. Не знаете матчасть.
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Re: Кто сам изучил програмирование мк?

Сообщение a5021 »

DX168B писал(а): Кусок кода из одного моего проекта. МК - STM32F103RBT6 Настраивает SPI и его ноги.

Хороший код. Оформлен, откоментарен, читается легко.
Так как у меня нет под рукой проекта с использованием SPI, то вот плохой код, который я только что нагенерил в кодвижене за несколько секунд, не помня ни бельмеса, какие биты и регистры в меге256 за что отвечают:

Код: Выделить всё

// SPI initialization
// SPI Type: Master
// SPI Clock Rate: 4000,000 kHz
// SPI Clock Phase: Cycle Start
// SPI Clock Polarity: Low
// SPI Data Order: MSB First
SPCR=(1<<SPIE) | (1<<SPE) | (0<<DORD) | (1<<MSTR) | (0<<CPOL) | (0<<CPHA) | (0<<SPR1) | (0<<SPR0);
SPSR=(0<<SPI2X);
DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (1<<DDB2) | (1<<DDB1) | (1<<DDB0);


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

nahimovv писал(а):Какую тему вы подняли? Тема называется: "Кто сам изучил програмирование мк?", если вы ещё помните.

Не извивайтесь. Тему я затронул про долю 8051 на рынке МК, которую вы хотели жульническим образом подменить на "долю в разработке новых устройств". Теперь, когда у вас это не вышло и вы оказались разоблачены в плутовстве, вы будете пытаться изобразить, что вообще не понимаете, где находитесь? "Вот народ, а".
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Re: Кто сам изучил програмирование мк?

Сообщение a5021 »

oleg110592 писал(а):а завтра будет задача посильная только стм32, придется все ж таки изучать.


А ну, как и стм32 не справится, а мы тут ночей не спали, не ели не пили, названия регистров зазубривали? Все прахом, "графиня переменившимся лицом бежит пруду".

Повторюсь - армы сейчас могут легко решать задачи 8-ми и 16-ти битных микроконтроллеров.


Вопрос не в том, могут или не могут. Зачем нужно армами решать задачи восьмибиток? Потому, что восьмибитки помрут с минуты на минуту? Так прогноз по рынку совсем не утешительный для местных похоронщиков. Доля 32-битных процессоров в эмбеде к 2017 году вырастет до 38%, в то время, как восьми- и шестнадцатибитные камни оставят за собой 45%. Что же за ерунда такая, что самые замечательные в мире процессоры о тридцати двух битах так медленно расти собрались? Так ведь нечего считать этими тридцатью двумя битами в эмбеде. Любопытные товарищи изучили вопрос, какими же цифрами оперируют в основном управляющие контроллеры и выяснилось, что больше шестнадцати бит требуется не так уж и часто. И с чего тогда ажиотаж?
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Кто сам изучил програмирование мк?

Сообщение dosikus »

a5021 писал(а):И чо? Там есть волшебный бит с названием "TOGLE_ON_THE_INPUT_CAPTURE_PLEASE" (произносится с сильным акцентом) или регистр с названием "INPUT_CAPTURE_HERE_он_есть" (произносится с еще более сильным акцентом, мешая английские слова с русским

Очень смешно . Вы все-таки так и стремитесь к своей мечте , нажал на кнопку-программа сама собой написалась.


a5021 писал(а):Спалились вы, dosikus. Не знаете матчасть.

Докатились . :))) Аурдинищик ,не имеющий даже представления о периферии , учит других жить.

a5021 писал(а):
А ну, как и стм32 не справится, а мы тут ночей не спали, не ели не пили, названия регистров зазубривали? Все прахом, "графиня переменившимся лицом бежит пруду".


Твое же - "И чо?" . В отличии от тебя , с легкостью изучим другой МК . А ты будешь ждать "добрых дядей" ...

a5021 писал(а):Если вернуться к нашим ардуинам, то тут стоит отследить такой момент, что именно ардуина открывает или расширяет тот самый путь сверху, который был описан в двух примерах выше. Хочет старая гвардия электронщиков того или нет, теперь в их среду можно явиться не только начав с изучения закона Ома, паяния проводков и пускания синего дыма, но и свалиться сверху, через подключения шилдов к ардуине, кручения моторов или зажигания светодиодных кубов. Какой путь лучше? Да никакой не лучше. Кто-то снизу не захотел идти дальше УМЗЧ и радио, а кто-то сверху не пойдет дальше подпайки сороковатным паяльником дипов к макетке. Все разные и у каждого свое.

Стоит ли слушать прошедших снизу вверх, что идущие сверху вниз все сплошь уроды, дебилы и калеки, а придут только все портить? Врят ли. Это стандартная реакция социума на появление "чужаков". И хочет того кто-то или нет, а придется ассимилироваться тем и другим, т.к. предстоит долгое совместное сосуществование.



Эпичный бред. :)))
Подтыкая готовые шилды к аурдунье, ты не научишься ни разрабатывать схемы внешней периферии ни тем более ее монтировать.


Я таки прав оказался , это представитель офисного планктона .
Очередной "эффективный манагер" , возомнивший себя эмбеддером .
Возраст до 30 лет :)))
Последний раз редактировалось dosikus Вс янв 26, 2014 08:04:52, всего редактировалось 1 раз.
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Кто сам изучил програмирование мк?

Сообщение oleg110592 »

А ну, как и стм32 не справится

значит этот справиться :)) http://www.st.com/web/catalog/mmc/FM169 ... 9/PF251211
Зачем нужно армами решать задачи восьмибиток?

потому что "восьмибитки" не могут решать задачи арм - уже говорил:
pic: для дрыганья ногами
мега: для захвата таймером
мсп430: для батарейного питания
стм32: для всего вышеперечисленного и более
умный человек что выберет?
— Как известно, Кузбасс (pic) — всесоюзная кузница. Кубань (avr) — всесоюзная житница. А Кавказ — это всесоюзная… что?
— Здравница? (msp430)
— Кавказ (arm) — это всесоюзная кузница, и житница, и здравница в одном лице!
nahimovv
Нашел транзистор. Понюхал.
Сообщения: 180
Зарегистрирован: Чт янв 23, 2014 01:51:35

Re: Кто сам изучил програмирование мк?

Сообщение nahimovv »

a5021 писал(а):Какая разница между вашим хорошим кодом и моим плохим?

В том, что вы как обезьяна просто жамкали кнопки без понимания происходящего с целью получения вожделенного банана.
На АВР такое может и прокатит, ввиду убогости периферии, а вот на STM уже нет. На что вы собственно и наткнулмсь, об что вы собственно и стукнулись лбом, и теперь пытаетесь что-то доказать, по своему незнанию, в истерической форме.
Тему я затронул про долю 8051 на рынке МК

Можете трогать её и дальше, продолжайте, если вам нравится. Только толку от этого аж никакого. Как и от всего вами тут рассказанного.
nahimovv
Нашел транзистор. Понюхал.
Сообщения: 180
Зарегистрирован: Чт янв 23, 2014 01:51:35

Re: Кто сам изучил програмирование мк?

Сообщение nahimovv »

a5021 писал(а):мы тут ночей не спали, не ели не пили, названия регистров зазубривали

Зазубривание всегда было от непонимания, ещё со школы должны это знать. Продолжайте зубрить!
Зачем нужно армами решать задачи восьмибиток?

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

Любопытные товарищи изучили вопрос, какими же цифрами оперируют в основном управляющие контроллеры и выяснилось, что больше шестнадцати бит требуется не так уж и часто. И с чего тогда ажиотаж?

Это те что "британские учёные"? Эпический бред! Что они вам ещё на ушко нашептали?
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Кто сам изучил програмирование мк?

Сообщение YS »

Ох, какой замес в этой теме, однако, какое причудливое сплетение мнений! :)))

Вы скажете, что мой код плохой и не читается? А мне и не нужно, чтобы он был хороший и читался.


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

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

Мартин Голдинг.

Так что нет, кодевижен - это плохой подход. Я уже понял, что вы считаете приемлемой современную рыночную идеологию, потакающую тупости и инстинктам хомячка ради извлечения максимальной прибыли. Я, в свою очередь, такого не одобряю. Хотя и сам порой вынужден играть по этим правилам.

Быстро + дешево привлекательнее, чем долго + качественно.


Проблема в том, что с такими мнениями в головах надо бороться, разъясняя чем грозит "дешево и быстро", а не потакать им.

Вы же знаете старую шутку про "дешево, быстро, качественно: выберите два из трех"? :)))

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


Так а что вы хотели тогда сказать? Как я понял, именно это. Кстати я все же не программист, а "электронщик с навыками программирования", если быть точным. :)

Кстати, не компилятор, а достаточно ущербную IDE, не более того. Тот самый школьник не знает не только как запустить компилятор (запускается-то он из командной строки, хе-хе), но и что он вообще есть. IDE выступает протезом для мозга и делает все за него.

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


Воот, и тут вы сами пришли к тому, о чем я говорил. Ардуина - это замечательно и классно. Но квалификация 90% ее пользователей не превосходит стадии дилетанта. Причем, иногда воинствующего. И следуя arduino-way, они никогда и не поднимутся выше.

Те самые "пришедшие сверху" - редкое ислючение, давайте смотреть правде в глаза.

Ардуино - отличная песочница для дилетантов, не более того. И соответственно надо к ней относиться. Она, как вы уже сами заметили, не заменит труд профессионала в серьезном проекте.

Какой путь лучше?


Снизу. Почему? Он более эффективно отсеивает настроенных несерьезно. А путь сверху плодит прослойку дилетантов, которые так никогда и не дорастут до приличного уровня. Т.е., если в первом случае несерьезный человек просто понимает, что это "не его" и отходит в сторону, то во втором он продолжает маячить вокруг, создавая лишнюю шумиху.

Давайте сразу определимся, о чем мы говорим. Я говорю с позиций выращивания серьезного промышленного инженера, способного решать задачи произвольной сложности (некая идеализация, конечно). Разумеется, он освоит и Ардуино, если будет надо. Но если надо - откроет тот же IAR и сделает "правильно". Он свободен в выборе инструментов, ибо попробовал много чего и начал с самых низов.

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

А плохо все это тем, что создает у заказчика обманчивое впечатление, что десять школьников с Ардуино за $100 заменят профессионала, который просит за работу $1000.

Заметьте еще раз, это уже произошло в прикладном программировании. И потому мы имеем редакторы, грузящиеся по пять минут, сайты, открывающиеся только в одном браузере только в определенную фазу луны, и безмерно кривой прикладной софт.

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

Так вот я не хочу, чтобы то же случилось с эмбедом.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Аватара пользователя
DX168B
Друг Кота
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)
Контактная информация:

Re: Кто сам изучил програмирование мк?

Сообщение DX168B »

a5021 писал(а):Хороший код. Оформлен, откоментарен, читается легко.
Так как у меня нет под рукой проекта с использованием SPI, то вот плохой код, который я только что нагенерил в кодвижене за несколько секунд, не помня ни бельмеса, какие биты и регистры в меге256 за что отвечают:

Код: Выделить всё

// SPI initialization
// SPI Type: Master
// SPI Clock Rate: 4000,000 kHz
// SPI Clock Phase: Cycle Start
// SPI Clock Polarity: Low
// SPI Data Order: MSB First
SPCR=(1<<SPIE) | (1<<SPE) | (0<<DORD) | (1<<MSTR) | (0<<CPOL) | (0<<CPHA) | (0<<SPR1) | (0<<SPR0);
SPSR=(0<<SPI2X);
DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (1<<DDB2) | (1<<DDB1) | (1<<DDB0);


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


Код был показан для того, чтобы наглядно показать, что периферия там не намного сложнее, чем в AVR.
Работа с периферией пишется один раз и оформляется в виде API. Далее, только высокий уровень.
В смысле - алгоритм программы, максимально абстрагированный от железа.
Так не будет геморроя с переносимостью программы на другую платформу.

Помниться, досталась мне наноАрдуйня и была поставлена задача написать небольшую программу.
Первое, что было сделано - это выпиливание ардуинского бутлодера, написание программы в AVR Studio на нормальном Си и прошивка платы через программатор AVRISP mkII.
Есть у меня проекты и на AVR. Причем, даже на TINY2313 (к примеру - RS-485 датчик температуры, влажности и давления)
Один из сложных на AVR - на ATMEGA8. Управление группой выпрямителей, слежение за АКБ (напряжение и ток), работа по алгоритму заряда / разряда, управление дизельным генератором, возможность подключения к ПК для удаленного мониторинга и конфигурации ну и всевозможные защиты.
Сейчас стоит задача разработать вторую версию этого девайса. Заказчики хотят большой дисплей с тачскрином, CAN и Ethernet.
К тому-же, у нас появились ко всей куче еще и BMS для литиевых АКБ, которыми надо рулить в реальном времени.
Никакая МЕГА тут никак не справится, по этому решено ставить большущий STM32.
Мега начинает долго тупить из-за непрерывного потока сообщений из CAN интерфейса (бэнчмарк уже делали на AT90CAN128)
Да и дисплей 800x600 уже не повесишь. К тому-же графика ест очень много памяти.
Мораль такова - не Ардуиной единой.... Ставить Raspberry - а она рассчитана на работу вблизи силовых установок?
Она не сертифицирована как Industrial и соответственно, не спроектирована для работы в промышленных условиях.
Да и нафига обычная ОСь в ответственных местах? Для этого есть FreeRTOS, QNX и прочие.
А в управлении литиевыми батареями нужна надежность, ибо неконтролируемый перезаряд литиевых батарей приведет к пожару.
Так что, помимо хорошо/плохо/удобно/неудобно, есть еще и стандарты, нормативы и требования.

YS писал(а):Так вот я не хочу, чтобы то же случилось с эмбедом.

:beer: :beer:
I am DX168B and this is my favourite forum on internet!
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15551
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Кто сам изучил програмирование мк?

Сообщение BOB51 »

...
ММляяааа....
Напоминает вечную грызню фанатов вместо объективного анализа враждебных девайсов во времена разборок АВРнутых и ПИКанутых фанклубов ... :facepalm:
Кстати,
DX168B
а почему такая необходимость все в один чип впихерить? :roll:
Неуж-то отойти от стереотипа "все в одну кучу" так невозможно? Есть ведь опыт работ по меньшей мере трех семейств МК (не считая ПЛМ) - так не пора ли его применять научиться - делать схемы на том, что наиболее подходяще для данного случая (если уж говорить о профессиональных разработках)? И степень ремонтопригодности таких систем значительно выше - блочная замена, возможность автономной самодиагностики... Ежли конечно не одноразовый девайс сооружать по китаянскому образцу. 8)
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Re: Кто сам изучил програмирование мк?

Сообщение a5021 »

dosikus писал(а): Очень смешно . Вы все-таки так и стремитесь к своей мечте , нажал на кнопку-программа сама собой написалась.

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

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

Плохи значит ваши дела, раз так.

В отличии от тебя , с легкостью изучим другой МК .

Один уже изучили. Предлагаете полностью нерабочие решения.

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

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

Re: Кто сам изучил програмирование мк?

Сообщение oleg110592 »

BOB51 писал(а):Напоминает вечную грызню фанатов

правильно было сказано на этом форуме в 2006 году, в теме "PIC vs AVR":
Это война миров, можно сказать. Такое ощущение, что приверженность к тому или иному виду контроллеров получается по принципу: С чем начал работать так и продолжаю... В реальности, людей, кот работают и с тем и другим очень мало, вот их-то и надо спрашивать, ибо только такой человек сможет дать квалифицированый грамотный ответ.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15551
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Кто сам изучил програмирование мк?

Сообщение BOB51 »

Вот потому я, как простонародный любитель, отдаю предпочтение работе с I8080/Z80, MCS51, ATmega/ATtiny, PIC10/12/16/18 в DIP исполнении и под ассемблером.
:beer:
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Re: Кто сам изучил програмирование мк?

Сообщение a5021 »

oleg110592 писал(а):потому что "восьмибитки" не могут решать задачи арм - уже говорил:
pic: для дрыганья ногами
мега: для захвата таймером
мсп430: для батарейного питания
стм32: для всего вышеперечисленного и более
умный человек что выберет?

Фи, такая простая загадка, что даже не интересно. Умный человек сначала выберет, что лучше к задаче подходит, а потом из прошедших через первое сито отберет на чем сделать легче. Ну, может, еще с ценой как-то сообразует свой выбор. И выходит, что нет никакой контрамарки у армов, чтобы проходить через такой отбор беспрепятственно.

Одно мое вчерашнее замечание, как-то осталось никем не замеченным. Вопрос касается потребности встраиваемых решений в тридцатидвухбитных вычислениях. На первый взгляд, увеличение разрядности и производительности ничего кроме плюсов в своей природе не имеет. Вроде бы очевидные достоинства, которым будет рад любой разработчик. А теперь давайте разберемся, так ли это на самом деле. Каждый желающий может порыться в своих террабайтах исходников от прошлых проектов и выяснить сколько тридцатидвухбитных переменных там используется. Я покопался в своих и выяснилось, что такие переменные едва ли ни в абсолютном меньшинстве по отношению ко всем прочим. В моих алгоритмах тридцатью двумя битами рулить почти что нечем. Да, бывает, что несколько больших чисел надо покрутить туда обратно, но это не основная операция и даже дохлые МК не сильно об них запинаются. Черт с ней с битностью, может быть производительность больше востребована? Тоже не похоже. Десятки мегагерц сегодняшних восьмибиток используются отнюдь не на все сто. Ожидание медленных датчиков, исполнительных устройств, действий оператора можно найти чуть ли ни в каждом первом алгоритме. Для огромного пласта современных задач существующая вычислительная мощность избыточна. Так куда тут прикрутить дополнительные мипсы?

Тут мы подходим к занимательнейшему парадоксу. Одни и те же лица с одной стороны жалуются, что современный хайтек идет по жлобскому пути, когда наращивание мощности вычислительных систем не приводит к пропорциональному улучшению качественных показателей (блокнот на двух гигагерцах), а с другой рукоплещут, чтобы эта же проблема, как можно скорее материализовалась в эмбеде. Чего париться над оптимизацией алгоритмов, если разрядности выше крыши, а производительности хоть через край отливай? И пошла гулять губерния. Когда-то сроки поджимают, что некогда вылизывать, когда-то неохота, когда-то не заметили и т.п. и т.д. Если маленькие МК еще где-то отзывались на спагетти-код и разработчик вынужден был отступать, то теперь ядро размолотит такую горбуху, что никто и не заметит. И начинает такой код накапливаться и кочевать из проекта в проект, из библиотеки в библиотеку. Заговор ардуинщиков? Черта с два. Сами, сами, порицая других, кидаетесь создавать блокноты на дух гигагерацх.

BOB51 писал(а): я, как простонародный любитель, отдаю предпочтение работе с I8080/Z80, MCS51

Вы нас обманываете. nahimovv сказал, что любители не используют 8051. :)

oleg110592 писал(а):В реальности, людей, кот работают и с тем и другим очень мало, вот их-то и надо спрашивать, ибо только такой человек сможет дать квалифицированый грамотный ответ.

Их не мало. Мало желающих вступать в спор с фанатиками. Вот и приходится мне за всех отдуваться. :)
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Кто сам изучил програмирование мк?

Сообщение dosikus »

a5021 писал(а):Поздно, dosikus. После такой горбухи с вашей стороны, костюмчик веселого балагура на вас уже не налазит. Ваш "мудрый" совет оказался полной лажей. Даже если выписать названия всех битов и регистров таймера ответственных за капчуру, распечатать и положить под нос, то сколь угодно долгое разглядывание их имен и названий принципиально не может привести к нахождению правильной последовательности инициализации. Эта последовательность описана целой страницей убористого текста, которую каждый раз придется пречитывать, т.к. процедура длинная, а ошибиться в любой точке проще простого. Давайте, рассказывайте, как вы наизусть запоминаете по сто страниц мануала за раз, чтобы потом будучи разбуженным посреди ночи, процитировать их вместе со знаками препинания.


Ты долго будешь смешить народ ?
То что что для тебя является тайной за семью печатями , на самом деле проще паренной репы .
Вот например :

Код: Выделить всё

   RCC->APB1ENR |= RCC_APB1ENR_TIM3EN;//Включаем тактирование TIM3
  TIM3->CCMR1 |= TIM_CCMR1_CC1S_0;  // Выбор   входа  TI1
  TIM3->CCMR1 |= (TIM_CCMR1_IC1F_0 | TIM_CCMR1_IC1F_1);  // Фильтр - 8 тактов.
  TIM3->CCER &= ~TIM_CCER_CC1P; //По переднему фронту
  TIM3->CCMR1 &= ~TIM_CCMR1_IC1PSC; //Предделитель отключен
  TIM3->CCER |= TIM_CCER_CC1E; // Захват   в регистр TIM3_CCR1
  TIM3->DIER |= TIM_DIER_CC1IE; //
  TIM3->CR1 |= TIM_CR1_CEN;// Тimer ON



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

ЗЫ . кАмменты на кириллице - исключительно для этого малолетнего балбеса ...
Последний раз редактировалось dosikus Вс янв 26, 2014 17:56:24, всего редактировалось 1 раз.
Аватара пользователя
DX168B
Друг Кота
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)
Контактная информация:

Re: Кто сам изучил програмирование мк?

Сообщение DX168B »

BOB51 писал(а):...
ММляяааа....
Напоминает вечную грызню фанатов вместо объективного анализа враждебных девайсов во времена разборок АВРнутых и ПИКанутых фанклубов ... :facepalm:
Кстати,
DX168B
а почему такая необходимость все в один чип впихерить? :roll:
Неуж-то отойти от стереотипа "все в одну кучу" так невозможно? Есть ведь опыт работ по меньшей мере трех семейств МК (не считая ПЛМ) - так не пора ли его применять научиться - делать схемы на том, что наиболее подходяще для данного случая (если уж говорить о профессиональных разработках)? И степень ремонтопригодности таких систем значительно выше - блочная замена, возможность автономной самодиагностики... Ежли конечно не одноразовый девайс сооружать по китаянскому образцу. 8)



(Можно и без этих ваших сарказмов)
На счет стереотипа - этим я не страдаю, но есть ТЗ, которое составляю не я.
Я же не гнушусь юзать МК по назначению. Если мне потребуется RGB мигалка светодиодом, я низачто туда не поставлю что-нибуть серьезнее, чем TINY13.
Но идеология начальства - не плодить платформ, по этому он может пихнуть в мигалку какой-нибудь SoC и пихать далее его везде.
Я уже устал объяснять, что это для нас это не создает никаких затруднений. Код переносится с одного на другой МК за день.
И не важна архитектура или производитель, важно, чтобы он подходил для своих задач. Ладно, хоть на PIC, AVR и STM32 уговорили.
Тут-же, в этом треде я пытаюсь донести, что говорить, что STM32 - гавно, а AVR - very true не правильно.
Ладно, я осквернил Arduino, но не камень, который впаян в ту плату. :)))
Если бы я хотел собрать пульт для зомбоящега, то взял бы PIC, так как это самые доступные из низкопотребляющих МК.
Для какого-нибудь дерьмометра можно было бы взять 8-ю мегу.
Что-то совсем суровое - STM32.

Думать надо не только о том, как слепить из двух мух слона (я о модульности), но и о том, кто в последствии с этим будет работать.
Менее квалифицированный персонал расхерачит даже самое меганадежное устройство и превратит его в мину замедленного действия.
Чем меньше деталей и нюансов = тем меньше проблем и головной боли в дальнейшем.
А модули в основном идут под замену. Старый сняли и смонтировали новый. Старый в ремонт и нефиг там копаться на объекте.
I am DX168B and this is my favourite forum on internet!
Ответить

Вернуться в «МЯЯЯУ!»