Fórum témák
» Több friss téma |
Fórum » CCS PIC Compiler
Na ez a plugin nem tartalmaz fordítót, csak berakja az MPLAB-ban a fordítók közé (feltéve, hogy föl van telepítve a fordító..). És most meg a weboldalon csak azt találom, hogy 45nap a demo, pedig valahol olvastma, hogy 2k.. Aztán lehet hogy a 45 nap után lekorlátozódik 2k-ra..
Szia,
Ha lejár a 45 nap, egyszerűen nem indul el a program, de addig teljes értékűként tudod használni.
Sziasztok?
Idézet: „#define bkbhit1 (next_in1!=next_out1)” Ez a sor most mit jelent a bkbhit1 akkor lesz igaz ha next_in1 nem egyenlő next_out1-el??
Szia!
Szerintem ezzel a bkbhit1 szócskának adsz egy ilyen definícót: next_in1!=next_out1, vagyis csak simán amikor a bkbhit1-t használod, akkor a next_in1!=next_out1 kifejezést használod.
A "!=" egy elemi C operátor: nem egyenlő. KERNIGHAN-RITCHIE: A C programozási nyelv
Sziasztok.
Idézet: „#use rs232(baud=9600,parity=N, xmit=PIN_C6,rcv=PIN_C7,bits=8)” ezzel a sorral tettre kész a pic az usart adatok fogadására.. Van egy olyan problémám hogy program futás közben még nincs szükségem az adatokra,mivel jönnek tele pakolja a pik bufferét azt szeretném, hogy amíg nem akarok az adatokkal foglalkozni az ne töltse a buffert mivel lehet tiltani?
A CCS-C example mappában találtam egy USB-soros átalakítót (Examples\ex_usb_to_serial.c), ezt használnám fel egy programomban...
Ha jól értelmezem a progit akkor át tudja állítani az uart sebességét, annak megfelelően, hogy az USB porton mit olvas ki a PC felől.
Nekem a kódban lévőknél tőbb sebesség kéne ( nem szabvány értékek is), ráadásul a switch résznél nem is fogad el 65536-nál nagyobb értéket... Miért nem így állítja át az uart sebességét?
Most kezdek ismerkedni a PIC24FJ256GB106-al ...
Hogy tudom pl. az RPINR0 regiszter tartalmát írni? ( magyarul azt akarom megadni, hogy melyik (RP) lábhoz rendelje hozzá az INT1 megszakítást)
Olvasd el a "Control Register Lock" című szekciót az adatlapban! Normál körülmények között az RPINRx regiszterekbe történő írás le van tiltva, a feloldáshoz/visszazáráshoz az IOLOCK bitet kell matatni. Ez sem egyszerű dolog, egy speciális feloldási szekvenciát kell lejátszani. Nálam most egy másik PIC24 adatlap van kéznél, úgyhogy nálad egyes részletek másképp nézhetnek ki:
Idézet: „To set or clear IOLOCK, a specific command sequence must be executed: 1. Write 0x46 to OSCCON<7:0>. 2. Write 0x57 to OSCCON<7:0>. 3. Clear (or set) the IOLOCK bit as a single operation”
Akkor hogyan lehet hozzárendelni valamelyik RP lábat, az INT1 megszakításhoz?
(Ill. bármelyik RP lábat hozzárendelni olyan perifériához aminek nincs kivezetése) És ez CCS-C ben konkrétan hogy is néz ki?
Lehet hogy így:
#pin_select INT1=PIN_B3 ?
Elolvastad amit icserny írt?
Old fel az IOLOCk-ot, azután írhatod. Az RPINRx és RPORx regiszterek 6 bitesek. A bitek állapota határozza meg melyik RP lábra kerül a funkció. Esetedben ha RP0 lábra akarod tenni, akkor az értéke 0, stb.. Nem tudom ez a "#pin_select" micsoda , ha a ccs belső függvénye akkor biztos így van de én sosem használom, egy fordítónak sem a belső függvényeit. Direktben megadom hogy: RPINR0 = 0;
Idézet: CCS C-hez nem értek. C30 alatt (a korábbi hozzászólásomban említett unlockolás után) így nézne ki:„Akkor hogyan lehet hozzárendelni valamelyik RP lábat, az INT1 megszakításhoz?”
Ahol pin a kipécézett RPn láb sorszáma. Például az RP6 jelű láb esetén 6-ot kell írni.
Sajnos hibaüzenetet ad rá fordítások.
undefined identifier RPINR0bits A hozzászólás módosítva: Máj 23, 2016
RPINR0 = 0;
szintén undefined identifier ... viszont a #pin_select INT1=PIN_B3 -t simán lefordítja.
Igen, úgy néz ki a CCS másképp adta meg ezen regiszterek elérését.
Működik is amit lefordított?
Idézet: Ezt fölösleges volt ideírni, hiszen írtam, hogy a C30-hoz való szintaxist adtam meg. Az más fordítóhoz nyilvánvalóan nem jó.„Sajnos hibaüzenetet ad rá fordításkor.” Hasznosabb lett volna a CCS PCD fordító referencia kézikönyvben rákeresni az RPINR vagy INT1 kulcsszavakra! Én ezeket találtam Pin konfigurálás témakörében: #PIN_SELECT function=pin_xx (137. oldal) vagy pin_select(peripheral_pin, pin, [unlock]],[lock]); (186. oldal) Az utóbbi függvény menet közbeni átállítást tesz lehetővé. Az unlock/lock alapértelmezetten TRUE, tehát a feloldás majd visszazárás automatikusan megtörténik. Kiírni csak akkor kell, ha pl. nem akarod visszazárni. A hozzászólás módosítva: Máj 23, 2016
Hát most alaposan át kell gondolnom hogy mit írjak mert nem szeretnék senkit sem megbántani, pláne nem azokat akik próbálnak segíteni...
Természetesen amennyire tőlem telik próbálom tanulmányozni a Fordító referencia kézikönyvét is, és a PIC leírását is. Erre szolgáljon bizonyítékul, hogy 10:01 hozzászólásomban már én is emlitettem a #PIN_SELECT function -t. Közben már kicsit előbbre gondolkodva, szerettem volna megtudni, hogy hogyan lehet a regisztereket "közvetlenül" is elérni. Valahol már mintha láttam volna az álltalad írt formátumot is, gondoltam hátha ... És kipróbáltam usane álltal javasolt módot is, de mindkettőre hibaüzenetet kaptam. Szóval akkor a kérdésem, hogyan hivatkozhatok CCS-C alatt közvetlenül a regiszterekre?
MC és XC fordítóknál meg szoktam nézni, hogy az adott PIC include(header) fájljában mi van megadva (pl: "pic24fj256gb110.h" vagy valami hasonló) és az abban megadott névre hivatkozok. Gondolom a CCSC-ben is van adott mikrovezérlőre vonatkoztatott include fájl, abban nézd meg mi van megadva.
A hozzászólás módosítva: Máj 23, 2016
A lábkiosztás konfigurálása kapcsán nem javaslom a közvetlen regiszterírást, mert:
1. Egy RPINRx regiszter több (kettő) periféria bemenetet is konfigurálhat, emiatt nem regisztert, hanem annak csak egy bitcsoportját szabad írni. 2. A módosítani kívánt bitcsoport nem feltétlenül a legalsó helyiértéken található (a fent említett kettőből értelemszerűen csak az egyik lehet ott), ezért a helyiérték eltolásokkal is bűvészkedni kell. 3. Volt már olyan a fórum történetében, hogy a CCS C fordító a feloldási szekvenciába beszúrt valami fölösleges utasítást, és így sikertelen lett a feloldás. Ezért a lábkiosztás konfigurálására biztonságosabb a #pin_select direktíva, vagy a pin_select() függvény használata. A hozzászólás módosítva: Máj 24, 2016
Közben azt hiszem rájöttem a dolog nyitjára.
CCS-nél alapból nincsenek meg a header fájlban a regiszterek. A regisztereket tartalmazó fájlt létre kell hozni a Device Table Editor programmal ( még választani is lehet, ki, hogy szeretne hivatkozni a regiszterekre). Ha nem is a lábkiosztás változtatásához, de máshoz úgy látom jól lehet majd használni ezt a lehetőséget ... Köszönöm a segítséget mindenkinek!
Sziasztok!
I2c kommunikációt szeretnék megvalósítani egy pic és egy gyorsulás mérő között, de valamiért meg se nyikkannak a kimenetek. PICkit2 logikai analizátorával figyelem a portot. Felhúzó ellenállások beépítve. Az SPI működik. Próbáltam i2c_init()-el is de semmit nem változtatott. Betöltöttem időzítések nélkül is de úgy sem hozott eredményt. Mit ronthatok el? Köszönöm. A hozzászólás módosítva: Jún 19, 2016
Az adat és órajel lábak biztos, hogy pontosan vannak megadva? Fast módban próbáltad?
Igen, próbáltam fast módban is. A lábakat adatlapból többször is ellenőriztem. Próbáltam i2c_init()-et is, de hiába.
És, ha kihagyod a force_hw-t? Ahogy nézem a korábbi programjaimat én is kihagytam és emlékszem is, hogy volt valami anomália akkoriban. Amúgy nem lehet, hogy beragad valahol a program? Szedd ki az olvasás részt, azt amúgy is interruptba kellene rakni.
Kihagytam a force_hw-t és így megjelent a sck jel és sda az analizátoron.
Köszönöm!
Nem akar menni az Mplab alatt a nyomkövetés ... PIC24FJ256GB106
A program egyébként működik. Ezt a hibaüzenetet kapom: Idézet: „PK3Err0040: The target device is not ready for debugging. Please check your configuration bit settings and program the device before proceeding.”
Mit nem veszek észre? A hozzászólás módosítva: Aug 4, 2016
Szia!
Át van állítva Debugra vagy Release-en hagytad az MPLAB-ot?
Át állítottam Debugra.
A hozzászólás módosítva: Aug 4, 2016
|
Bejelentkezés
Hirdetés |