NIeco pre vyznavacov PIC

Ale k tomu kitu píšu i ten prekladač a na čo by to potom bolo? A píšu, že je to tá lite verzia, teda ten volný. No snáď to tam bude, inak to vrátim ako nepoužitelné.
Trochu som študoval použitie asm a na 32bit a asi by to bolo už hodne kostrbaté programovanie… Vypadá to, že bez vyššieho jazyka sa už moc nedá robiť s tým výtrty. A používať 32biťák ako osem bitový je sranda, nie?
Dám vedieť.

:arrow_right: administrator: příspěvek byl upraven
Předchozí příspěvky se necitují.

To ano, k tomu kitu by to být mělo, jinač jak píšeš bez toho je to k ničemu.
Já měl na mysli tu uvolněnou verzi samotnou, tam to asi nepůjde.

Je to tam, ale vypadá to bloknuté kým nemáš ten PIC32 starter kit - alebo to neviem nastaviť (vždy som robil len v asm…).

Tak to skúšam a neviem s tým pohnúť i keď sa mi to nainštalovalo a vložil som tam na skúšku kód od microchipu. vyhodilo to túto hlášku:[code]HI-TECH C PRO for the PIC32 MCU Family (Lite) V9.60
Copyright © 1984-2008 HI-TECH SOFTWARE
(1273) Omniscient Code Generation not available in Lite mode (warning)
Error [939] ; . no file arguments

********** Build failed! **************
[/code]
erroru nerozumiem, lebo kód toľko riadkov nemá… A includované file som preventívne strčil aj do adresára projektu…
Toto som dal kompilovať:

#include <htc.h> void main(void) { }
podla návodu quickstart ku tomu C. A nič. Nevie niekto, kde robím chybu?

zacal jsem s pic16f84a asi pred dvema mesici. ma podminka byla pouze c, protoze mam pocit ze nez naucim asm a neco v nem napisu nedoziju se vysledku. casto se tomu venuji a myslim ze jsem nad tim stravil mnoho casu. zkousel jsem sdcc, pote sdcc ze svn, hitech lite, hitech pro /40-60% presnejsi obsluha irq + omniscient code generation atp…/ a ted mam sourceboostc. pominu to ze uz jsem se rozloucil s tim ze vsechno zvadnu z linuxu. vsechny kompilery stoji uplne za howno. zacal sem diodama a timerem, i ty nejjednodussi konstrukce je velmi obtizne rozchodit tak aby se strojovy kod nechoval nahodne a nepadal. v c temer staci tentyz zdrojak jen zlehka pro dany compiler upravit /headery/. u variant hitech to neni potreba vubec, presto vysledek rozdilny o 100000%, nemam na mysli velikost kodu. obavam se, ze napsat c compiler na tak maly procesorky je extremne obtizne. bavim se rc modelama a po picu chci aby pocital, staral se o par serv a aby si nejake pulsy umel precist z prijimace. to vsechno zpocatku slo, ale jakmile zacal byt program slozitejsi, i treba jen o praci s dalsi promenou, nastal chaos. bud se s tim rozloucim nebo asm ;]

Viem, ze asi je to trochu off topic, ale pred par dnami so robil kamosovi skolenie na ATmega. Trvalo to spolu 36hodin (3 dni) a clovek, co o jednocipoch vedel iba to, ze existuju, odchadzal s vedomostami, ako si napisat program v C, spolahlivo a prehlane, obsluha sluciek s presnym casovanim pod 5us, komunikacia s UARTOM, tlacitka, LED, PWM DA, AD.
O asembleri vie iba tolko, ze sa nim nemusi vobec zaoberat.

Pre procesor ako 16F-hocico je prekladac C skor kuriozita, ani nie tak z pohladu vynalozenej prace vyvojarov - im sa musi urcite z kecky parit, kym to ako tak napisu, ale skor z pohladu uzivatela. Tak mala pamat je pre pracu v C naozaj k neupotrebeniu a dokaze pracu v C skor znechutit a odradit.
C ma oproti asm svoje vyhody, ale tie sa uplatnia v projektoch trochu vacsich ako zapni rele, vypni rele, rozsviet LED.
Na zaciatok sa da spravit nejaky programik i do toho 1kB. Ale ako nahle je potreba rozsirit funkcionalitu, programova pamat konci. Ako priklad uvediem z toho spomynaneho skolenia. Program ktory plynule menil jas LED na zaklade poslanych parametrov cez UART (amplituda a casova perioda), cinnost sa dala ovlyvnit tlacitkom zaberal nejakych 400B.
To su ale iba take hracicky.
Urcite moze niekto napisat, ze jemu by taky program nezaberal v asm viac ako 100B. To je mozne, ale kamarat si zapamatal cca 10 prikazov a zapisov v C, ktore su naviac v “ludsky” daleko zrozumitelnejsiej forme ako najekych 35 ci 130 instrukcii v asm.
Na serioznu kutilsku pracu s C uvazuj s procesorom aspon 8kB Flash a 1kB RAM, dobra rezerva je 32kB Flash a 2-4kB RAM. Tam mozes svoje programove konstrukcie roztahat, vyuzivat polia, struktury a co ja viem co este a hlavne ta netrapi, ze ti pretecie zasobnik do datovej oblasti.
Ved uz povaz. C je navrhovane ako jazyk nativne vyuzivajuci zasobnik. Co uz moze chudak prekladac C robit ak ma zasobnik dvojstupnovy? Ake efektivne odovzdavanie parametrov a navratovych hodnot? O poliach a strukturach v rozsahu 36-64B RAM ani nehovorim.

Ak chces robit s Microchipom, potom skus skor pozriet na rad PIC18F. Osobne ich nepoznam, ale uz sa to tu niekde pisalo, ze su svojimi vlastnostami porovnatelne s ATmega.
Inak ATmega8 je v TME 5x lacnejsia ako 16F84 a z porovnania parametrov musi byt jasne, ze sa nejedna o 5x horsi svab :slight_smile:. ATmega32 stoji tolko co 16F84. Ale tiez sa tu uz niekde spomynalo, ze su i lepsie obchody na nakup PICov.

Pises, ze mas po preklade ine vysledky o 100000%. To je dost. :slight_smile:
Predpokladam, ze sa jednalo hlavne o rozdiely v casovani (ale mozem sa mylit). To je asi najvacsia pasca pre zaciatocnikov v C, ze si oneskorenia vytvaraju roznymi cakacimi sluckami. Od prekladaca C sa ocakava, ze bude prekladat co najefektivnejse. Tak on podla stupna optimalizacie a vyrobcu, bude vyhadzovat a skracovat to, o com usudi, ze to pre beh programu nema valny vyznam. Ved naco by v kode nechaval slucku o ktorej mu je zname, ze na konci bude mat premenna XY hodnotu 0? Tak ju tam rovno vlozi. Logicke :slight_smile:. To je DOBRA vlastnost prekladacov. Zaroven mozes dobremu prekladacu povedat, aby toto a toto neoptimalizoval.
Ale hlavne, pre casovanie TREBA pouzivat hw nastroje procesora - citace/casovace. Tam budu vysledky roznych prekladacov rovnake - ak je dobre prepisany zdrojak.

Diky za vycerpavajici fakta. Jsem uplna zacatecnika lama bez zkusenosti, na picech nebo na necem jinem nelpim a zkusim to znova s Atmega8 ;]

Ak chces skusit ATmega, potom doporucujem AVR-GCC v baliku WinAVR. Je plne funkcne a zadara. Ziadne okresane verzie C na 2kB alebo 4kB nema zmysel ani skusat, rychlo dosiahnes ich limity.
Najprv nainstaluj ten balik WinAVR potom stiahni posledne AVRstudio a nainstaluj ho.
Po prvom spusteni AVRstudia Ti ponukne vytvorit projekt bud v ASM alebo v GCC a uz mas vyhrane. Pre pracu v GCC je vela literatury, ale to uz bolo spomenute v inych diskusiach na tomto fore.

Ak chces zacat a netlaci Ta zrovna miesto, skus ATmega32. Myslim, ze pomer vykon/cena jednoznacne najlepsie v ATmegach (TME DIL40 - 8MHz 1.5EU, SOS 40DIL 16MHz 3.3EU)
Budes mat dost pamate (hlavne RAM 2kB) aj na zaciatocnicke “neohrabanejsie” datove konstrukcie. Ak potrebujes nevyhnutne mensi pocet noziciek , ta ATmega8 je dobra, pripadne skus Atmega168.

Daj vediet, ako si dopadol.

Supr! Nevydrzel jsem to a dovalil atmeg8 i 32. Pri programovani musim v PRESTU zadat frekvenci na ‘>1.5MHz’ jinak programovani zlobi, a je pomalejsi. Krystal mam nakych 14.31818 /s picem bezel/. Je to normalni?

a máš nastavený externí oscilátor ?? Já prestem programuju normálně na plnou rychlost…

:arrow_right: administrator: příspěvek byl upraven
Předchozí příspěvky se necitují.

Tak toho nevim jak docilit ; ox.baz.cz/~tomx/presto_f5_ready.JPG

:arrow_right: administrator: příspěvek byl upraven

kolonka sut cksel ted nevím co tam je všechno tak tam dáš pro ten krystal co máš
XT 8.0-16MHz, 16Kck+65ms

pozor pro nějaké další změny ssi o těch pojistkách něco přečti …

Můžeš si ten procesr taky zničit …

jo a ještě CKOPT na 16MHz …

:arrow_right: administrator: příspěvek byl upraven
Předchozí příspěvky se necitují.

Ajjaj ; zvedl jsem CKOPT, ale v SUT,CKSEL nejaky XT 16MMhz nemam. Zkousel jsem jiny moznosti a nic. Ted uz mi to nefunguje ani s puvodnim nastavenim, na fuse jsem nesahal. Prosim o help ;

sem ti psal, aby sis o tom něco přečetl, než to budeš nastavovat !! Jak je to možné že tam tu položkunemáš když já ano

:arrow_right: administrator: příspěvek byl upraven
Předchozí příspěvky se necitují.
xtal.jpg

druhý, ale pokud sis tam nastavil, např. ext. zdroj oscilátoru tak k tomu budeš musit připojit externí oscilátor. nebo pokud jsi nastavil RC oscilátor tak tam budeš muset připojit RC článek, jinak ten procesor nepřeprogramuješ a pokud sis nedejbuh nastavil reset jako vstupní nebo výstupní port tak pak už ho prestem nenaprogramuješ ani kdyby si se nahlavu stavšl, musíš použít vysokonapětové programování
ckop.jpg

ATmega je od vyroby nastavena tak, ze ako zdroj svojich hodin pouziva interny oscilator tusim 1MHz.
Na zaciatok teda musis mat nastavenu nizsiu prenosovu rychlost pri programovani.
Pri tejto rychlosti si zmen zdroj hodin na externy Xtal.
POZOR! Nie na externy oscilator. Po preprogramovani by sa Ti uz procesor cez SPI neozval , pokial by si nan zvonku nepriviedol externu frekvenciu. Tu si treba dat naozaj pozor. Vsetko ostatne je malina.
Na procesore musis samozrejme ten Xtal mat spolu s kondenzatormi.
S ATmega32 sa mozes bavit aj cez JTAG. Programovenie je daleko rychlejsie, ale zabera to viac noziciek. Ak by si pouzival Dragon (ale asi aj ine programatoryto vedia ) mozes program priamo krokovat v procesore (do 32kB). Ale mozno to vie i to Presto, az tak dobre ho nepoznam. Na druhej strane sa debugovanie v aplikacii moze zdat ako velka vyhoda, ale okrem jedneho pripadu (kde mi to aj tak nepomohlo :slight_smile: ) som debugovanie v aplikacii nepouzil. Netvrdim, ze je to zle, ale urcite kvoli tomu nemusis kupovat Dragon. Presto je dobry pracovny nastroj.
Drzim palce a daj vediet ako pokracujes, moze to byt inspiracia i pre inych.

Polozku ‘CKOPT na 16MHz’, mam nastavil jsem, SUT,CKSEL na XT 3-8MHz podle Tveho obrazku taky. Myslel jsem ze i tady ma byt neco jako 16MHz, a proto jsem psal ze ji nemam.
Po tomto jsem uz i se starym nastavanim s megou nehnul.
Ze si mam neco precist, jsem pochopil tak, ze nemam hrabat na pojistky.
Prijde mi zvlastni zmenou frekvence pri programovani to cely odpalim, jedna se o atmega8 ;

Vyreseno, procesor je zatim nepouzitelny, protoze jsem zvolil SUT,CKSEL a nevim ktery to bylo. ;] Dekuji cavenovi za pomoc

Pánové, toto vlákno je již sice docela “vousaté”, ale narazil jsem na ně náhodou a nedá mi to, abych nezareagoval na příspěvky Martina ohledně základů programování v jazyce C.

Patřím k těm, kteří si několikrát předsevzali naučit se “céčko”, sehnali si literaturu a po dvaceti stránkách ji zase vrátili do knihovny, po čase to zkusili s jinou knihou se stejným výsledkem a nakonec to vzdali a programují dále v assembleru.

Jsem toho názoru, že kdyby byly učebnice, a to nejenom o programování, psány tak, jak nám to předvedl Martin, ulehčilo by to práci nejen nám všem, ale i učitelům a z odborných škol by konečně začali vycházet absolventi, kteří nejen že svůj obor vystudovali, ale navíc mu i rozumí!

Děkuji za skvělou ukázku toho, jak by to mělo vypadat a samozřejmě taky za to, že se možná opět odvážím zkusit jazyk C.

Zdraví

Vlasťa Vlček
Valašské Meziříčí

Zdravim,

Vlasta, mozem Ti zodpovedne povedat, ze ked som zacinal s C, tak cca 5-6 rokov dozadu som si na toalete cital Herouta a bol som z toho mierne povedane vydeseny. Najma mnozstvo velmi podobnych zatvoriek mi robilo program na prvy pohlad neprehladny. Potom som sa donutil cca 1/2 roka datloval Heroutove priklady - pre mna absolutne nezaujimave, ja som chcel plikat LEDkou a nie vypisovat capiny na monitore :slight_smile: - a nakoniec som sa odvazil nainstalovat si AVRstudio a skusal som neico na fyzickom hw. A vtedy sa to stalo. No skratka uplna parada. :slight_smile:
Za par dni som nadobudol vedomosti a skusenosti mnohonasobne prevysujuce toho predchadzajuceho pol roka samoucelneho datlovania do PC.

Kazda zmena sw sa hned prejavila na spravani sa zariadenia. Samozrejme, ze som v prvom tyzdni “odhalil” asi 5 chyb prekladaca - a z mojho poladu velmi elementarnych - kym som pochopil, ze problem nebol v prekladaci ale medzi stolickou a klavesnicou. Cim dalej tym viac som si overoval, ze to C-cko je fakt dobre a hutne vymyslene a okrem vnorenia poznamky do poznamky mi na nom nic nechyba.
Testoval som ako sa prelozia take ci onake C-ckovske konstrukcie a ci je preklad naozaj optimalny. Doteraz som namatkovo nenarazil na ziaden kod, ktory by som vedel napisat zasadne lepsie ako to spravil prekladac a pravdu povediac uz som to ani velmi velmi dlho nekontroloval.

Ako priklad uvadzam, ze v cistom jazyku C som naprogramoval aplikaciu, ktora na procesore ATtiny85 na 8MHz interneho RC oscilatora zvlada robit sucasne na dvoch 10b AD kanaloch 50 vzoriek (do 25-tej harmonickej) v ramci 50Hz vstupneho signalu a online v realnom case vypocitavat strednu a efektivnu hodnotu vstupneho signalu, zistovat maxima efektivnych hodnot v siestich casovych pasmach v rozmedzi od 6ms do jednej minuty. To vsetko v 32b matematike aj s vypoctami (nie tabulkovymi hodnotami) (x)*(x) a sqrt(x).
Namerane vysledky lezu von cez plne sw emulovanu I2C linku aj s ochranou protokolu pomocou 8b CRC. Meriam zaroven cas, kolko procesor nema co robit a div sa svete je to cca 44% jeho strojoveho casu. Obmedzenie na rychlost vytvara 10b AD prevodnik.

Priebezne som si prezeral rozne materialy na ucenie C-cka k jednocipom.
Preto by som vsetkym zaujemcom o zacatie C-cka vrele odporucal material uvedeny tu:

mikrocontroller.net/articles … C-Tutorial

s lepsim tutorialom na jednocipy som sa nestretol. Mne osobne sa velmi dobre pracovalo s knizkou od Kadleca (programovaci jazyk C, alebo taky podobny nazov), ale pokial viem uz sa neda zohnat.

Ale opat pripomynam, C-cko je naozaj ale fakt naozaj velmi jednoduchy jazyk. Treba si len nainstalovat AVRstudio (odporucam verzie nizsie ako 5) potom Winavr, co je prekladac C-cka pre AVR a po naslednom spusteni AVRstudia Ti program ponukne ci chces spravit program v ASM alebo v C. Vyber si C, pomenuj si projekt, vyber si procesor a do novovzniknuteho

napis:

#include <avr/io.h>
#include <stdint.h>

int main(void)
{
	while(1) 
	{
             ;
	}
}

a mas prvy program hotovy. Sice nic nerobi, lebo sa jedna o nekonecnu prazdnu slucku, ale je plne funkcny a mozes sa tesit ze ho prekladac prelozil.

Potom si tam dopis

#include <avr/io.h>
#include <stdint.h>

static uint16_t a, b, c;
int main(void)
{
        a = 1;
        b = 2;

	while(1) 
	{
           a = a +1;
           c = a + b;
	}
}

V simulatore, ktory je sucastou AVRstudia si program mozes krokovat ako po C-ckovych instrukciach tak aj po instrukciach strojoveho kodu. Staci otvorit prislusne okno. Zistuj, ako sa meni v pamati obsah premennych a matematicke ulohy mozes postune robit komplikovanejsimi.

Ak sa dostanes az sem a stale Ta to bude bavit, uz si “chyteny” :slight_smile:

Osobne sa viem programovanim jednocipov v C zivit, ale na ilustraciu musim uviest, ze napriklad na stranke www.build.cz v sekcii C/C++ nielenze nerozumiem mnohym odpovediam, ale casto ani otazkam na ktore tieto odpovede prichadzaju :slight_smile:

Tak sa tesim na Tvoje skusenosti. Urcite pomozu vo vybere literatury a postupu aj dalsim C-cka chtivym zaciatocnikom.

OPRAVA: Dakujem Piityymu za upozornenie, samozrejme spomynana stranka je www.builder.cz :slight_smile: