AD převodník: využití dalších pinů stejného portu pro output

Tak tak, s C si to užiješ. S BASCOMem to bude trápení. (nainstaloval jsem to a… zase odinstaloval :slight_smile:

To Atlan: Proč si myslíš, že se nedávaj 5 letým klukům řidičáky na silnou motorku? S C bych dopadnul nejspíš stejně. Neřízená střela, co způsobí víc škody než užitku.

To Radius: Když léta děláš v C, tak se ti nedivím. Teď si představ, že by jsi musel začít pracovat s 3D cadem Solid Edge. Já v něm dělám roky, ale ty pro svůj DITY projet taky nejspíš nepoužil a nakreslil by sis potřebný věci ve 2D Autocadu i když ten můj cad je na to výrazně lepší.

TO Kolbaba71: Budeš se divit ale stalo se mi že jsem musel doslova přes noc začít dělat 3D návrh. Vybral jsem si na práci AUTOCAD 2006. Já jsem asi tak dobrej strojař jako ty programátor a přesto si myslím že kdybych si vybral nějaký výrazně slabší návrhový prostředek tak bych asi pohořel.
K C můžu poznamenat jen tolik že osoba která rutinně neprogramuje a C viděla prvně v životě, byla shopná do připravené kostry programu shopná doprogramovat zbytek už za den seznamování se s tímto jazykem. (použila asi 5 příkazů) :slight_smile: ale to úplně stačilo.

PS: Dneska bych asi startoval se SOLIDEM ale tenkrát jsem neměl dots informací.

To Kolbaba71:
Podle mě bys měl nejdřív ochutnat (zkusit) a pak soudit.

To Kolbaba71:
Na mohutnu pracu v C-cku (GCC) Ti staci vediet 31 nasledovnych prikazov a prvkov:


//

/*
*/

int8_t
uint8_t
int16_t
uint16_t
int16_t
uint16_t

( )
{ }
 ]
=
+
-
*
/
>>
<<
&&
||
==
!=
&
|
^
~


int main (void)
{
}

unit16_t funkcia(parameter1, parameter2, ..., parameterX); // deklaracia funkcie

unit16_t funkcia(parameter1, parameter2, ..., parameterX) {
} // definicia funkcie s prenosom parametov


if (podmieka) {

}
else {

}

while (podmienka) {

}

for(;;) { 
} // tento prikaz sa da vzdy nahradit pomocou while()

switch() {
}// tento prikaz sa da vzdy nahradit pomocou viacerych if()

na ukazatele a linkovanie viacerych zdrojovych suborov atd atd mas dost casu. Male veci - tak do 100-2000riadkov - vystacia s tymito konstruktami.
Prenasanie parametrov cez ukazatele na zaciatku hravo zvladnes pouzitim globalnych premennych v ramci jedneho *.c suboru.
Co je vsak dolezitejsie, na NETe najdes omnoho omnoho viac prikladov v C-cku a skor Ti niekto poradi ako s Bascom-om.

Podla mojho nazoru su skusenosti s Bascom-om viac menej zbytocne, tak by som to neporovnaval s bicyklom a motorkou.

Najvacsi problem asi maju zaciatocnici zo zdanliveho mora velmi podobnych zatvoriek, ktore zaciatocnikovi zneprehladnuju text, ale po dvoch -troch tyzdnoch si z toho vonku. :slight_smile:

Nasiel som na nete celkom pekne vyzerajuci tutorial pre C.

rirs.iedu.sk/Dokumenty/Ucebn … elan/C.pdf

AK chces v C programovat jednocipaky, neuc sa C-cko na PC, poznam viacerych, ktorych to skor odradzovalo (naco “Hello world”, ja chcem blikat LEDkou) a maju pravdu. Programovat v C treba zacat hned priamo na jednocipaku. Drzim palce.

:arrow_right: administrator: přiloženy externí soubory
C.pdf (1010 KB)

Ked nic ine viac ludi co ti poradi ako dalej v Ccku kedz to BASCOM je obmedzenejsi n na rozsirenie.

Už by se měl konečně zbořit mýtus, že asembler je jednodušší než nějaký vyšší jazyk. Srovnání kola s pomocnými kolečky a motorky tu vůbec nesedí.
Spíš je to jako řídit Trambus bez všech těch posilovačů a s řazením s meziplynem (asm) a moderní kamion s automatem, kde volantem můžeš točit jedním prstem.

a nebo jinak - asm je jako DOS a C jako windows.Kolikpak sekretářek by si bylo schopných spustit nějaký ten psací program z DOSu?

Jenže na to si musí každý přijít sám.

Na druhou stranu vůbec není k zahození asembler znát a ten kdo začíná by si měl pomocí asm příkazů alespoň rozblikat ledku.

Na assemblér tu ani řeč nepřišla :slight_smile: Kolega se bojí začít s C, že by ho to zdrželo - já myslím že urychlilo. Něco málo ASM se hodí znát už proto když compilátor vygeneruje nějakou blbost, tak aby to člověk byl schopnej dohledat. Možnost zoptimalizovat si kritické sekce SW se taky hodí.

Zeptám se na malý detail. Jak udělat v C (například)
SBI PORTB, 0
bez použití direktivy ASM ? Mě napadá jenom
PORTB|=1
Jenže to jsou 3 instrukce, ne 1 …

Zatím používám assembler. C sice umím, ale skoro vůbec nepoužívám. Naposled jsem zkoušel napsat prográmek v C, ale nevešel jsem se do MCU - a to celkem o dost (i se zapnutýma optimalizacema). Tak jsem to napsal v assembleru a zbylo mi místo ještě na 1 instrukci (2 byty) navíc.

Záleží na překladači a jeho optimalizaci. Např. gcc (WinAVR) přeloží PORTB|=1 jako 1 instrukci SBI PORTB, 0.

Výhodou práce v C je mnohem vyšší rychlost vývoje aplikace oproti ASM a také mnohem nižší omylnost (menší problémy s hledáním chyb). Často překladač umí překládat optimálněji než začátečník v ASM - i např. proto, že umí efektivně využívat registry, což si někdy ASM programátor nemůže dovolit kvůli udržení přehledu. U velmi malých procesorů (tiny) může být sice ASM nutnost, ale při současných cenách bývá výhodnější použít větší procesor a možnost snazšího vývoje.

Rozumný způsob práce je vyvíjet v C, kontrolovat si z listingu překlad a když některá místa se nezdají být kvalitně přeložená, tak až potom je nahradit inline assemblerem.

No, mě to právě WinAVR přeložil nějak takhle :

in registr, PORTB
sbr registr, 0x01
out POTRB, registr

Ale ještě na to kouknu, možná jsem to nezkoušel se všema optimalizacema.

Asi jsi neměl zapnutou optimalizaci. (-Os)

Preco si to nevyskusas? Zistil by si (ako tu uz bolo napisane) ze to GCC prelozi korektne a nie podla predstav “ako by to slo horsie” a preto asi bude lepsie pouzit ASM.

Program v ASM pri vysokych znalostiach a skusenostiach naozaj vies stlacit do mensej Flash a moze dokonca bezat aj rychlejse. No a? Ked je cena medzi ATtiny25 (TME 1ks za 0,77E ) a ATtiny85 (TME 1ks za 0,857E) 0,087E za rozdiel 6kB Flash ? Kolko casu bude stat optimalizacia kodu s rezervou 2B? Kolko to bude penazi? A to sa nemusi jednat o komercny projekt. Zabijat menej osobneho casu bezvyznamnymi ulohami vedie k vacsiemu casu pre dalsie projekty/ine zaluby/rodinu. Alebo to moze byt iba vyzva typu vyliest na Mont Everest alebo je to pre niekoho, kto to NAOZAJ zaplati. Co sa tyka casu, v drvivej vacsine sa procesor skrabe nozickou v kremikovom zadocku v roznych pause() alebo cakacich cykloch.

Neber to, ze mam nieco proti znalosti ASM. Prave naopak. Aj Steve Jobs si mnohe ugebulil, ked chodil na vyske na hodiny kaligrafie. Odtial pochadza jeho presvedcenie o potrebe dobreho dizajnu rozhrania elektroniky. Kazda skusenost, aj sebeneocakavanejsia sa niekedy niekomu raz moze hodit. O tom niet pochyb. :slight_smile:

No jo, ale proč kupovat brouka, když se jeden válí v šuplíku a nemá co na práci. Nepopírám, že by tam mohl ještě chvíli zůstat, ale když je k dispozici a tu práci zvládne, proč pořizovat jiný.

Souhlasím s uživatelem Martin. Pragmatický přístup. Dokud byl křemík drahej a pomalej, ASM byl často jediná cesta ale dneska to většinou nemá opodstatnění. (jedině že by bylo nutno vyždímat z procesoru absolutní max. pro speciální účely) C je svoboda - možnost migrovat a reuse-nout už napsanej kód.

neber to prosim v zlom, casto sa vo vlastnom zivote riadim rovnakymi argumentami. Ale novy mcu je dobre zohnat si preto, lebo je to lacnejsie, jednoduchsie, clovek usetri za velmi maly obnos velky kopec casu. Tak preto. Vela krat sa mi osvedcilo funkcne, ale uz bohuzial moralne zastarale veci niekomu darovat. Napr. aj tie ATtiny25 som vymenil za ATitny85.
Nasiel som si take pravidlo (nie vzdy ho samozrejme dodrzim :slight_smile: ), ze ak sa mi nieco vala v sufliku az kym to moralne zastara, nema to pravo na dalsi pobyt v tom sufliku. Malo si to najst cestu k mojej dusi skor, aby som z toho nieco uzitocne vytvoril. Inak to boli len vyhodene peniaze a HLAVNE zabity cas rozmyslanim typu:“toto si kupim/odletujem/zoberiem lebo by som s tym mohol spravit vec XY”. Na zaklade tohto pravidla sa potom snazim davat si vacsi pozor na to, aby sa mi nieco nevalalo v sufliku. Ale aj tak ho mam plny, len sa utesujem, ze nie su dva :slight_smile:

P.S. Esteze moja polovicka nevie, co tie (z dnesneho pohladu) hovadiny, zle odhady a preslapy v sumare stali :slight_smile:

Tohle si také často říkám, ještě že má polovička neví co to nevyužité smetí v šuplíku stálo. :slight_smile:

Na druhou stranu - tyhle věci jsou koníček. Mezi zábavu může patřit i to, přijmout výzvu a vytvořit něco náročného s chabými podmínkami - např. věnovat spoustu práce k vyvinutí vysoce optimalizovaného programu (třeba v ASM) do slabého MCU. A nebrat to jako ztracený čas, ale jako hru, jejíž zvládnutí dodá člověku sebevědomí … a také cenné zkušenosti. Takto mám v šuplíku připravenou hromadu AT89C51, že se někdy do nich pustím a nějak je využiju. :slight_smile:

A to je přesně ono - ze sportu , pro zábavu ať se někdo s asemblerem moří. Jinak si taky myslím, že těch pár ušetřených bytů a mikrosekund za ten čas nestojí.

Vůbec si ale nedokážu představit, že by vývojáři v naší firmě psali v asm - nevím, jestli by se šéfovi chtělo čekat dvakrát tak dlouho na program - nemluvě o tom, že se v něm taky musí vyznat i někdo jiný než autor. Mnoho jich tam už ani nepracuje a přesto se v jejich programech snadno orientuju.

Ve firmě používáme i assembler - ale jen na kritická místa, kde záleží na každém taktu.

Bascom má jednu drobnou výhodu proti C. Když změním chip, tak vyměním jeden řádek. Což u C je výrazně více práce. A jelikož uvažuju o (pro mě) celkem rozsáhlým projektu svítilny, mám obavy, že zvolím špatný chip a pak ztrávím půl roku na předělávání programu na nový.