Fórum témák

» Több friss téma
Fórum » PIC programozása C nyelven, C-Compiler
Lapozás: OK   4 / 153
(#) potyo válasza pipi hozzászólására (») Szept 17, 2008 /
 
Láttam én már neten levő php kódban is } után rendszeresen ;-t.
(#) potyo válasza Tibus hozzászólására (») Szept 17, 2008 /
 
Ha többféle értékkel kell összehasonlítani, akkor használd a switch-case elágazást

  1. switch (state)
  2. {
  3.         case 0:
  4.                 // amit state==0-nál kell csinálni
  5.         break// a break nagyon fontos
  6.         case 1:
  7.                 // amit state==1-nél kell csinálni
  8.         break;
  9.         case 2:
  10.                 // amit state==2-nél kell csinálni
  11.         break;
  12.         default:
  13.                 // ha state értéke nincs a fentiek között
  14.                 // (maradhat üres is)
  15.         break;
  16. }
(#) Tibus hozzászólása Szept 17, 2008 /
 
Köszönöm szépen a segítségeket! Kell még tanulnom sokat.

Kipróbáltam, az

IF
{
...
...
}

után tényleg nem kell pontosvesző, azt hittem, hogy kell azért használtam.
(#) szSzilard hozzászólása Szept 18, 2008 /
 
Hello!

Szeretném kipróbátmi a HI-TECH C teljes verzióját el tudná valaki küldeni

Köszönöm!

szilárd
(#) Tibus hozzászólása Szept 23, 2008 /
 
Sziasztok!

Hogy tudnám egyszerűen megoldani azt, hogy a főprogramban van mondjuk egy 'delay_ms(500)' utasítás, ezt ismételgeti ugye, meg közben mást is végrehajt a program és ha jön egy megszakítás, majd ebből visszatér, akkor ne folytassa a 'delay'-t, hanem egy általam tetszőleges helyre ugorjon, vagy kezdje elölről a programot...

Remélem érthető.
Gondolom 'GOTO'-val kiugrani az interrupt függvényből nem túl egészséges

Köszönöm:

Tibus
(#) potyo válasza Tibus hozzászólására (») Szept 23, 2008 /
 
Kicsit át kell gondolnod ehhez a programot. Alapkövetelmény, hogy szokj le erről a delay_ms használatáról. Helyette Timerrel időzíts, azért van. A megszakításban pedig bebillentesz valami jelzőbitet, a főprogram meg azt figyeli. Ha a bit bebillent, akkor vérgrehajtod, amit kell, és törlöd a bitet.

Vagy írd le pontosabban, hogy mi kellene.
(#) kobold válasza Tibus hozzászólására (») Szept 23, 2008 /
 
Az nagyon nem egészséges
Meg lehet csinálni, csak nem egyből. Interrupt esetén ugyebár a visszatérési cím a stack-be kerül, ha azt nem lehet manipulálni, oda is ugrik vissza. Viszont a késleltető rutinba belenyúlva, meg lehet csinálni azt, hogy a sok inkrementálás alatt (mivel így szoktak késleltetni) néha vizsgáljon meg egy bitet, amit az ISR-ben beállíthatsz, vizsgálatnál pedig kitörölsz. Így visszaugrik ugyan a késleltetésre, de ha rászalad a bitre, ki is lép a rutinból.
Egy másik, talán még jobb módszer, ha a számolgatásra használt regisztereket úgy módosítod az ISR-en belül, hogy visszatérés után mondjuk még egyet dekrementál, és kész is.
Csak mindkét módszerrel az a baj, hogy magadnak kell megírni a késleltető rutint is, mert a könyvtári függvények nem vizsgálgatnak semmit.
(#) Tibus hozzászólása Szept 23, 2008 /
 
Hú, extra gyorsan válaszolsz köszi

A program ugyanaz, mint amiről kérdeztem, hogy van 4-5 állapot egy programban. Ezt IF-fel oldottam meg, Te a switch-et ajánlottad rá.

Igazából egy kínai LED-es lámpát alakítottam át. Kicseréltem a LED-eket és lítium-ion akkumulátort tettem bele. A fő cél az volt, hogy szaggassam a LED-ek áramát egy FET-tel, mivel az akku teljesen töltött állapotában a túl nagy áram kinyiffantotta lassan a LED-eket. A PIC figyeli az akkufeszültséget és annak függvényében változtatja a PWM kitöltést.

Ez a része működik is. Aztán gondoltam legyen egy két funkciós is rajta: villogó, más fajta villogó, meg alacsony fogyasztású mód. Végül is működnek ezek is, csak a villogós résznél, mikor 750ms-ot vár a LED bekapcsolása között és én akkor nyomom meg a gombot, vagyis megszakítást okozok, akkor a mód váltását még váratja a fennmaradó DELAY idő.
Nem olyan idegesítő, csak tanulásképpen is fejleszteni akarom.

Timer-re én is gondoltam, csak ez olyan izé, hogy van benne egy ilyen kényelmes DELAY parancs, és akkor nekem kell timer-t számolgatnom, hogy mennyire állítsam be, hogy pont azt az időt kapjam... bár itt még nem tanulmányoztam a Timert, csak assemblyben használtam. Megnézem

Köszi a választ!

(#) potyo válasza Tibus hozzászólására (») Szept 24, 2008 /
 
Egy ledvillogtatós feladatnál még nem kritikus a delay, de komolyabb feladatnál már nemigazán engedhető meg, hogy ez hosszú időre megfogja a processzort. Egyébként én úgy szoktam csinálni az ilyeneket, hogy beállítom a Timert, hogy pl. 1ms időnként csorduljon túl, és akkor utána csak valami változót (vagy ha kell több, akkor változókat) növelek benne, és amikor az elérte a kíván értéket, akkor cselekszem. Hasonlóan egyszerű használni, mint a delayt, mert a Timert csak egyszer kell kiszámolni hozzá. Ha nem kíván a feladat pontos időzítést, akkor nemis állítom a a Timer kezdőértékét, egyszerűen valami közeli értékhez beállítom a prescalert és csókolom. 4MHz órajel esetén az 1,024ms időnkénti túlcsordulást egyszerű beállítani, és ez elég közel van az 1ms-hoz.
(#) Tibus hozzászólása Szept 24, 2008 /
 
Igen, ez a Timer-es jól hangzik. Lehet, hogy átszerkesztem a programot.

Nyilván nem mindenhol alkalmaznám a delay-t, de itt ez megfelel. Majdnem...

Na, hát köszönöm szépen a segítségeket.
Tök jó, hogy itt vagytok és segítetek
(#) Tibus hozzászólása Szept 30, 2008 /
 
Sziasztok!

Megépítettem ezt az ICD2-es klónt, működik, tök jó és azt kérdezném, hogy ezzel egy C programot nem lehet soronként léptetni? Csak azzal az egyetlen hardver törésponttal tudom megállítani a programot?

Mert az MPLAB szimulátorral tudtam F7 F8-cal lépdelni soronként is, de itt at ICD status ablakban csak "Stepping Target"-et meg "MPLAB ICD 2 Ready"-t ír felváltva.

Na jó van egy két egyszerűbb sor amit viszonylag gyorsabban lép, de általában évekig eltart egy lépés, meg belép a math.h-ba meg 16F877.h-ba is.
Most a main zárójelétől nem tud elszakadni...
(#) pipi válasza Tibus hozzászólására (») Szept 30, 2008 /
 
nálam a hitech és microchip C is megy soronként, persze várni azt kell...
compile for icd be van állítva? az optimizálást meg ki kell kapcsolni, különben összevissza fog ugrálni
(#) icserny válasza Tibus hozzászólására (») Szept 30, 2008 /
 
Ha jól meggondolom, neked nincs is szükséged főprogramra! A villogtatást és egyebeket interrupt szinten is el lehetne rendezni szépen. :yes:
(#) Tibus válasza pipi hozzászólására (») Szept 30, 2008 /
 
Ezeket ki- meg bekapcsoltam, de a main "{" zárójelén nem tudja túltenni magát

Én CCS C-fordítót használok amúgy. HITEC is van, de valahogy nem stimmel a működése. Majd még kipróbálom

Van az az Animate gomb, de akkor is csak fut a Stepping Target és nem jut el sehova.
(#) potyo válasza Tibus hozzászólására (») Okt 1, 2008 /
 
Alapvetően az ICD2 a kontrollerben levő program nyomkövetésére van kitalálva. Ez pedig ha tetszik, ha nem, az asm. Tehát a Program Memory ablakban minden pillanatban úgy működik, ahogy várjuk. Ha a fejlesztőkörnyezet tudja hogy adott asm utasításokhoz melyik C sor tartozik, akkor a C forráskódban is követhető marad a dolog. Ha nem tudja (és egyes optimalizálások - pl. procedural abstraction - hatására biztosan nem fogja tudni), akkor nem lehet a C forráskódot követni.

A C soroknál úgy megy végig, mintha F7-et nyomogatnál. Tehát ha egy C sort mondjuk 50 asm utasításra fordít, akkor ott mintha 50-szer nyomnál F7-et. Ez is a baj a C-vel, hogy nem tudni (hacsak nem nézed meg a listing fájlt), hogy egy sort mire fordít, és annak meddig fog tartani a végrehajtása.
(#) pipi válasza Tibus hozzászólására (») Okt 1, 2008 /
 
a main kezdetén azért molyol sokat mert a kezdeti memória, változok, stb.. inicializásásokat hajtja végre., ha kérsz egy disasm ablakot akkor láthatod, milyen sokat dolgozik...
érdemes a main-ban lévő első utasításra töréspontot tenni, reset után odáig futtatni, utána lépegetni csak.
A pc-n a TC progiban (normálisan) megcsinálták, indítás után azonnal elrohan a main kezdetéig, és onnan lehet tovább lépegetni, vagy futni, nem kell a kezdeti mem. initen végiglépkedni
(#) p3n3m hozzászólása Okt 2, 2008 /
 
Jóestét mindenkinek!
Van egy kis problémám c30+GraphicLibrary programozásban.Nekem egy BTN_MSG_PRESSED kéne, mert újrakéne rajzolnom 1 gombot.Én ezt írtam, de nagyonnem működik:
if (objMsg == WND_MSG_TITLE){

if(pMsg->uiEvent == EVENT_PRESS){

color=GetPixel(x,y);

col->Color0=color;

BtnTranslateMsg(pBtnCol,

pMsg= EVENT_PRESS);

}

}


Ebből csak BtnTranslateMsg(pBtnCol,

pMsg= EVENT_PRESS); ez nem működik, ha kiveszem és nyomkodom a gombot akkor frankón változik a színe.Ez egy nagyon basic vektorgrafikai program lesz.Ha kell valakinek, eltudom küldeni a kódot.
(#) Norberto hozzászólása Dec 6, 2008 / 4
 
Nemrég találtam rá egy érdekesnek ígérkező anyagra, amely a C nyelv alapjait mutatja be magyar nyelvű oktatóvideók formájában!

LINK
(#) davidbacsi válasza Pavel hozzászólására (») Dec 6, 2008 /
 
szia!

Tudnálnekem basic-ot küldeni pic programozáshoz? 16-os sorozatú-hoz.
köszi!
(#) Moderátor hozzászólása davidbacsi hozzászólására (») Dec 6, 2008
 
Vajon miért nem az erről szóló témában kérdezed...?
(#) zoox válasza Norberto hozzászólására (») Dec 20, 2008 /
 
Hali

Régóta keresek egy ilyen oldalt nagyon szupi
(#) Mate78 válasza Norberto hozzászólására (») Dec 23, 2008 /
 
én is pont egy ilyet kerestem, nagyon köszönöm.

üdv

Máté
(#) zoox hozzászólása Dec 28, 2008 /
 
Hi
eddig asm-be irogattam progikat és most tanulom a c-t "hello world" szóval esetleg valaki nem tud valamilyen mintaprogikat c-ben amiböl lehetne okosodni nagyon megköszönném
ui:pic16fxxx
(#) pipi válasza zoox hozzászólására (») Dec 28, 2008 /
 
http://www.microchipc.com/
de a feltelepített fordítódban is vannak példaprogik,
nézz szét a fordítód weboldalán, és a microchipnél is
(#) Mate78 válasza zoox hozzászólására (») Dec 28, 2008 /
 
milyen fordítót használsz?

(#) zoox válasza Mate78 hozzászólására (») Dec 28, 2008 /
 
MPLAPB 8.10
CCS C-t (olyan kellene elsönek sz.tem C-ben PORT config (pl TRISA hogyn vagy LED vill A/D conv interupt kez stb.))
(#) zoox válasza pipi hozzászólására (») Dec 28, 2008 /
 
ezt az oldalt még nem ismertem köszi
(#) kisszee válasza Norberto hozzászólására (») Dec 28, 2008 /
 
Ez fantasztikus oldal, köszi!
(#) Mate78 válasza zoox hozzászólására (») Dec 28, 2008 /
 
Nézd meg ezeket:
Bővebben: Link
Bővebben: Link
Bővebben: Link

A CCS telepítőjében is van sok példaprogram egészen kezdő szinttől.

üdv
(#) zoox válasza Mate78 hozzászólására (») Dec 29, 2008 /
 
ez nagyon jó nem is értem eddig miért nem találtam meg
Következő: »»   4 / 153
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem