Есть желание научиться создавать устройства на МК.

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Сообщение HHIMERA »

YS писал(а): Да не, фузы мы не трогали. Я говорю про само понимание процесса.
Процесса чего... одурманивания??? :)))
Я так понял, вы и сами не знаете, что такое CMSIS. Ну так я вам расскажу.
Угу... "Фонарь дэтэктэд!"(С)...
Что там у нас в файлах CMSIS??? О ужас!!! Хедер!!! Срочно писать своё!!! "Только хардкор!"(С) :)))
На ПИК/АВР тоже хедер самому писать нужно??? :facepalm:
А пока не надо грузить его вещами, не относящимися к сути.
Грузят всякоразные кухарко-учителя... Особенно если суть сводится только к лэйбе Атмэл... :))) :)))
От которых у начинающего рябит в глазах.
Какое отношение это имеет к ядру??? Никакого!!!
Что там у нас по документации на ПИК24??? Да почти один в один... если не хуже!!!
"Я не даю готовых решений, я заставляю думать!"(С)
Реклама
YS
Друг Кота
Аватара пользователя
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05

Сообщение YS »

Процесса чего... одурманивания?
Э-э-э, ну это уже и правда холиваром попахивает. Да и топикстартер пропал. :)))

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

Так что ладно, наверное мне стоит пожелать вам успехов. :) :beer: А я продолжу свободно использовать любое из знакомых мне семейств по мере необходимости и осваивать новые. Вот продукцию NXP я еще не пробовал, и Stellaris от TI тоже...
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Контактная информация:
Реклама
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Сообщение HHIMERA »

YS писал(а):С опытом разработки это проходит. :))
Не проходит, а ПРИХОДИТ!!!
Сейчас STM самые оптимальные по всем параметрам... для большинства приложений... исключения не в счёт...
Ничего страшного в этих STM32 нет... все эти страшилки надуманные...
А я продолжу свободно использовать любое из знакомых мне семейств по мере необходимости и осваивать новые. Вот продукцию NXP я еще не пробовал, и Stellaris от TI тоже...
У меня уже всё это позади... :)))
Даже с точки освоения NXP или Stellaris от TI... С чего легче будет переходить... с STM32 или Мега16??? То-то!!!
"Я не даю готовых решений, я заставляю думать!"(С)
YS
Друг Кота
Аватара пользователя
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05

Сообщение YS »

Не проходит, а ПРИХОДИТ!
Именно проходит. Когда-то я тоже считал, что AVR круче всего, как вы сейчас считаете, что STM32 круче всего - это было оттого, что я просто не знал ничего другого. :)) Познакомился еще с пятком семейств - и стал относиться ко всему гораздо спокойнее...

Это все пройдет, когда уровень разработок заставит всерьез задуматься об исключениях, которые сейчас для вас "не в счет". :))
Ничего страшного в этих STM32 нет... все эти страшилки надуманные...
А я говорил, что они страшные? Я только утверждаю, что они не слишком подходят для старта. Начинать можно и с них, просто если сразу взяться серьезно, начиная с нуля, мозг раскалится гораздо сильнее, чем если начать с MSP430/PIC или подобного.
Даже с точки освоения NXP или Stellaris от TI... С чего легче будет переходить... с STM32 или Мега16??? То-то!!!
На самом деле, если навык уже выработан, разницы нету. Опять же, с опытом приходит понимание, что все МК одинаковые (ну, наверное, за исключением экзотики типа Propeller) - непреодолимые барьеры между семействами мерещатся только пионерам. :))) Неважно, сколько там бит в шине, принципы одни. А существенные трудности в осознании нового семейства после уже имеющегося опыта работы с каким-то другим говорят только о недостатке фундаментальных знаний, которых как раз и не дает освоение "с наскока".
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

Вот продукцию NXP я еще не пробовал, и Stellaris от TI тоже
Stellaris теперь называется TIVA, если так много времени пробовать, порекомендую попробовать еще микроконтроллеры Nuvoton Cortex™-M0 http://www.nuvoton.com/NuvotonMOSS/Comm ... 3449500ce7
цена очень гуманная - 0.3$ (в России 0.4$)
Реклама
YS
Друг Кота
Аватара пользователя
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05

Сообщение YS »

если так много времени пробовать, порекомендую попробовать еще микроконтроллеры Nuvoton Cortex™-M0
Потому пока и не попробовал, что со временем туговато. :) Но спасибо за совет насчет Nuvoton.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Контактная информация:
Реклама
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Сообщение HHIMERA »

YS писал(а): Именно проходит. Когда-то я тоже считал, что AVR круче всего, как вы сейчас считаете, что STM32 круче всего - это было оттого, что я просто не знал ничего другого. :)) Познакомился еще с пятком семейств - и стал относиться ко всему гораздо спокойнее...
Приходит... приходит... Что весь этот зоопарк МК и компиляторов в большинстве случаев избыточен...
В этом и состоит спокойствие...
Это все пройдет, когда уровень разработок заставит всерьез задуматься об исключениях, которые сейчас для вас "не в счет". :))
"не в счет" потому что такие задачи типа "иначе никак" редки... а реализация их не составляет труда... Мега, ПИК24 или новые ПИК16... какая разница...
Но если это всё легко реализуется на STM... то к чему все эти извращения???
А я говорил, что они страшные? Я только утверждаю, что они не слишком подходят для старта. Начинать можно и с них, просто если сразу взяться серьезно, начиная с нуля, мозг раскалится гораздо сильнее, чем если начать с MSP430/PIC или подобного.
Для новичка всё страшно... Но судя по инету... освоение STM32 не такая уж сложная задача... как некоторым кажется...
На самом деле, если навык уже выработан, разницы нету.
Нету... Кроме того, что новичку новый компилятор придётся осваивать... к разнице в периферии... и другому даташиту...
А в случае с Cortex всё проще... Кейл или ИАР... и разница в периферии...
"Я не даю готовых решений, я заставляю думать!"(С)
Держит паяльник хвостом
Сообщения: 963
Зарегистрирован: Чт апр 03, 2014 23:16:55
Откуда: Россия

Сообщение Rtmip »

Pavel_1978 писал(а):посмотрите цены на Дискавери STM32 или эта http://www.terraelectronica.ru/catalog_ ... DE=1318065 причем все имеют на борту отладчик программатор.
спасибо, понятно, мне пока не подходит :)
oleg110592 и Вам спасибо :)
Встал на лапы
Аватара пользователя
Сообщения: 86
Зарегистрирован: Пт янв 21, 2011 07:48:23

Сообщение Sam85 »

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

Сообщение YS »

как выставить фусы что бы МК не навернулся ?
Лучше вообще их не трогайте, если не уверены, что это вам надо.

И вот тут почитайте, специально для таких случаев писал.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Контактная информация:
Встал на лапы
Аватара пользователя
Сообщения: 86
Зарегистрирован: Пт янв 21, 2011 07:48:23

Сообщение Sam85 »

YS писал(а):
как выставить фусы что бы МК не навернулся ?
Лучше вообще их не трогайте, если не уверены, что это вам надо.

И вот тут почитайте, специально для таких случаев писал.
благодарю за полезную статью :)
YS
Друг Кота
Аватара пользователя
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05

Сообщение YS »

Не за что, не за что. :beer:
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Контактная информация:
Встал на лапы
Аватара пользователя
Сообщения: 86
Зарегистрирован: Пт янв 21, 2011 07:48:23

Сообщение Sam85 »

В свободное от работы время пишу тестовые программки, заливаю в МК. Не поглядите в чем дело ? По замыслу при нажатии кнопки ( PORTD.0) светодиоды (PORTB.1-3) горят по очереди с задержкой 4 сек, при отпускании горят с той же задержкой, но в обратном порядке с 3-1. Но в реале, при нажатой кнопке горит крайний диод а два других по замыслу включаются, при отпускании кнопки загорается диод с другого края а два работают как надо ?

Сам код

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

while (1)
      {
      
        if(PIND.0==1)      
        {PORTB.1=1; 
        PORTB.2=0;
        PORTB.3=0;
        delay_ms(4000);  
        PORTB.1=0;
        PORTB.2=1;
        PORTB.3=0;
        delay_ms(4000); 
        PORTB.1=0;
        PORTB.2=0;
        PORTB.3=1;
        }
        else   
        {PORTB.1=0;
        PORTB.2=0;
        PORTB.3=1;
        delay_ms(4000);  
        PORTB.1=0;
        PORTB.2=1;    
        PORTB.3=0;
        delay_ms(4000);
        PORTB.1=1;
        PORTB.2=0;
        PORTB.3=0; 
        }  
        }
}
Последний раз редактировалось Аlex Ср июл 09, 2014 08:05:51, всего редактировалось 1 раз.
Причина: тег code
YS
Друг Кота
Аватара пользователя
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05

Сообщение YS »

Первое - использовать компиляторо-специфичные костыли вроде PORTB.x крайне не рекомендуется. Это плохой стиль. Следует использовать битовые операции и сдвиги.
Сам код
Существует тег code, используйте его.
Не поглядите в чем дело ?
Вам тут нужен конечный автомат. Я написал (под AVR GCC в AVR Studio 4, но портировать не составит труда) для вас этот пример и потестил его в Proteus:

Изображение

Код под спойлером.
Спойлер

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

#include <avr/io.h>
#include <util/delay.h>
#include <stdint.h>

#define LED1					(1<<PB1)
#define LED2					(1<<PB2)
#define LED3					(1<<PB3)
#define BUTTON_PIN				(1<<PD0)

#define ANIMATION_DELAY_MSEC	4000

#define ANIMATION_STOP			0
#define ANIMATION_FORWARD		1
#define ANIMATION_BACKWARD		2

static volatile uint8_t animation_type=ANIMATION_STOP;
static volatile uint8_t last_pind_state=0;

void main(void)
{
  DDRB=LED1 | LED2 | LED3;
  PORTB=LED1;
  DDRD=0;

  last_pind_state=PIND;

  while (1)
  {
	if (PIND!=last_pind_state)
	{
		if (PIND & BUTTON_PIN)
		{
			animation_type=ANIMATION_BACKWARD;
		}
		else
		{
			animation_type=ANIMATION_FORWARD;
		}

		last_pind_state=PIND;
	}

    if (animation_type == ANIMATION_FORWARD)
	{
		PORTB|=LED1;
		_delay_ms(ANIMATION_DELAY_MSEC);
		PORTB&=~LED1;
		PORTB|=LED2;
		_delay_ms(ANIMATION_DELAY_MSEC);
		PORTB&=~LED2;
		PORTB|=LED3;

		animation_type=ANIMATION_STOP;
	}
	
	if (animation_type == ANIMATION_BACKWARD)
	{
		PORTB|=LED3;
		_delay_ms(ANIMATION_DELAY_MSEC);
		PORTB&=~LED3;
		PORTB|=LED2;
		_delay_ms(ANIMATION_DELAY_MSEC);
		PORTB&=~LED2;
		PORTB|=LED1;

		animation_type=ANIMATION_STOP;
	}
  }
}
Я сознательно не использовал прерываний.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Контактная информация:
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18678
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

YS писал(а):Первое - использовать компиляторо-специфичные костыли вроде PORTB.x крайне не рекомендуется. Это плохой стиль. Следует использовать битовые операции и сдвиги.
а что же в вашем примере нет этих самых сдвигов? собственно, и конечный автомат немножко притянут за уши... если я верно понял, то нужен "бегущий огонь", меняющий направление в зависимости от состояния кнопки?

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

unsigned char mask = LED1;
while(1){
   PORTC = mask;
   delay_ms(ANIMATION_DELAY_MSEC);
   if(PIND & BUTTON_PIN){
      mask <<= 1;
      if(mask > LED3) mask = LED1; 
   } else {
      mask >>= 1;
      if(mask==0) mask = LED3;
   }
}
как-то так, по-моему...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
YS
Друг Кота
Аватара пользователя
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05

Сообщение YS »

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

о--
-о-
--о

и остался в этом состоянии, пока кнопка нажата. Когда кнопку отпустили - обратно

--о
-о-
о--

и остался в таком состоянии, пока кнопку опять не нажмут.
конечный автомат немножко притянут за уши...
Возможно, есть и более простые пути. Но я понял ТЗ именно так, как изложил выше; кроме того, конечный автомат я применил в большой степени в дидактических целях. :wink:
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Контактная информация:
Встал на лапы
Аватара пользователя
Сообщения: 86
Зарегистрирован: Пт янв 21, 2011 07:48:23

Сообщение Sam85 »

благодарю за объяснения :)
YS
Друг Кота
Аватара пользователя
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05

Сообщение YS »

Не за что. :beer:
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Контактная информация:
Встал на лапы
Аватара пользователя
Сообщения: 139
Зарегистрирован: Пн авг 18, 2008 22:08:48
Откуда: г. СПб

Сообщение BenTech »

Вечер добрый, хочу задать вопрос, как раз в теме про чайников =)

Вопрос 1. Как грамотно подключить к attiny2313(либо atmega8 не принципиально), автомобильное 12В реле. Набросал вот такую схему...

Изображение реле коммутирует цепь управления электробензонасосом.

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

Вопрос 3. Имеется микроконтроллер, считающий некую инфу внутри себя(счетчик). Необходимо вывести значение этого счетчика на LCD или сегментный индикатор не суть. Проблема, что у считающего МК не хватает ног для этого. Можно ли отправить данные с одного МК на другой (например с тина на мега8) по двум проводам например? Что-то типа пакетной передачи данных?
Контактная информация:
YS
Друг Кота
Аватара пользователя
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05

Сообщение YS »

Набросал вот такую схему...
Нормально.
Как наиболее надежно и наименее геморройно дать понять микроконтроллеру о наличии/отсутствии 12В. Проще говоря, необходимо врезаться в 12В проводку автомобиля и стырить оттуда наличие/отсутствие напруги в проводе.
Поставить делитель и на всякий случай защитить ножку МК стабилитроном (поставить стабилитрон параллельно нижнему плечу делителя).
Проблема, что у считающего МК не хватает ног для этого.
В таких случаях ножки наращивают сдвиговыми регистрами. Например, 74HC595.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Контактная информация:
Ответить

Вернуться в «Разные вопросы по МК»