zombi 0 23 января, 2021 Опубликовано 23 января, 2021 · Жалоба 2 hours ago, MDD said: Справедливости ради "неистово колбасит" в этой теме почему-то именно Вас. Остальные более-менее беспристрастны и технически корректны. Аналогичное мнение сложилось 15 hours ago, byRAM said: Были бы не дураки, так не просрали бы архитектуру и не сгинули бы. Кто архитектуру просрал, Atmel? А микрочип купив эту ерунду тем не менее продолжает её выпускать и даже новое разрабатывает. Зачем это микрочипу надо? Клепали-бы пики и всё... но нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 23 января, 2021 Опубликовано 23 января, 2021 · Жалоба 13 hours ago, Arlleex said: Он, вроде как, 5V МК хочет. Хотя, как я понял, вопрос был решен еще странице на 2 или 3 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 235 23 января, 2021 Опубликовано 23 января, 2021 · Жалоба 13 часов назад, ViKo сказал: Да, нужен 5-вольтовый. Как понимаю - выбрали PIC? А почему не STM8, как изначально собирались? Просто интересно.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 199 23 января, 2021 Опубликовано 23 января, 2021 · Жалоба 5 минут назад, jcxz сказал: почему не STM8 Т.е. изучить новый МК у Вас получается даром? Навскидку, у STM 8-скоростной SPI, три бита — в общем-то понятно, люди продают лишь ядро, а периферия по остаточному принципу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 235 23 января, 2021 Опубликовано 23 января, 2021 · Жалоба 1 час назад, Plain сказал: Т.е. изучить новый МК у Вас получается даром? Это вопрос к ТС. Цитата Навскидку, у STM 8-скоростной SPI, три бита — в общем-то понятно, люди продают лишь ядро, а периферия по остаточному принципу. А если посмотреть на АЦП? 12 бит АЦП для 8-битного МК да +DMA - это имхо далеко "не остаточный принцип". Правда это STM8L, в котором питание <=3.6V Но и STM8S - это 16МГц при (в основном) однотактовых командах. И наличии конвеера. Даже многие команды с памятью выполняются за 1 такт. Например: INC (X) (инкремент байта в памяти) - всего 1 такт. А это чтение + инкремент + запись. И всё за 1 такт обещается! Даже Cortex-M такого не умеет. А младшие PIC - умеют? И в младших PIC-ах насколько помню - 4 такта на команду? При какой макс.тактовой? Или что-то изменилось по быстродейстию в младших PIC-ах, с тех пор как я на них смотрел последний раз? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 23 января, 2021 Опубликовано 23 января, 2021 · Жалоба 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 полноценно не отражен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 199 23 января, 2021 Опубликовано 23 января, 2021 · Жалоба 45 минут назад, jcxz сказал: А если посмотреть на АЦП? Это не изменит такой SPI. И конвейер скорее всего будет только мешать — его можно отключить? Я не говорю, что PIC идеал — по многим признакам, их уже давно пишут китайские студенты во время каникул. Но выбор комплектующих определяет задача — если что-то одно не устраивает, то всё остальное без разницы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
forummailandlogin 0 23 января, 2021 Опубликовано 23 января, 2021 (изменено) · Жалоба 16 минут назад, adnega сказал: Это я попросил вас привести пример asm-проекта... Так я и не претендовал на пьедестал по красоте кода. Можно конечно и 0 вместо 0x00, но вот почему-то мало кто задаётся вопросом, что если стоит 0x00 вместо 0, то не спроста. Хотите ответ? Соберите это всё в 32 бита без всяких смещений и думаю поймёте почему шестнадцатиричное чило вместо десятиричного. Но макросы да, значительно снижают писанину. Изменено 23 января, 2021 пользователем forummailandlogin Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 23 января, 2021 Опубликовано 23 января, 2021 · Жалоба 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. Причем тут система счисления и сдвиги? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 23 января, 2021 Опубликовано 23 января, 2021 · Жалоба Мало того что все куда-то и зачем-то ноль двигают, так еще и спорят как это лучше записать! Что здесь вообще происходит? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 235 23 января, 2021 Опубликовано 23 января, 2021 · Жалоба 42 минуты назад, Plain сказал: И конвейер скорее всего будет только мешать — его можно отключить? Каким образом и чему мешать? 37 минут назад, forummailandlogin сказал: что если стоит 0x00 вместо 0, то не спроста. Хотите ответ? Хотим! И почему же? Что за магия такая? 14 минут назад, zombi сказал: Что здесь вообще происходит? Здесь зачем-то хотят конвеер отключить, а потом 0 подвигать туды-сюды. 58 минут назад, adnega сказал: Документация есть, но в ней CAN полноценно не отражен. Видимо там неполноценный CAN. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 23 января, 2021 Опубликовано 23 января, 2021 · Жалоба 6 минут назад, jcxz сказал: Видимо там неполноценный CAN. Вроде как, полноценный и даже какой-то стандартный. Может, какие правовые моменты не совсем корректные? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
forummailandlogin 0 23 января, 2021 Опубликовано 23 января, 2021 (изменено) · Жалоба 28 минут назад, zombi сказал: Мало того что все куда-то и зачем-то ноль двигают, так еще и спорят как это лучше записать! Что здесь вообще происходит? 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 И повторюсь. Да обёртка маросами не породила бы всех этих вопросов. Но всё равно нашёлся бы уникум которому бы не понравились бы макросы. Я делаю так, как делаю. 21 минуту назад, jcxz сказал: Здесь зачем-то хотят конвеер отключить, а потом 0 подвигать туды-сюды. Задвинуть ноль в конвеер и он отключится сам от непонимания. Изменено 23 января, 2021 пользователем forummailandlogin Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 199 23 января, 2021 Опубликовано 23 января, 2021 · Жалоба 36 минут назад, jcxz сказал: Каким образом и чему мешать? ТЗ требует. Просто ответьте на вопрос, можно или нет. Пока что Вы лишь подтверждаете, какими методами сейчас разрабатывают микроконтроллеры. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 235 23 января, 2021 Опубликовано 23 января, 2021 · Жалоба 48 минут назад, Plain сказал: ТЗ требует. Просто ответьте на вопрос, можно или нет. Без понятия -> потому что это не нужно. ТЗ для чего? Для того чтобы ответить на вопрос "Зачем отключать конвеер для работы с SPI?" ? 48 минут назад, Plain сказал: Пока что Вы лишь подтверждаете, какими методами сейчас разрабатывают микроконтроллеры. Что именно я "подтверждаю" и каким образом? Я не имею никакого отношения к разработке микроконтроллеров. Я их использую. Или это был наезд? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться