Zdravím všetkých, skúsim priblížiť môj problém, keďže tiež sa snažím prejsť na jazyk C, konkrétne pre PIC18, ešte presnejšie PIC18F2320
Ide o to, že si neviem dať rady s dá sa povedať napálením programu. Napísal som si program, vlastne 2 programy, ktorých funkčnosť je overená aj v Proteuse, no po napálení programu sa furt stane to isté, tesne po tom, ako program napálim, LEDka na moment blikne a potom už vôbec nesvieti.Toto mi napríklad spraví aj pri programe Hello World, kedy by blikať vôbec nemala. Nestretol sa niekto s niečim podobným, alebo neviete čo robím zle, dá sa povedať, že robim ten isty postup napalovania ako aj pri PIC16F. Prípadne je niečo zle na programoch ?
Programátor mám PICKIT2, kompiler MCC18.
Ďakujem
Nadar,
je to síce staršia téma, prečítal som ju niekoľkokrát. Mal som v pláne skúšať programovanie v C s 16f887. Neviem však ako pracovať s Hitech-C kompilerom v Mplabe. Nemá niekto mini návod?
Ďakujem.
Myslel som si, že verzia Lite od Hi-techu je free, ale asi nie je, zrejme mi už dávno vypršala verzia trial a preto mi to “nefachčí”. Teraz svoje začiatočnícke pokusy v C realizujem v systéme MikroC. Malou nevýhodou je, že tento program nepoznám a musím sa to naučiť. Mplab som už troška ovládal. Takže je všetko ok.
Začínám s C a 16b PIC a nevím si rady. V asm jsem byl docela zvyklej na vyhledávací tabulky co byly normálně uložený v paměti programu. Existuje toto v C? Potřeboval bych takhle zralizovat tabulku o cca 400 položkách.
Ha, už jsem na to přišel, stačilo důkladně prolistovat literaturu od PepinaCz… “programování 16 bitocých mikrokontrolérů PIC v C” a hlavně to nepřehlédnout.
Prosím, potřeboval bych nakopnout správným směrem. Jak se da pro kompilator microchip C30 udelat nekolik bitovych proměnných v registru?
V asm na pic 16/ 18 myslim toto:
Mam sice v PIC24 přes 90kB volne ramky, ale přijde mi divny na uchování jednoho bitu používat char.
Vlakno jsem prošel a popisované metody na C30 nefunguji, defuckto nic funkcniho jsem nevygoohlil. Možná problém mezi židlí a klavesnicí.
Díky
Pomocí struktury (je to obecně C, nikoli jen microchip). Jen nevim, jesli donutíš překladač to dát do registru (slovo “register” před deklarací proměnný) když je to struktura. Překladač bude ovšem pro práci používat bitové operace, bude to tedy pomalejší než pole charů (ovšem kdyby to bylo v registru, mohlo by to vyjít nastejno).
Stejným způsobem jde třeba přetypovat int32 a přistupovat přes tečku k jednotlivým bytům.[code]typedef struct
{
unsigned boolProm1: 1; // “: 1” => promenna ma 1 bit
unsigned boolProm2: 1;
unsigned boolProm3: 1;
unsigned boolProm4: 1;
} bitfield_t;
int _tmain(int argc, _TCHAR* argv])
{
bitfield_t bitovePole;
#DEFINE ZMENA =PRIZNAKY,0 #DEFINE PRETEKLO =PRIZNAKY,1 [/code]popripade nejak podobne
milionkrat probirany a Xkrat probyrany zde na foru, otevri si datašít , najdi si PIN DIAGRAMS a koukni se na piny 0-7 portu A, ktera periferie je sdilena na pinech ktery ti nefungujou ? a ta i zrovna neni na pinech ktery ti fungujou
staci ji pak vypnout…
Možnost není a dokud nevytvoříš mcu pracující v desítkové soustavě, tak ani nebude. Jelikož jsou data v paměti uložena v 16kové soustavě (2 16kové cifry na 1 B), můžes jednoduše přistupovat právě pouze k hexa znakům.
To se ovšem dá vyřešit budeš-li mít číslo uloženo v BCD nebo každou číslici v jiné proměnné.
Jo jasně, chápu. Takže to dělení se běžně používá? Mě šlo o to, abych to nedělal zbytečně složitě, protože se teprve učím.
Teď právě laboruju s čidlem 18b20, tak sem hledal, jak nejlíp ukázat tu hodnotu na displeji.