www.elektronik.si
MSP430 in zbirni jezik

www.elektronik.si -> 16 bitni mlinčki

Avtor: KnapKraj: Maribor PrispevekObjavljeno: Pon Feb 26, 2018 12:08 am    Naslov sporočila:  MSP430 in zbirni jezik
----------------------------------------------------------------------------
Prosim za mnenje zakaj da in zakaj ne uporabiti zbirni jezik pri mikrokrmilnikih MSP430G2xxxx in MSP430FRxxxx. Sam se nagibam k da.

Hvala za mnenja.

Avtor: DorijanKraj: južnoprimorska PrispevekObjavljeno: Pon Feb 26, 2018 2:40 am    Naslov sporočila:  Re: MSP430 in zbirni jezik
----------------------------------------------------------------------------
Knap je napisal/a:
Prosim za mnenje zakaj da in zakaj ne uporabiti zbirni jezik pri mikrokrmilnikih MSP430G2xxxx in MSP430FRxxxx. Sam se nagibam k da.

Hvala za mnenja.
Najprej napiši kaj boš delal, da ti bo kdo sploh vedel svetovati.

Avtor: KnapKraj: Maribor PrispevekObjavljeno: Pon Feb 26, 2018 11:46 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Gre za upravljanje profesionalnih naprav. Zanima me preprosto dejstvo kaj je bolje. Zbirni jezik, C, C++ ali katerikoli višji jezik. Upoštevajte prosim zanesljivost.

Program in module v krmilniku bi lahko uporabil za preprostega robota. En krmilnik sprejema podatke, jih obdela, primerja in izvaja nadaljne korake po programu. MSP sem izbral zaradi zelo nizke porabe v mirovanju in možnostjo uporabe več različnih stopenj mirovanja (Power Mode).

Lahko pa vprašanje vzamete kot preprosto anketo zakaj se ne odločate za zbirni jezik. Morda kdo vidi prednosti v zbirnem jeziku. Te me zanimajo.

Avtor: mato1111Kraj: Vrhnika PrispevekObjavljeno: Tor Feb 27, 2018 12:24 am    Naslov sporočila:  
----------------------------------------------------------------------------
Dobra lastnost zbirnika je da je izvajanje programa hitrejše ker ubistvu izvajaš operacije direktno nad registri ter sam program zavzame manj prostora na mikrokontrolerju kot naprimer če bi ga napisal v C-ju in višjih jezikih.
Slaba lastnost je to da je težje programirat če tega še nisi počel in tudi razhroščevanje oz iskanje napak v programu je težje. Ubistvu je vse skupaj zelo bolj zakomplicirano kot v C-ju (razen za koga ki se s tem srečuje vsak dan).
Jaz bi zbirnik uporabil (če že) bolj za kakšne kratke programe, ki pa se morajo čim hitreje izvajati kot naprimer pri DSP procesorjih.

IF stavek v C-ju:
Koda:
if (x == y)
{
   z = 1;
}
else
{
   z = 0;
}

Stavek IF v zbirniku:
Koda:

    MOVE _x, R7             // Move x into Data Register R7
    COMPARE _y, R7          // Now compare x with y
    BRANCH_IF_NOT_EQUAL L1  // If not equal branch to the else leg specified by label L1
    MOVE #1, _z             // Moving 1 into z
    BRANCH_ALWAYS L2        // Branch beyond the if-then-else statement
    // Else portion of the if-else statement
    L1 MOVE #0, _z             // Set z to zero
    // End of if-else statement. if portion of the statement executes an
    // unconditional branch to reach L2. The else leg falls through into L2
    L2 . . .

Avtor: KnapKraj: Maribor PrispevekObjavljeno: Tor Feb 27, 2018 2:33 am    Naslov sporočila:  
----------------------------------------------------------------------------
Mato pozdravljen. Da, programiram v zbirniku in sem mu tudi naklonjen. Mnogi me prepričujejo v platformo Arduino ampak takšni platformi ne zaupam preveč. Po moje je bolj namenjena za učenje in enkratne projekte ter hoby. Somišljeniki mi odsvetujejo celo delo z direktivami prevajalniku. Program ustvarjam z CCS. Uporabljam komentarje v vsaki vrstici in pišem program po diagramu poteka tako, da se hitro znajdem v programu. Je pa res, da so programi namenjeni napravam za katere vemo potek delovanja v naprej in so odvisne le od pozicijskih stikal, dveh do treh analognih senzorjev in kakšnega kodirnega stikala ali dajalnika impulzov. Počasi pa vključujem še LCD prikazovalnik.
Hvala za tvoje mnenje. Kratko in jedernato, cenim.

Avtor: Energetik-mKraj: Zagorje PrispevekObjavljeno: Tor Feb 27, 2018 8:54 am    Naslov sporočila:  
----------------------------------------------------------------------------
Z MSP430 sem naredil nekaj projektov, ki so šli v serijo nekaj sto kosov, npr. števec impulzov, katerega total je možno brati po serijski komunikaciji, ob izpadu napajanja pa trenutne vrednosti pospravi v EEProm. Prav vse sem napisal v C-ju, razvojno okolje CCS. Vsekakor imaš več programerjev, ki lahko za tabo vzdržujejo program, napisan v C-ju kot v zbirniku.
Še to o direktivah, ki ti jih odsvetujejo, kako boš sicer napisal prekinitveno rutino?

Avtor: KnapKraj: Maribor PrispevekObjavljeno: Tor Feb 27, 2018 12:46 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Pozdrav Energetik-m. Dobra trditev. Res več programerjev obvlada C ali C++ kot zbirni jezik in je kasneje vzdrževanje lažje, ker je lažje najti programerja z znanjem C-ja kot zbirnega jezika.
Brez vseh rutin res ne gre. Uporabljam samo tiste najnujnejše, ena takšnih je ISR.
Izogibati se skušam tem direktivam in podobnim:
4.7 Conditional Assembly Directives
Conditional assembly directives enable you to instruct the assembler to assemble certain
sections of code according to a true or false evaluation of an expression. Two sets of
directives allow you to assemble conditional blocks of code:
· The .if/.elseif/.else/.endif directives tell the assembler to conditionally assemble a block
of code according to the evaluation of an expression.

V kolikor bi uporabil vse možne rutine je res bolje pisati v C-ju.

Hvala za zelo korekten in utemeljen odgovor.

Avtor: mujoKraj: MB PrispevekObjavljeno: Sre Feb 28, 2018 9:57 am    Naslov sporočila:  
----------------------------------------------------------------------------
C prevajalniki so postali zelo učinkoviti. Razmišlanje, da bi kodo pisal v zbirniku zaradi optimizacije hitrosti oziroma manjše porabe pomnilnika je zmotno.

Zbirnik se prevede v strojno kodo 1:1, C kodo pa lahko prevede na različne načine. Med drugim imaš različne stopnje optimizacije (velikost izhoda, hitrost izvajanja, ...).

Drži pa tudi, da določeni deli programa morajo biti napisani v zbirniku. To so primeri, kjer je nujno upoštevanjanje vrstnega reda izvajanja. Je pa tega zelo malo.

Sem mnenja, da je zbirnik dobro poznati, ampak nima smisla pisati kode v njem, ker boš porabil preveč časa. Raje pridobljeni čas uporabi za testiranje.

Avtor: KnapKraj: Maribor PrispevekObjavljeno: Sre Feb 28, 2018 5:29 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Hvala za odgovor mujo. Odgovor, ki ne zahteva razmislekov. Se mi dopade.
Bom kasneje razkril namen vprašanja. Morda bo še kdo podal svoje mnenje. Le tako lahko ostane nevtralnost, brez "navijaštva".

Avtor: frenkiKraj: Ljubljana (JN76GB) PrispevekObjavljeno: Sre Feb 28, 2018 6:50 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Knap je napisal/a:
Gre za upravljanje profesionalnih naprav. ... Upoštevajte prosim zanesljivost. ... Program in module v krmilniku bi lahko uporabil za preprostega robota. ... MSP sem izbral zaradi zelo nizke porabe v mirovanju in možnostjo uporabe več različnih stopenj mirovanja (Power Mode). ...

Nekaj stvari mi v tvojih prispevkih ne gre ravno skupaj. Izbral si 16 bitno MSP430 družino ultra low power krmilnikov, z njimi bi se pa na robota (ki bo z vsemi svojimi motorji in aktuatorji pokuril mnooogo več, kot boš s tvojim ultra varčnim kontrolerjem prišparal) v zbirniku spravil. Ti krmilniki imajo svojo nišo, sem pa skoraj prepričan, da za nalogo, za katero si jih predvidel niso najprimernejši.

Še moje mnenje o zbirniku. Zanesljivost neposredno v zvezi z alternativo zbirnika/c dialekta nima nobene zveze. Tukaj želiš mešat hruške in zelje. Zelo malo razvijalcev poznam, ki bi bili sposobni nekaj v zbirniku napisat bolje od tega, kar vržejo od sebe današnji prevajalniki c dialektov ob korektno napisani vhodni vsebini. Vključevanje zbirniških rutin (... če bi že res iz kakega obskurnega razloga bilo potrebno ...) pa tako ali tako omogoča večina današnjih orodij. Upam, da boš res razkril kak "razlog" za uporabo zbirnika v zvezi z napovedanim upravljanjem profesionalnih naprav, ki bo poskušal podpreti tvojo naklonjenost (navijaštvo Wink ). Mislim pa, da v današnjem času v 99% primerov tehtnih razlogov za težnjo k uporabi zbirnika ni. Lahko da obstajajo osebni razlogi (... to znam, pa bi še naprej na tem delal ..., ... vse ostalo je na ta način narejeno, pa naj bo še to ..., ... cenejše razvojno okolje ..., ... šef misli, da bo tako bolje ...) za to, o tehničnih se pa le razpiši, me res zanimajo.

Lp, Frenki

Avtor: MitjaNKraj: Ljubljana PrispevekObjavljeno: Sre Feb 28, 2018 11:05 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Zbirnik je smiselen kjer imaš omejeno širino problema in/ali se ti mudi. Kar se ti pri današnji strojni opremi praktično ne zgodi več. Za karkoli drugega je to na dolgi rok samo težava.

Za UI (tipke, LED-ice, prikazovalniki) se ti zagotovo ne mudi, ker je človek zelo počasen tako da nima smisla komplicirati z zbirnikom.

Pri kakršni koli resni komunikaciji ti bo prekladanje bufferjev na levo in desno lažje s C-jem. Izjema je morebiti komunikacija za katero strojna oprema sicer ni mišljena, vendar se ti za en projekt ne da iti na nekaj novega in si na meji s hitrostjo prenosa oziroma rešuješ probleme, ker strojna oprema ne nudi ustrezne podpore.

Ostane še obdelava signalov. In če delaš s strojno opremo ki je namenjena za to po navadi proizvajalec nudi tudi knjižnice za tipične operacije (FFT, FIR, IIR, konvolucija, ...), ki se kličejo iz C-ja.

Ima pa tudi C precej problemov. Eden je recimo obnašanje pri prelivu celih števil. Tipično bi raje, da gre število v nasičenje. Kar v zbirniku dosežeš s spremembo enega konfiguracijskega bita. V C ju ti pa ne uideta dva if stavka.

In kot je že dejal frenki so tu še varnostni aspekti. Če se boš šel kakšno validacijo in verifikacijo ti bo bistveno lažje če delaš v C-ju in se držiš MISRA ali CERT C standarda

Avtor: KnapKraj: Maribor PrispevekObjavljeno: Sre Feb 28, 2018 11:29 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Hvala mojstra,

konkretna in globoka odgovora. Res nisem omenil, da bi se rad omejil na osnove programiranja. Moja napaka. Se opravičujem.
V mislih sem imel osnovno vodenje linearnega pogona z nekaj stikali in kakšnim kodirnim stikalom. Prenosa podatkov ne bo, tako komunikacija ni potrebna. Uporabil bi senzorje in ne tipal. S tem je manj dela s programom. Morda kakšno enostavno tipalo za AD pretvornik kot je NTC. Kasneje kak strojček za vožnjo. Recimo da je uporaba senzorja HC-SR04 v kombinaciji z dajalnikom impuzov na motorju že dovolj.

Lep pozdrav

Avtor: frenkiKraj: Ljubljana (JN76GB) PrispevekObjavljeno: Čet Mar 01, 2018 10:28 am    Naslov sporočila:  
----------------------------------------------------------------------------
Knap je napisal/a:
Upoštevajte prosim zanesljivost.

Knap je napisal/a:
Recimo da je uporaba senzorja HC-SR04 v kombinaciji z dajalnikom impuzov na motorju že dovolj.

A ti tole poskušaš koga malo

Avtor: MadMax PrispevekObjavljeno: Čet Mar 01, 2018 10:33 am    Naslov sporočila:  
----------------------------------------------------------------------------
Ne samo poskuša, pravzaprav mu gre kar dobro Whistle

Avtor: KnapKraj: Maribor PrispevekObjavljeno: Čet Mar 01, 2018 11:58 am    Naslov sporočila:  
----------------------------------------------------------------------------
Spoštovani Frenki,

kot moderatorju sem Vam podal odgovor in namen na e-pošto.
Bom v kratkem tudi vsem ostalim pojasnil zadevo.

Avtor: KnapKraj: Maribor PrispevekObjavljeno: Pon Mar 05, 2018 3:14 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Hvala vsem za odgovore. Morda bi bilo mesto tej temi med anketami.
Točno pri omenjenem mikrokrmilniku programsko okolje CCS podpira C jezik in zbirni jezik. V C jeziku je narejenih oziruma zapisanih že ogromno programčkov za razne namene. S tem je omogočeno enostavno copy/paste. V pedagoškem procesu se večina zadev odvija "po liniji najmanjšega odpora". V kolikor bi dodal še platformo Arduino je pa po moje 90% zadev za začetnike že na spletu.
Preprosto sem želel odziv, da bi se lažje odločil ali uporabiti C jezik ali zbirni jezik. V CCS-u je možen celo miks teh dveh jezikov. Za spoznavanje logike programiranja in sam začetek je na tej stopnji skorajda vseeno ali C ali zbirni jezik. Lahko je sedaj kdo drugačnega mnenja. Z veseljem bom prebral tudi te komentarje.

Avtor: Jaka57Kraj: Grosuplje PrispevekObjavljeno: Pon Mar 05, 2018 6:50 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Knap je napisal/a:
.......Točno pri omenjenem mikrokrmilniku programsko okolje CCS podpira C jezik in zbirni jezik. ..........
Večina programskih okolij omogoča vključevanje strojnega jezika, tako, da to ni nič posebnega.

Stran 1 od 1

Powered by phpBB © 2001,2002 phpBB Group