Instrukční sada(y) PIC24 - hledám ucelený seznam s popisem

Dosud jsem pracoval jen s PIC12, 16… Teď bych se rád zaučil na PIC24 (konkrétně mám zálusk na PIC24FJ64GB002). Dle toho mála informací, které se mi podařilo najít na netu , mají rozšířenou či dokonce odlišnou instrukční sadu, ale nikde se mi nějaký ucelený seznam se srozumitelným popisem jednotlivých instrukcí nepodařilo najít. Nevíte někdo o něčem takovém?

:arrow_right: administrator: přejmenováno z "Instrukční sada(y) PIC"

Máš v úmyslu psát na 16bit v asm? To mi přijde asi jako nemít v porshe plynový pedál :smiley:

A proč ne? (To není řečnická otázka, myslím ji naprosto vážně.) Právě proto se snažím zjistit, to, na co jsem pokládal dotaz. Chci zjistit, v čem je to jiné a podle toho se rozhodnout, zda do toho jít nebo raději zvolit nějaký 18F…
(Jen prosím nemám zájem začít diskusi na téma C vs. ASM.)

V každém!! datasheetu pro PIC je uvedena instrukční sada. Kapitola 28. str 295 pro tvůj případ. Ale upozorňuju tě, že se ti ta rozšířená sada nebude líbit a sice nerad, ale musím souhlasit piityym. Radši zůstaň, jako já, u řady 18F.
A je vidět i na výrobci, že nepočítá s tím, že by někdo měl odvahu psát pro tuto řadu v ASM. Do řady 18F bylo v datasheetu vždy napsáno, co která instrukce dělá, u této řady a vyšších už to tam není.
Já kdysi zkoušel dsPIC30F4013 a nerozblikal jsem ani LEDku :slight_smile:

Kdo se bojí, nesmí do lesa. Bych to tak nedramatizoval, i v Porsche se dá odjet autoškola.

…už několikrát jsem ve fóru psal, že programovat 8051/AVR v asm je jednodušší než programovat PIC16/18 v asm. Co se týče asm pro PIC24/dsPIC… můj názor je takový, že programovat v asm PIC24/dsPIC je jednodušší než PIC16/18.

Porovnání mezi PIC24/dsPIC a 8051/AVR si netroufám vyřknout :slight_smile: … ale kdybych musel, tak bych řekl, že ta obtížnost je přibižně srovnatelná :slight_smile:

Kadopádně ta větší jednoduchost u PIC24/dsPIC vychází zejména z toho, že instrukce jsou více komplexnější (jedna instrukce je schopna vykonat více požadavků - což je obecně fakt, nemusí samozřejmě platit v každém případě). Subjektivní pocity jsou takové, že zápis instrukcí pro PIC24/dsPIC je více logičtější a programování je pak komfortnější…

Tenhle názor jsem si vytvořil v době, když jsem souběžně psal program pro PIC16 a dsPIC… takže jsem ho jen tak neuvařil z vody…:slight_smile:

Samozřejmě, že PIC24/dsPIC programuju většinou v C, asm používám jen v místech, kde C “nestíhá” nebo je z nějakého důvodu nevyhovující.

Pokud má uživatel už nějaké zkušenosti s programováním, tak si bohatě vystačí s popisem instrukcí v datasheetu :slight_smile:

Jinak… jsem přesvědčen že podrobnější popis instrukcí se dá někde na stránkách Microchipu nalézt…ale já jsem ho snad nikdy nepotřeboval… takže to nemužu říct na 100%.

PIC24FJ64GB002 je dobrá volba, pokud nepotřebuješ USB tak verze kde je místo B → A. Jinak se ještě podívej na PIC24FxxKAxxx … to jsou taky slušný kousky :slight_smile:

Honza3: Omlouvám se za svou hloupost. Přiznám se, že jsem instrukční sadu nikdy z datasheetů nečerpal, netušil jsem, že tam je, takže díky za upozornění.
Jinak na to teda koukám a předběžně musím souhlasit s marzouem, nevypadá to vůbec zle. Jen bude třeba vytisknout, zkoušet a dělat si poznámky, protože na zapamatování už je toho trochu moc.

Škoda že ty 24x není nějaká v pouzdru DIP40.

Tak se musím pochválit. :smiley:
S dsPIC30F14 jsem rozjel 4x20 LCD. Je to jednodušší, akorát jsem musel furt čučet do datasheetu.

Ještě přijdu na to, jak udělat náhradu za #define RS PORTB,4, pak přijít na přerušení a bude to good.

Můžeš ten typ mcu trochu upřesnit. :smiley:
Co že si se dal na dsPIC…

dsPIC30F3014, jsem nějak zapoměl na jedno 30tku.

Nedal ještě, ale asi brzo začnu. Ještě nemůžu přijít na pár věci, ale psát v ASM pro ně je paráda.
Nemůžu přijít na to, jak si nadefinovat svůj název portu a nějak se mi nedaří přerušení, ale je to otázka času. A chuti.

Tak mě napadlo, jak se v C definuje nazev pinu??

Používám tento zápis, ale nevím jak ti to pomůže.

Honza3: Tady je nějakej kód v ASM, kde se používá Interrupt, jestli ti to pomůže… Jinak dsPIC/PIC24 nedělám, ale lákáte mě čím dál víc :smiley:

Petr. Dík. Ono mi to připadá něco mezi C a ASM. Určité zápisy.

Dík za ASM, s tím přerušením, jsem tušil, že to tak nějak bude. Ale název pinu u určitého portu, tak to asi nejde nebo co.
Určité zvyky s řad 16F a 18F asi nepoužiju. :frowning:

Honza3: Ty piny se myslím dají nadefinovat makrem (tedy podle toho, co jsem našel zde, doufám, že se nepletu; soubor traps.s). Jinak už jsem se rozhodl, jdu do těch 16b s váma a jdu si něco objednat, začalo mě to dost zajímat :slight_smile:

Jaké zařízení budeš stavět, že na to potřebuješ 16bit mcu.

A co sa tti na tom tvojom zapise nepaci ?
C ku pouzivam toto i ked je to nestandartne ale konfortne:

#define rdsdato PORTBbits.RB7
#define rdsclko PORTBbits.RB6

Jestli je to na mě - žádné. Budu si s ním občas hrát a učit se (abych to mohl ve finále stejně všechno zapomenout :laughing: ), stejně jako si občas hraju a učím se např. s linuxem (a přesto nejsem guru, a nikdy nebudu)… pokud tedy bude času nazbyt, nějak je ho poslední dobou čím dál míň. Na projekty, do kterých se možná časem pustím, mám ještě dost těch “malých, starých a slabých” 16F. Ale řekl bych, že je to dost OT, ne?

Co k tomu makru, je to tak dobře?

Než jsem dopsal post, reagoval Atlan. Ta má předchozí odpověď patřila Petrovi.

Atlan: Jenže tady je řeč o ASM, a ten zápis, na kterej je Honza3 zvyklej z řady 18F, mu zřejmě u 30F už neprochází u kompilátoru, nebo se pletu?