Перейти к содержанию
    

А вот какой мелкий контроллер использовать?

2 hours ago, MDD said:

Справедливости ради "неистово колбасит" в этой теме почему-то именно Вас. Остальные более-менее беспристрастны и технически корректны.

Аналогичное мнение сложилось :biggrin:

15 hours ago, byRAM said:

Были бы не дураки, так не просрали бы архитектуру и не сгинули бы.

Кто архитектуру просрал, Atmel?

А микрочип купив эту ерунду тем не менее продолжает её выпускать и даже новое разрабатывает.

Зачем это микрочипу надо?

Клепали-бы пики и всё... но нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

13 hours ago, Arlleex said:

Он, вроде как, 5V МК хочет. Хотя, как я понял, вопрос был решен еще странице на 2 или 3:biggrin:

image.thumb.png.f057e353157c711a6a664ad45e3345c8.png 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

13 часов назад, ViKo сказал:

Да, нужен 5-вольтовый.

Как понимаю - выбрали PIC? А почему не STM8, как изначально собирались? Просто интересно....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 минут назад, jcxz сказал:

почему не STM8

Т.е. изучить новый МК у Вас получается даром? Навскидку, у STM 8-скоростной SPI, три бита — в общем-то понятно, люди продают лишь ядро, а периферия по остаточному принципу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, Plain сказал:

Т.е. изучить новый МК у Вас получается даром?

Это вопрос к ТС.

Цитата

Навскидку, у STM 8-скоростной SPI, три бита — в общем-то понятно, люди продают лишь ядро, а периферия по остаточному принципу.

А если посмотреть на АЦП? 12 бит АЦП для 8-битного МК да +DMA - это имхо далеко "не остаточный принцип". Правда это STM8L, в котором питание <=3.6V  :sad:

Но и STM8S - это 16МГц при (в основном) однотактовых командах. И наличии конвеера. Даже многие команды с памятью выполняются за 1 такт.

Например: INC (X) (инкремент байта в памяти) - всего 1 такт. А это чтение + инкремент + запись. И всё за 1 такт обещается! Даже Cortex-M такого не умеет. А младшие PIC - умеют?  :wink:

И в младших PIC-ах насколько помню - 4 такта на команду? При какой макс.тактовой? Или что-то изменилось по быстродейстию в младших PIC-ах, с тех пор как я на них смотрел последний раз?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, forummailandlogin сказал:

На приведёной картинке 7 констант в виде .EQU и 6 в виде чисел.

Это я попросил вас привести пример asm-проекта. Ваш стиль программирования далек от идеала - одни "магические" числа. В крайнем случае хоть бы макросами обернули безобразие со сдвигами.

Вместо вашего:

LDR R1, =(ItemMenu_ManualMode3-ItemMenu_TestMode1)<<24|0x00<<16|0x00<<8|ItemMenu_ManualMode3;

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

LDR R1, =(ItemMenu_ManualMode3-ItemMenu_TestMode1)<<V_MENU_BUTTON_STEP|0<<V_MENU_ROLL_RIGHT_STEP|0<<V_MENU_ROLL_LEFT_STEP|ItemMenu_ManualMode3<<V_MENU_ITEM;

в стиле самодокументирующегося кода.

Или через макрос:

LDR R1, =PARAM_MENU_STEP(ItemMenu_ManualMode3-ItemMenu_TestMode1, 0, 0, ItemMenu_ManualMode3);

Или через макрос без лишних параметров:

LDR R1, =PARAM_MENU(ItemMenu_ManualMode3-ItemMenu_TestMode1, ItemMenu_ManualMode3);

И зачем писать 0x00, когда проще писать просто 0?

Вот пример:

	.equ	UP		= PC1
	.equ	DOWN	= PC3
	.equ	LEFT	= PC2
	.equ	RIGHT	= PC0
	.equ	BTN		= PC5

	.equ	M_STOP	= (0 << UP) | (0 << DOWN) | (0 << LEFT) | (0 << RIGHT) | (1 << BTN)
	.equ	M_UP		= (1 << UP) | (0 << DOWN) | (0 << LEFT) | (0 << RIGHT) | (1 << BTN)
	.equ	M_DOWN	= (0 << UP) | (1 << DOWN) | (0 << LEFT) | (0 << RIGHT) | (1 << BTN)
	.equ	M_LEFT	= (0 << UP) | (0 << DOWN) | (1 << LEFT) | (0 << RIGHT) | (1 << BTN)
	.equ	M_RIGHT	= (0 << UP) | (0 << DOWN) | (0 << LEFT) | (1 << RIGHT) | (1 << BTN)
	
    ldi		temp, (1 << UP) | (1 << DOWN) | (1 << LEFT) | (1 << RIGHT) | (0 << BTN)
	out		DDRC, temp

	ldi		temp, M_STOP
	out		PORTC, temp

 

3 часа назад, jcxz сказал:

Получается - документации (официальной) на него нет? В этом случае я бы поостерёгся использовать его для более менее серьёзного проекта.

Документация есть, но в ней CAN полноценно не отражен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

45 минут назад, jcxz сказал:

А если посмотреть на АЦП?

Это не изменит такой SPI. И конвейер скорее всего будет только мешать — его можно отключить?

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

16 минут назад, adnega сказал:

Это я попросил вас привести пример asm-проекта...

Так я и не претендовал на пьедестал по красоте кода.

Можно конечно и 0 вместо 0x00, но вот почему-то мало кто задаётся вопросом, что если стоит 0x00 вместо 0, то не спроста. Хотите ответ? Соберите это всё в 32 бита без всяких смещений и думаю поймёте почему шестнадцатиричное чило вместо десятиричного.

 

Но макросы да, значительно снижают писанину.

Изменено пользователем forummailandlogin

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 минуту назад, forummailandlogin сказал:

Так я и не претендовал на пьедестал по красоте кода.

Можно конечно и 0 вместо 0x00, но вот почему-то мало кто задаётся вопросом, что если стоит 0x00 вместо 0, то не спроста. Хотите ответ? Соберите это всё в 32 бита без всяких смещений и думаю поймёте почему шестнадцатиричное чило вместо десятиричного.

В чем различия:

0) vVal << V_VAL_POS

1) 0<<16

2) 0x00<<16

3) 0<<0x10

4)0x00<<0x10

?

По-моему, никаких различий нет. Но самый читабельный вариант 0. Причем тут система счисления и сдвиги?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мало того что все куда-то и зачем-то ноль двигают, так еще и спорят как это лучше записать! :biggrin:

Что здесь вообще происходит?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

42 минуты назад, Plain сказал:

И конвейер скорее всего будет только мешать — его можно отключить?

Каким образом и чему мешать? :umnik2:

37 минут назад, forummailandlogin сказал:

что если стоит 0x00 вместо 0, то не спроста. Хотите ответ?

Хотим! И почему же? Что за магия такая? :wizard:

14 минут назад, zombi сказал:

Что здесь вообще происходит?

Здесь зачем-то хотят конвеер отключить, а потом 0 подвигать туды-сюды. :crazy:

58 минут назад, adnega сказал:

Документация есть, но в ней CAN полноценно не отражен.

Видимо там неполноценный CAN.  :sarcastic:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 минут назад, jcxz сказал:

Видимо там неполноценный CAN.  :sarcastic:

Вроде как, полноценный и даже какой-то стандартный. Может, какие правовые моменты не совсем корректные?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

28 минут назад, zombi сказал:

Мало того что все куда-то и зачем-то ноль двигают, так еще и спорят как это лучше записать! :biggrin:

Что здесь вообще происходит?

:biggrin:

 

48 минут назад, adnega сказал:

По-моему, никаких различий нет. Но самый читабельный вариант 0. Причем тут система счисления и сдвиги?

Хорошо. Объясню.

По комментариям не трудно заметить, что каждый октет это конкретное число.

		LDR		R1,	=(ItemMenu_AutoMode-ItemMenu_TestMode1)<<24|(ItemMenu_TestMode2-ItemMenu_TestMode1)<<16|0x00<<8|ItemMenu_TestMode1;	1/16
;					   ||										||											||		++-----------------	vMenuItem;
;					   ||										||		++-------------------------	vMenuRollLeftStep;
;					   ||										++---------------------------------	vMenuRollRightStep;
;					   ++--------------------------------------------------------------------------	vMenuButtonStep;

Сначало это выглядело так.

Всё четко видно.

		LDR		R1,	=0x010C0000;														1/16
;					   ||||||++-	vMenuItem;
;					   ||||++---	vMenuRollLeftStep;
;					   ||++-----	vMenuRollRightStep;
;					   ++-------	vMenuButtonStep;

Потом так...

		LDR		R1,	=0x01<<24|0C<<16|00<<8|00;														1/16
;					   ||||||++-	vMenuItem;
;					   ||||++---	vMenuRollLeftStep;
;					   ||++-----	vMenuRollRightStep;
;					   ++-------	vMenuButtonStep;

Но так естественно работать не будет - не такого числи "0C". Надо или переводить каждое число или просто всем дописать 0x поиском с заменой - всего пять раз мышкой клацнуть..

Но если это превести в десятичный вид...

То вообще нифига не видно.

		LDR		R1,	=17563648

 

 

 

И повторюсь. Да обёртка маросами не породила бы всех этих вопросов. Но всё равно нашёлся бы уникум которому бы не понравились бы макросы.  Я делаю так, как делаю.

135029441.255759493.jpeg

21 минуту назад, jcxz сказал:

Здесь зачем-то хотят конвеер отключить, а потом 0 подвигать туды-сюды. :crazy:

Задвинуть ноль в конвеер и он отключится сам от непонимания.:biggrin:

Изменено пользователем forummailandlogin

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

36 минут назад, jcxz сказал:

Каким образом и чему мешать?

ТЗ требует. Просто ответьте на вопрос, можно или нет. Пока что Вы лишь подтверждаете, какими методами сейчас разрабатывают микроконтроллеры.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

48 минут назад, Plain сказал:

ТЗ требует. Просто ответьте на вопрос, можно или нет.

Без понятия -> потому что это не нужно.

ТЗ для чего? Для того чтобы ответить на вопрос "Зачем отключать конвеер для работы с SPI?" ?  :wacko2:

48 минут назад, Plain сказал:

Пока что Вы лишь подтверждаете, какими методами сейчас разрабатывают микроконтроллеры.

Что именно я "подтверждаю" и каким образом? Я не имею никакого отношения к разработке микроконтроллеров. Я их использую.

Или это был наезд?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...