Fórum témák

» Több friss téma
Fórum » PIC kezdőknek
 
Témaindító: Placi84, idő: Okt 3, 2005
Témakörök:
- A PIC ÖSSZES Vdd és Vss (AVdd és AVss) (tápfeszültség) lábát be kell kötni!
- A táplábak mellé a lehető legközelebb 100nF-os KERÁMIA kondenzátorokat kell elhelyezni.
- Az MCLR lábat, 10kohm-mal fel kell húzni a Vdd tápfeszültségre.
- Külső kvarc használatakor 4MHz-ig XT, a fölött pedig HS konfigurációt kell beállítani.
- Stabilizált tápegységet kell használni, a kapcsoló üzemű "telefon töltő" adapterek okozhatnak hibákat.
- Programozáshoz, használj lehetőleg PICKIT2 vagy 3 programozót. Kerülendő a JDM (soros porti) programozó.
- A PIC adatlapja (PDF), tartalmazza a lábak kiosztását és a PIC minden paraméterét. Az adatlap ingyen letölthető!
- Egyes PIC típusoknál az RA4 nyitott nyelőelektródás (Csak lefelé húz L szintre, H szintet nem ad ki!)
- Ha a PGM lábat digitális ki-/bemenetnek használod, az alacsony feszültségű programozási lehetőséget le kell tiltani.
Lapozás: OK   233 / 1210
(#) menyus válasza vicsys hozzászólására (») Ápr 6, 2012 /
 
Idézet:
„inkább az asm kódodat kéne bővíteni.”


Pont ezt akartam megúszni...
(#) menyus válasza Hp41C hozzászólására (») Ápr 6, 2012 /
 
Hűű... ez megint valami számomra kínai dolog ez a "könyvtári eljárás hívása", de letöltöm ezt a "float könyvtárat" a Michrochip től és kipróbálom.

Azt a kis programot ami a számítást végzi milyen nyelven gondoltad megírni? ASM vagy C...? Bármilyen művelet jó? pl 2 db 8 bites szám összeadása aminek az eredménye is elfér 8 biten, ez talán még megy..... Bocs ha esetleg hülyeséget kérdezek de ezek teljesen ismeretlen területek nekem.

Köszi
(#) Hp41C válasza menyus hozzászólására (») Ápr 6, 2012 /
 
Szia!

Mondjuk megírod C -ben két 16 bites változóra az összeadást és kivonást:
  1. int a,c,b,;
  2. c = a + b; d = a - b;

Lefordítod C -ből assemblyre, megnézed milyen kódot generált. Aztán jöhetnek az összetettebb számítások.
Csodák nem lesznek (sajnos), a kontroller csak a gépi kódot érti, arra fordít a C is...
(#) menyus válasza Hp41C hozzászólására (») Ápr 6, 2012 /
 
"Értem"(?), tehát C ből gépi kódba (ASM be), és ezt a generált kódot illesszem be a eredeti ASM kódomba... És ehhez kell ez a Float könyvtár..a MChip től? Jól értem?
(#) menyus válasza Hp41C hozzászólására (») Ápr 6, 2012 /
 
Ok, csak ne szaladjunk ennyire előre, még azt sem tudom hogyan lehet új változókat deklarálni C ben, hogyan határozom meg a helyüket a memóriában...stb. Egyelőre csak a lehetőségeket kóstolgatom, hogy jövök ki leg egyszerűbben ebből az éles kanyarból..

A
  1. int a,c,b,;
jelentené az a, b, c változó deklarálását C ben? Ez nekem túl egyszerűnek tűnik így elsőre..
(#) kissi válasza menyus hozzászólására (») Ápr 6, 2012 /
 
Pedig ez az volt ( ráadásul 16 bitesként!) !

Steve
(#) vicsys válasza menyus hozzászólására (») Ápr 6, 2012 /
 
Sőt! még kezdőértéket is adhatsz a deklaráláskor...
  1. int a=10, b, c ;
(#) menyus válasza kissi hozzászólására (») Ápr 6, 2012 /
 
És honnét derül ki ebből a pár karakteres programsorból, hogy a deklarált változó 16 bites ?

Azt hiszem megint előveszem a Kopják féle C könyvet és neki szaladok újra, mert ez nekem olyan magas mint hörcsögnek a cirkuszkerítés..
(#) vicsys válasza menyus hozzászólására (») Ápr 6, 2012 /
 
Ebből akkor derülne ki, ha tudnánk, hogy milyen C fordítót használsz. CCS C esetén pl. csak 8bites. Ráadásul ez előjeles. Nyilvánvalóan meg kellene adni az ábrázolandó szám tartományát, de kell kompatibilitást biztosítani a "hagyományos" C-s megnevezésekkel is. Csatolok egy kis példát.

int.jpg
    
(#) menyus válasza menyus hozzászólására (») Ápr 6, 2012 /
 
Akkor lennének a változók 8 bitesek ha így deklarálom? :

  1. unsigned char a,c,b,;


Ezt most lestem ki az említett könyvből, de lehet rosszul értelmezek megint valamit...
(#) menyus válasza vicsys hozzászólására (») Ápr 6, 2012 /
 
Köszi, ez a CCS C egy újabb fekete folt nekem, bár többször rákérdeztem már a C és a CCS c közti különbségekre de még nem kaptam infót róla..Én HitechC compilert használok az MPLAB alatt
(#) e-chipmunk hozzászólása Ápr 6, 2012 1 /
 
Üdv, bocs, hogy így belebarmolok a beszélgetésbe, de ezt a topicot láttam megfelelőnek a kérdésem feltevésére. Profibuszról érdekelne a lehető legtöbb dolog, ami csak lehet. Ha csak egy jó weblap-cimet dobtok azt is köszönöm (Próbáltam a guglit, de ha van valakinek egy bevált oldala, jöhet)!
(#) menyus válasza vicsys hozzászólására (») Ápr 6, 2012 /
 
Ez az értékadás "a=10," hex ben értendő vagy decimálisan? Tehát nem kell az üres regisztereket feltöltögetnem még + 2 utasítással mint ASM ben, mert már a deklaráláskor megadhatom milyen érték kerüljön bele...Ez így egyre jobban tetszik..
(#) vicsys válasza menyus hozzászólására (») Ápr 6, 2012 /
 
Az ANSI C megadja az alapokat. A CCS C egy compiler. Itt a manualja: www.ccsinfo.com/downloads/ccs_c_manual.pdf
Több okból is vannak eltérések. Gondolom azért mert itt mikrokontrollerre fejlesztesz, nem egy PC-re, oprendszerrel. Más a hw és a perifériák.
(#) menyus válasza vicsys hozzászólására (») Ápr 6, 2012 /
 
valamiért nekem a linkre ez töltődik be...de látom hogy az eredeti hivatkozás a: www.ccsinfo.com/downloads/ccs_c_manual.pdf . Köszi átolvasom ezt is.
(#) menyus válasza vicsys hozzászólására (») Ápr 6, 2012 /
 
Ja, közben javítva lett látom. köszi
(#) vicsys válasza menyus hozzászólására (») Ápr 6, 2012 /
 
Javítottam a linket. A CCS honlapján találsz további infókat is.
(#) menyus válasza vicsys hozzászólására (») Ápr 6, 2012 /
 
Ja, hogy ez közel 400 oldal...Akkor inkább megkérdem melyik compiler való inkább a kontrollerekhez..? A CCS C vagy az Hitech C? Mert PC re én tuti nem fogok semmit fejlesztgetni...
(#) dtocy hozzászólása Ápr 6, 2012 /
 
Heló!

Szeretnék egy fájlt csinálni SD kártyára. Megnézi létezik-e már fájl, ha igen, akkor a neve eggyel nagyobb szám lesz. (A fájlnevek csak számok lehetek)

Ez a kódrészlet(ami nem működik, nem tudom mi a hiba):
  1. u = 0;
  2.   do {
  3.     u++;
  4.   } while (Mmc_Fat_Exists(&u) == 1);
  5.   u++;
  6.   ShortToStr(u, nev);
  7.   kiterjesztes = ".MGS";
  8.   fajl = strncat(nev, kiterjesztes, 3);
  9.   Mmc_Fat_Assign(&fajl, 0xA0);


MikroC Pro For Pic v5.4es fordítót használok.

A segítséget előre is köszönöm!
(#) menyus válasza menyus hozzászólására (») Ápr 6, 2012 /
 
Valóban, elég sok oldalon találok PC s "Hello word" projecteket a ANSI C nyelvezeten. Na most akkor mi legyen HitechC vagy CCS C ? Melyik "jobb"? Nem értem én ezt egyelőre.

Megyek olvasgatni a témában mert így full tudatlanul még kérdezni is csak hülyeségeket tudok.
(#) vilmosd válasza menyus hozzászólására (») Ápr 6, 2012 /
 
Erdemes vegigolvasni a C nyelv alapjait. Az ertekadasok, a valtozok tipusai, a jelolesuk mind mind egy elegge kotott forma szerint vannak leirva. De.. mivel a leirasok nagyresze a PC-re ertelmezendo, nem fog stimmelni a PIC (AVR, ARM egyeb uC) korokben hasznalatos forditokra. Az alapok naggyabol ugyanazok, de az implementalas a HW korlatok miatt masok lesznek. Ezek a konkret forditok leirasaibol kiderulnek. Ugye mas meretuek az Int, a long, a float tipusok a PC-ben es a PIC-ben. Erdemes beirni a gugliba a c nyelv alapok kereso kifejezest es mindjart jon egy par 100000 talalat. Ezeket a leirasokat tanulmanyozva feny derul sok sotet foltra. Mellesleg nagyon hasznos az ASM programozas, mert konnyebben megismeri az ember a HW elemeket, es utana mar konnyebb atterni a magasabb szintu nyelvekre. Erdemes szetnezni pl a vicsys baratunk altal emlitett CCS oldalan, mert sok peldat talalhatsz HW es SW programozasrol C nyelven.
En sok evig programoztam PIC-et ASM-ben es nem bantam meg. Sokkal kisebb programokat lehet irni mint C, vagy mas magasszintu nyelven. Viszont a bonyolultabb szamitasokat ezeken a nyelveken sokkal konnyebb implementalni. Peldaul egy nem linearis eszkoz linearizalasat ( pl hoelem, PT100 ellenallashomero) ASM-ben megirni lehetseges, de mazochizmus. Mellekelek egy gyujtemenyt ami ASM es C peldakat tartalmaz kb ugyanarra a peldakra.. Igaz a kommentek spanyolul vannak, de azert hasznos lehet.
(#) vilmosd válasza vilmosd hozzászólására (») Ápr 6, 2012 /
 
Alapmu.
(#) Hp41C válasza menyus hozzászólására (») Ápr 6, 2012 /
 
Decimálisban, ha hexa kellene akkor a 250 -et 0xFA alakban írd.
Egyébként elírtam a deklarációt:
  1. int a,b,c,d;
a jó alak. Bocsánat...
(#) maestro hozzászólása Ápr 6, 2012 /
 
Üdv!
Delay-t csak ilyen kacifántosan lehet csinálni assemblyben, vagy van egyszerűbb is?
Bővebben: Link
Pl. egy pontos 1sec-os késleltetést, hogy lehet létrehozni? Ahogy elnézem a programot ez valamennyit késleltet, de nem tudni mennyit.
Meg valaki megmondaná, hogy ebben a programban, hogy kell értelmezni a DECFSZ T3,f utasítást? Az "f" az mit jelent benne? Annyit értek, hogy csökkenti T3-at amíg az nem lesz 0 majd átugorja a GOTO utasítást, de mi az az f?
(#) Balagemann2031 válasza maestro hozzászólására (») Ápr 6, 2012 /
 
Szia! Az f az a célt jelöli. F esetén az eredmény visszakerül a file regiszterbe, ha "w" van az "f" helyén, akkor a munka reg be.
(#) menyus válasza vilmosd hozzászólására (») Ápr 6, 2012 /
 
Köszönöm. Nem ismétlem önmagam mert írtam már, de én is pont ezért váltanák C re. Már a bináris számrendszerben nehézkesen elvégezhető számítási műveletek miatt (pl 8 bites kontrollerrel 32 bites számokkal való számítások, eredendően ez az amin elakadtam. ) De csakis ezért, mert egyébként nekem semmi bajom az ASM el..! Jelenleg a Kónya - Kopják féle C könyvet olvasgatom, pont azért mert amit a neten infókat találok erről, azok főleg PC - s példákra ("hello word" ki íratása monitorra..pl...stb) vannak kihegyezve. Én sem bántam meg az ASM et, bár abból is jócskán volna mit tanulgatnom, de ott pl egy egyszerűbb soros port kezelés már nem okoz gondot, C ben azt se tudnám hogy álljak neki. Van egy szépen ketyegő ASM ben megírt GSM / GPS es programom, kezel hardveres soros port átkapcsolást a két modul között, megszakítás...stb, semmi gondom vele tökéletesen működik, bár egy profi tuti másképp írta volna meg. A meglévő program mellé most "csak" egy egyszerű koordináta átváltás rutint kellene biggyesztenem, és ahogy említetted kb. a mazochizmus kategória megírni ezt az egyszerű átváltást. Mert 8 bites a kontroller, és a koordináta adatok (melyek eleve törtszámok...) csak 16 - 32 biten ábrázolhatóak a számítások során. Nekem magas a léc....ekkor jött a C mint ötlet, "lidi" fórumtársunk részéről. C ben viszont a program már meglévő ASM ben megírt részét nem tudom egyelőre megírni, tehát ez egyelőre a 22 es csapdája...

Köszönöm a gyűjteményt, (bár a kommentek spanyolul lehet fejvakarást okoznak majd.. ) remélem sikerül a lényeget kihámoznom belőlük és meglátni a párhuzamot az azonos funkciójú de két nyelven megírt kódok között...
(#) vicsys válasza menyus hozzászólására (») Ápr 6, 2012 /
 
Bővebben: Link Ezt már láttad? Szerintem sokat segíthet.
(#) menyus válasza Hp41C hozzászólására (») Ápr 6, 2012 /
 
Köszi, ez is jó lecke lehet nekem, direkt jó hogy így alakult... Ezek szerint ha nem abc sorrendben adom meg a változókat akkor az nem fog működni? Vagy mi vele a gond..? És azt is megtudtam közben hogy ha nem adok a változónak értéket akkor a változó aktuális memóriacíme kerül bele a regiszterbe értékként. Amit nem értek...itt nincs megadva a váltózók kezdőcíme ( 0x070, az int nél pl 0x04 címet hogy kell megadni C ben?...stb), C ben milyen memória címre kerül az elsőnek deklarált változó? És egy regiszter törlése (ami ASM ben pl... "CLRF PORTB" ) hogy néz ki...?

Hűű de sok kérdésem lesz még....meg fogtok unni hamar.
(#) menyus válasza vicsys hozzászólására (») Ápr 6, 2012 /
 
Igen de ettől azért idegenkedem kissé mert 18F re épül az egész leírás, és én 10 - 12 - 16 F ekkel dolgozom(tam) max. Bár ki tudja, lehet egyszer eljutok a 18F ig is ha már 2012 - őt írunk...
(#) vicsys válasza menyus hozzászólására (») Ápr 6, 2012 /
 
Nekem mindig az volt a bajom, hogy vagy lábszám (I/O), vagy a hely, vagy periféria volt kevés. Aztán váltottam.
Persze a kicsi projekthez, kicsiket használok. Viszont a 18-as széria néha olcsóbb.
Következő: »»   233 / 1210
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