Сообщение от NewWriter
|
Так ведь мало кто топчется на одном месте - люди давно уже вперед ушли. Кому интересно годами сидеть на одном и том же, даже если это просто хобби?
Сейчас уже даже совсем новички предпочитают что-то более совершенное и более материальное в плане того, что это можно осязать, потрогать, посмотреть вживую, применить на практике и получить реальный результат. Благо, появилось очень доступное по цене "железо" и надобность в программных симуляторах практически отпала. Что и подтверждается вашими результатами по ожиданию ответов.
Ассемблер уже давно не используется. Да и С99 безнадежно устарел (имею ввиду именно классический С версии 99-го года прошлого тысячелетия). Сейчас уже каждый третий знает C++ и пишет на нем (современная редакция C++17). Более совершенные компиляторы и более мощные МК позволяют писать на более сложных языках. С++ даёт большие возможности благодаря объектно-ориентированному подходу к программированию. Но полноценно применять С++ можно только на современных микроконтроллерах.
Протеус - некогда классная штука, но она не поспевает за развитием доступности компонентов.
Я сейчас использую Протеус только для домашнего рисования схем и печатных плат. Да и то, Протеус сделал прорыв в этом направлении только недавно, в версии 8.8 и 8.9, добавив возможность импортировать модели компонентов из специализированных интернет-ресурсов. Без этой возможности Протеус уже не отвечал современным требованиям.
Я понимаю, что развитие Протеуса тормозится большим числом пиратский версий и недополучением прибыли. Но черт возьми, вот обычный рядовой пользователь - откуда он возьмет сотню тыщщ руб на воскресное хобби?? Да он лучше эту сотню потратит на современный осциллограф, лабораторный блок питания и генератор сигналов.
|
Про каких новичков Вы говорите ? Про тех, кто не зная ядро пишет чужими библиотеками, в которых сам ни в зуб ногой ?
Дык это не новички - это старички: продадут кому-нить свою разработку - завтра в зуб ногой, и пойдут как и дальше - в танчики дрочить... Там никто не пинает.
Или Вы про тех "блоххеров" - блогеров: один написал (вряд-ли написал - содрал и перевёл англоязычный блог), и после где ни посмотри - одна и та-же фуфлятина на 100 сайтах, а где-ж те новички ?
которые взяли тот стм с максимальным количеством записи во флеш 10.000. Это при лучшем раскладе, при худшем как в стм8 - 100 записей.
И где-ж те новички будут учится ? запишет парочку команд - проверит сотенку раз а после что ? Опять Али, опять пяток китайских стм ?
пик32 хотя бы гарантирует
минимум 10.000 записей во флеш, у них это обычно значит норма - 100.000...
Так а чем этот стм прогрессивнее "PIC32MZ-EF- Family-DS60001320F" - может отсутствием эррат ? Дык да ! китаяйцы за копеечную цену своего товара никакую эррату не напишут, хорошо что с завода выходит боле-мене, на недельку хватит да и добра! Какие нах испытания на устойчивость, там даже бракованную память не закрывают ?!?...
Ну это ладно, Вы мне другое скажите:
Вам когда преподносят стм там в рекламных ... как назвать эту срань ...
прайсах чтоли...
Вам там обещают работу на частотах сколько 200 - 300 МГц ?
Напишите мне простую программу:
#define Pin_Test1 там какой-нить Интелловский DDRB = 1
#define Pin_Test0 там какой-нить Интелловский DDRB = 0
void main(void) {
while (1) {
Pin_Test1; // я и сам могу эти маркетинговые ходы проверить, но
Pin_Test0; // лень покупать: то что знаю - 100% потом выкину...
// на живом ослике мне покажите, а если мне не понравится, то я
// потрачу сраных 5 уёв, куплю это китайское ГЭ, и прогоню на своём
// осциллографе...
}
}
И ВЫ всётаки не ответили на мой вопрос по битовым структурам (звыняйте что к Вам обращаюсь, Вы ж тут бахвалите китайску продукцию):
Как вместо вот этого поноса:
// Register: TRISE
#define TRISE TRISE
extern volatile unsigned char TRISE @ 0xF96;
#ifndef _LIB_BUILD
asm("TRISE equ 0F96h");
#endif
// aliases
extern volatile unsigned char DDRE @ 0xF96;
#ifndef _LIB_BUILD
asm("DDRE equ 0F96h");
#endif
// bitfield definitions
typedef union {
struct {
unsigned TRISE0 :1;
unsigned TRISE1 :1;
unsigned TRISE2 :1;
unsigned :4;
unsigned WPUE3 :1;
};
struct {
unsigned RE0 :1;
unsigned RE1 :1;
unsigned RE2 :1;
};
} TRISEbits_t;
extern volatile TRISEbits_t TRISEbits @ 0xF96;
// bitfield macros
#define _TRISE_TRISE0_POSN 0x0
#define _TRISE_TRISE0_POSITION 0x0
#define _TRISE_TRISE0_SIZE 0x1
#define _TRISE_TRISE0_LENGTH 0x1
#define _TRISE_TRISE0_MASK 0x1
#define _TRISE_TRISE1_POSN 0x1
#define _TRISE_TRISE1_POSITION 0x1
#define _TRISE_TRISE1_SIZE 0x1
#define _TRISE_TRISE1_LENGTH 0x1
#define _TRISE_TRISE1_MASK 0x2
#define _TRISE_TRISE2_POSN 0x2
#define _TRISE_TRISE2_POSITION 0x2
#define _TRISE_TRISE2_SIZE 0x1
#define _TRISE_TRISE2_LENGTH 0x1
#define _TRISE_TRISE2_MASK 0x4
#define _TRISE_WPUE3_POSN 0x7
#define _TRISE_WPUE3_POSITION 0x7
#define _TRISE_WPUE3_SIZE 0x1
#define _TRISE_WPUE3_LENGTH 0x1
#define _TRISE_WPUE3_MASK 0x80
#define _TRISE_RE0_POSN 0x0
#define _TRISE_RE0_POSITION 0x0
#define _TRISE_RE0_SIZE 0x1
#define _TRISE_RE0_LENGTH 0x1
#define _TRISE_RE0_MASK 0x1
#define _TRISE_RE1_POSN 0x1
#define _TRISE_RE1_POSITION 0x1
#define _TRISE_RE1_SIZE 0x1
#define _TRISE_RE1_LENGTH 0x1
#define _TRISE_RE1_MASK 0x2
#define _TRISE_RE2_POSN 0x2
#define _TRISE_RE2_POSITION 0x2
#define _TRISE_RE2_SIZE 0x1
#define _TRISE_RE2_LENGTH 0x1
#define _TRISE_RE2_MASK 0x4
// alias bitfield definitions
typedef union {
struct {
unsigned TRISE0 :1;
unsigned TRISE1 :1;
unsigned TRISE2 :1;
unsigned :4;
unsigned WPUE3 :1;
};
struct {
unsigned RE0 :1;
unsigned RE1 :1;
unsigned RE2 :1;
};
} DDREbits_t;
extern volatile DDREbits_t DDREbits @ 0xF96;
// bitfield macros
#define _DDRE_TRISE0_POSN 0x0
#define _DDRE_TRISE0_POSITION 0x0
#define _DDRE_TRISE0_SIZE 0x1
#define _DDRE_TRISE0_LENGTH 0x1
#define _DDRE_TRISE0_MASK 0x1
#define _DDRE_TRISE1_POSN 0x1
#define _DDRE_TRISE1_POSITION 0x1
#define _DDRE_TRISE1_SIZE 0x1
#define _DDRE_TRISE1_LENGTH 0x1
#define _DDRE_TRISE1_MASK 0x2
#define _DDRE_TRISE2_POSN 0x2
#define _DDRE_TRISE2_POSITION 0x2
#define _DDRE_TRISE2_SIZE 0x1
#define _DDRE_TRISE2_LENGTH 0x1
#define _DDRE_TRISE2_MASK 0x4
#define _DDRE_WPUE3_POSN 0x7
#define _DDRE_WPUE3_POSITION 0x7
#define _DDRE_WPUE3_SIZE 0x1
#define _DDRE_WPUE3_LENGTH 0x1
#define _DDRE_WPUE3_MASK 0x80
#define _DDRE_RE0_POSN 0x0
#define _DDRE_RE0_POSITION 0x0
#define _DDRE_RE0_SIZE 0x1
#define _DDRE_RE0_LENGTH 0x1
#define _DDRE_RE0_MASK 0x1
#define _DDRE_RE1_POSN 0x1
#define _DDRE_RE1_POSITION 0x1
#define _DDRE_RE1_SIZE 0x1
#define _DDRE_RE1_LENGTH 0x1
#define _DDRE_RE1_MASK 0x2
#define _DDRE_RE2_POSN 0x2
#define _DDRE_RE2_POSITION 0x2
#define _DDRE_RE2_SIZE 0x1
#define _DDRE_RE2_LENGTH 0x1
#define _DDRE_RE2_MASK 0x4
Понатно, что этот понос чисто для портов проца, но я могу с помощью этой свалки добиться и того что мне нужно - а конкретно иметь красивый
доступ к битовым переменным конкретного байта...
Для асм:
#Define KN_PLUS_K STATUS_KN1,0 ; короткое нажатие кнопки "PLUS"
#Define KN_PLUS_D STATUS_KN2,0 ; длинное нажатие кнопки "PLUS"
Исполнение:
bsf/bcf KN_PLUS_K ; установка/сброс бита короткого нажатия конкретной кнопки
clrf STATUS_KN1 ; сброс коротких нажатий кнопок
clrf STATUS_KN2 ; и длинных
напишИте чтобы вот так для назначенного мною байта ОЗУ, только без порнографии - Вы говорите этот "
современная редакция C++17" это позволяет, да ?
Вы сейчас скажете что при имении кучи памяти это Вам не нужно - будете правы только в том случае, если используете заводские библиотеки, а если сами будете что-то рисовать то : ху-на-ны...
Ну и напоследок (заипался ужо писать):
Для 32 битных процев позиционируют там по 256, 512 и т.д. килобайт
ОЗУ. А какони обрабатываются внутри того же стм 32 ? Если как позиционируются - 8-ми битными, то разницы от 8-ми битника почти ноль - пока Вы загрузите данные в эти действительно 32 байта полноценной ОЗУ, Вы не намного ускачете от 8-ми битника, а если они
загружаются одной командой (4 байта), то если мне придётся задефайнить парочку бит для АЦП, к примеру, потом второй
32-ух битный для флагов меню, к примеру, и т.д... ТО, там памяти очень то и немного для полноценной работы...
Так как там в стм32 позиционируется память ? Как для лохов покупателей - 128 кБайт, или нормально - 32 32-битных килослова ?
Да и ещё вопрос: я незнаю чего Вы там пишете такого, что можно выкинуть на следующий день, НО !
Вы пишете именно сами, или этими китайско-долбанутыми библиотеками, в которых сами по нулям. И именно поэтому, если Вам дадут в зуб за Вашу разработку, то Вы конечно не к симулятору побежите, а жаловаться производителю китайщины - типа ВЫ ЧО ? Меня с говном смешали, ВЫ ЧО там за фуфловые библиотеки понаписывали - мы такие бабки отстёгиваем за ваш китай ????
И китаяйци начнут шевелить жопой и объяснять на ломанном славянском: типа у нас продукция по цене (и по качеству) ниже плинтуса - ну некагда нам это дерьмо тестировать, возьмите более старое дерьмо - там мы уже на людях оттестировали...