Отговори на тема  [ 33 мнения ]  Отиди на страница Предишна  1, 2, 3  Следваща
8051 PIN пойнер? акцес 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Ное 21, 2004 10:31 pm
Мнения: 9635
Мнение Re: 8051 PIN пойнер? акцес
краварите кипиха чипкон и просто продължиха да продават. не съм много навътре къде са си дялкали силикона чипконци, но е възможно краварите просто да са продължили контракта със силиконарницата. за чипкон сделката беше добра - проблемите почнаха да гноясват и те уцелиха точния момент да кешират и да се измъкнат преди цирея да се спука. после краварския съпорт всички знаят на какви висоти се издигна, че и нищо кой знае какво ново не доразвиха.

8051 си е много просто ядро. дори петокусрсник би трябвало да може да го синтезира на верилог. има сигурно стотици реализации - от пълно 12 стейджа пайплайн, до 1 енструкция-1 цикъл. понеже оригиналния дизайн е с много малко памет, а и се набляга на малкия код, вътрешното адресно пространство се индексира само с един байт, съответно регистрите на периферията - също. т.е. инструкциите към тази памет са само с един байт операнд. съответно, съществува концепция за по-голяма външна памет, но тя се достъпва по друг начин. вече не помня дали в оригиналното 8051 имаше и третия вид памет - побитово адресируеми регистри (тоя век не съм пипал 8051)

ардуиното, от друга страна, тръгва от AVR8. там няма концепция за няколко памети.
в стремежа си да универсилизират ардуино концепцията, явно в един момент са минали на абстракция от табличка от поинтери към адресни регистри, с които се отделя конкретната реализация. което по принцип не е лошо, докато земята е плоска. но когато се появят няколко вида адресни пространства, трябва да се играе по свирката на компилатора - как той вижда земята през неговия си телескоп. и тогава абстракцията вече не е чак толкова удобна, разбираема или дори ефективна. както се вижда от кода, трябва да пишеш доста грозни неща, за да цъкнеш един бит, и то за нещо, което става само с една инструкция на процесора.

добре, че не иде реч за С++ :roll:


Вто Ное 14, 2017 8:41 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 27, 2005 11:48 am
Мнения: 4671
Мнение Re: 8051 PIN пойнер? акцес
е в тоя чипкон побитовото пространство е орязано(както го правят в AVR)
директния пин акцес ми дава около 250 нано сек пулс, но абстрактния минава над 10 микро сек и DHT-а умря

_________________
main[-1u]={1};


Вто Ное 14, 2017 8:58 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 8:21 pm
Мнения: 27949
Местоположение: София
Мнение Re: 8051 PIN пойнер? акцес
Е за това говорим,10 хишяди наносекунди абстракция, за това време се пояеяват нови светове еволюират и озчезват, а ти един пин не можеш да разклатиш.
Има такива които не следват евангелието толкова праведно, не само са цикъл на имстеукция но и като рвгистри и памет са почти ама не съвсем. 3 модела е, да не кажа 4, рвгистри, върршна и външна, като външната е не съвсем външна, т.е. Xdata на чипа, и съвсем външна. Отделно имал различни модели които задаваш на компилаторо, мен ми харесва каъо за малък чип, в повечето случаи е по-удобен от пика или авр-а.


Сря Ное 15, 2017 4:35 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 8:21 pm
Мнения: 27949
Местоположение: София
Мнение Re: 8051 PIN пойнер? акцес
Да си го на телефунга, сори за грешките но нямам нерви да го коригирам през тела, май е за смяна, буквите ги налучквам малко с изместване на ляво и нагоре....


Сря Ное 15, 2017 4:37 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Дек 19, 2005 11:21 am
Мнения: 1025
Мнение Re: 8051 PIN пойнер? акцес
ДедоБоре написа:
добре, че не иде реч за С++ :roll:


Как да не иде реч, в Ардуино средата се ползват елемени от C++ в някои библиотеки ако не се лъжа :).


Сря Ное 15, 2017 10:49 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 5:52 pm
Мнения: 10356
Местоположение: Добрич
Мнение Re: 8051 PIN пойнер? акцес
В Ц++ има constexpr и шаблони и стига съответното API да е кадърно написано се решава проблема с овърхеда...


Сря Ное 15, 2017 10:58 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Юли 31, 2007 1:55 pm
Мнения: 1792
Местоположение: София
Мнение Re: 8051 PIN пойнер? акцес
miro_atc написа:
В Ц++ има constexpr и шаблони и стига съответното API да е кадърно написано се решава проблема с овърхеда...

И това ако пинът е знаен чак в runtime? :)


Сря Ное 15, 2017 11:05 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Ное 21, 2004 10:31 pm
Мнения: 9635
Мнение Re: 8051 PIN пойнер? акцес
донякъде съм съгласен, че при кадърно писане на С++ може да се постигнат резултати, близки до плейн С. само донякъде, обаче.
силно съм против началното обучение по програмиране да започва с С++ или Java, еле пък за микроконтролери. това са езици, на които се говори на друга планета. и човек трябва да има опит, за да се възползва оптимално от концепциите, заложени в тях.

в днешно време се наблюдава наслояване на нива на API и абстракции, понякога стигат до десетки слоя един върху друг. всеки (пъпчив) програмист си има собствена авангардна визия кое как изглежда във вселената, и първата му работа е да си направи свой сет от функции/данни/методи, които да закачи към нещо готово. получава се нещо като арт-инсталация и арт-перформънс...

в ардуино, като изцяло любителски проект, не може да се очаква качествен концептуален подход, просто защото се пише от разнородна тълпа не дотам квалифицирани програмисти. за обща визия и стил надали може да се говори. съответно предимствата на С++ и абстракциите се превръщат от предимство в недостатък.

а да се слагат 8051 и С++ в едно изречение е по-скоро академично занимание и в практиката трябва да се избягва


Сря Ное 15, 2017 11:38 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 5:52 pm
Мнения: 10356
Местоположение: Добрич
Мнение Re: 8051 PIN пойнер? акцес
woody написа:
И това ако пинът е знаен чак в runtime? :)


Както казах въпросът е в API-то, ако то не работи с const няма как да стане разбира се. В случая с пиновете не мисля че се налага runtime промяна. Достатъчно е да може да се конфигурират, примерно както човека си има библиотечка за клатене на DT-нещо си. Ако е направена правилно ще работи и по двата начина...

Относно спора Ц vs Ц++ .... и преди съм го казвал, че е абсолютно безсмислен. Единственото предимство, което чистото Ц евентуално може да има е липсата на Ц++ компилатор за някоя платформа. Но в GCC, както и при почти всички комерсиални среди двата компилатора се поддържат равностойно. В останалите случаи не знам дали можем да говорим за предимство на езика или липса на съвременна поддръжка или мъртва архитектура ;-)


Сря Ное 15, 2017 1:09 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 27, 2005 11:48 am
Мнения: 4671
Мнение Re: 8051 PIN пойнер? акцес
В оригиналното Ардуино/Атмел абстракциите са сведени до минимум, един вид "оптимизация"... във всички други портове си е мазало....
а това което забелязах IAR 8051 се справяше доста добре като C++ в Ардуино средата с няколко класа товар,
незнам ако го натоваря със стрингове как ще се справи maloc/free <--- освен това друго не ме притеснява...

Всъщност Ардуиното го имам за нещо като "реклама", средсво за обучение, игра/хоби и нищо повече
а първия ми допир с него беше има няма преди месец докато портвах Quectel за него

_________________
main[-1u]={1};


Сря Ное 15, 2017 1:12 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Юли 31, 2007 1:55 pm
Мнения: 1792
Местоположение: София
Мнение Re: 8051 PIN пойнер? акцес
miro_atc написа:
woody написа:
И това ако пинът е знаен чак в runtime? :)


Както казах въпросът е в API-то, ако то не работи с const няма как да стане разбира се. В случая с пиновете не мисля че се налага runtime промяна.

Какво пречи да го направи с макроси тогава? Нали всичко е syntactic sugar.


Сря Ное 15, 2017 2:10 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 5:52 pm
Мнения: 10356
Местоположение: Добрич
Мнение Re: 8051 PIN пойнер? акцес
woody написа:
Какво пречи да го направи с макроси тогава? Нали всичко е syntactic sugar.


Далеч не е само захарче в синтаксиса..

Имаш библиотека за DHT-a някакви... На нея трябва да й подадеш някакви пинове и някакъв механизъм да си ги клати.
Представи си че може да имаш повече от 1 датчик, при това свързани по различен начин, примерно един директно на gpio, друг на gpio експандер и трети датчик, който се избира run time.
Очевидно не става по този начин библиотечка с макроси. Най-малкото щото не можеш да компилираш нищо докато не дефинираш макросите. Хайде да кажем няма да е библиотекча ще е сорс... ама пак нямаш грам контрол какво ще ти подадат като макроси, отделно че трябва да се прекомпилира толкова пъти, колкото различни дефиниции на макросите имаш, като при това ще получиш един куп дублирания на много неща дето да се чудиш как да оправяш...

Не става! То ако ставаше нямаше да измислят шаблоните, овърлоадванията и т.н.


Сря Ное 15, 2017 4:53 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 27, 2005 11:48 am
Мнения: 4671
Мнение Re: 8051 PIN пойнер? акцес
не става на този сок... поне в момента не се сещам как да стене универсално за Ардуино средата освен със свич/кейс...
обаче губя "бързите" сенсори или тряя да се пишат оптимизирани библиотеки

Код:
#define read_reg(addr) (*(volatile uint8_t *)(addr))
int main( void ){
    P0_0 = 1;
    P0_1 = 0;
   
    uint8_t val = read_reg(0x7080); // PORTx САМО четене, не поддържа запис


той го обръща на

Код:
main:
        CODE
        REQUIRE ?V0
        REQUIRE ?V1

директ
        SETB    0x80.0
        CLR     0x80.1

абстрактно
        MOV     DPTR,#0x7080
        MOVX    A,@DPTR
        MOV     ?V0,A
        MOV     ?V1,#0x0
        MOV     R2,?V0
        MOV     R3,?V1
        LJMP    ?BRET
        REQUIRE _A_P0


зае.ал съм го за момента да втаса :) оправях си днес драйвера за RF-a в IAR-а

_________________
main[-1u]={1};


Сря Ное 15, 2017 7:14 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 8:21 pm
Мнения: 27949
Местоположение: София
Мнение Re: 8051 PIN пойнер? акцес
Ох, това зависи много от компилатора, например кейла изгубих си последно 3-4 часа докато ги накарам да компилира всичко по начина който го искам, т.е.да си използва побитовите команди. Да го бях написал 50 пъти на асемблер, но го добутах, та имай това на ум. С чистия С /С++ подход няма да стане например с кейл, трябва да го насилиш за да няма избор. Отделно и абстракцията трябва да е изнасилена най-вероятно. Но си зависи от кпмпилатора де.


Чет Ное 16, 2017 4:27 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 25, 2005 10:41 am
Мнения: 1657
Мнение Re: 8051 PIN пойнер? акцес
Виж сърбите как го правят..... преди години правих съпорт на CC2510 за техен компилатор...


Вто Ное 28, 2017 2:57 pm
Профил ICQ WWW
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 33 мнения ]  Отиди на страница Предишна  1, 2, 3  Следваща

Кой е на линия

Потребители разглеждащи този форум: syscop и 3 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни