Rady do začátku aneb 16F --> dsPIC, asm --> C

Zdravím programátory!!!

Už nějaký ten čas si pročítám zdejší fórum. Sám sem přišel na to, že 16F mi již nestačí. Zde sem se dozvěděl, že v podstatě sem 100let za opicema, když programuji tyhle procesory. Kolega google mi našel jakub.serych.cz/zaciname-dspicem … -assembler

Jak píše v článku. Nejprve bych rád zablikal s assemblerem. Problém nastal u zkompilování.

Clean: Deleting intermediary and output files.

Clean: Done.

Executing: “C:\Program Files (x86)\Microchip\MPLAB ASM30 Suite\bin\pic30-as.exe” “blikame.s” -o"blikame.o" -p=30F4012 --defsym=__DEBUG=1 -g

Executing: “C:\Program Files (x86)\Microchip\MPLAB ASM30 Suite\bin\pic30-ld.exe” “blikame.o” -Tp30F4012.gld --defsym=__MPLAB_BUILD=1 --defsym=__MPLAB_DEBUG=1 -o"4012.cof" -Map=“4012.map” --report-mem

C:\Program Files (x86)\Microchip\MPLAB ASM30 Suite\bin\bin/pic30-coff-ld.exe: cannot open linker script file p30F4012.gld: No such file or directory

Link step failed.

Angličtina zrovna není moje gusto, ale tak předpokládám, že kompilátoru něco chybí, bo to nemůže najít. MPLAB je posledni verze.

K tomu Cčku, nějaké ty základy mám, jen bych potřeboval nějak nakopnout. Tedy vyvojove prostředi asi zůstane MPlab? Musí se něco doinstalovat?

Zdravím.
Začínam pracovať v C a momentálne používam doinštalovaný “modul” k Mplabu odtiaľto:
htsoft.com/
Konkrétne PIC10/12/16 MCUs.
Relatko.

Tak sem se s tím prokousal a už mám program v C přeložen a vytvořen HEX.
Teď mám problém, že se nemohu za boha spojit s dsPIC4012. Používám programátor presto. Stačí připojit MCLR, napajeni, data a hodiny? Nebo je tam nějaká záludnost?

Takový typ neexistuje, zkus jiný… :smiley:

Pardon dsPIC30F4012 :slight_smile:

Zaludnost zadna neni, je potrebe 5 vodicu, VPP - programovaci napeti 13V, VDD/VSS napajeni 5V, Clok , DATA , ma to vic napajecich pinu tak je zapoj vsechny (pin 8,13,19,20 napajeni, 1 -VPP, 17-D, 18-C) melo by to fungovat,

Díky miloPS3. Bádal sem bádal, až nakonec sem připojil pickit3 a vše bylo ok. Nevím proč se presto nemohl spojit, nikdy v minulosti nebyl problém. Ostatní procesory, paměti, vše bylo ok. Nicméně tedy pomalu pronikám do tajů dsPiců. A koukám, že je tu spousta překvapení. Např se mi líbí násobička frekvence. Je to celkem hukot :slight_smile: Věc které nerozumím, je ovládání portu. Při čtení jdu po PORTD ale při zápisu nějaký LATD. Tedy jestli jsem správně pochopil.

Nemáte tu někdo nějaké krátké prográmky ať už v asm či C s ;českými poznámky pro rodinu dsPic? Prostě něco, z čeho by se dalo dobře čerpat? Bohužel v práci nemám internet, takže mi kolega google moc neporadí, když mi zrovna není něco jasné…

Tyhle vyšší procesory(nemyslím konkrétně tento, neznám ho) mívají na každou operaci jiný registr. Jeden pro nastavení směru, druhý na “sílu” pinu, další na nastavení jedniček, jiný na nuly, pak třeba na “slope control” atd. Holt si to budeš asi muset v DS nastudovat :wink: Žádný překvapení, když pak máš k portu 10 registrů. Nějaký příklad u microchipu nemají? Blikání mívají snad všude a ke všemu :slight_smile:

LATx je registr, jehož jednotlivé bity se připojují na piny portu, které jsou nastaveny jako výstupní. Piny portu (vstupní i výstupní) jsou vždy mapovány do registru PORTx pro čtení. Tzn. pokud máš třeba jeden pin jako výstupní, v LATx si můžeš přečíst do jaké hodnoty byl pin nastaven, v PORTx si přečteš aktuální hodnotu pinu . . . protože obě hodnoty nemusejí být shodné . . . např. když nastavíš výstupní pin do H a fyzicky ho “zkratuješ” do L . . . získáš tím zpětnou vazbu, kterou u “nižších” procesorů nemáš . . . každopádně v DS to určitě popisují . . .

Jo takhle to je :slight_smile: Marzou díky, zas sem o něco chytřejší :slight_smile:

Jinak samosřejmě že tam je vše, ale holt do tý angličtiny nevydržím koukat celý den… Dnes sem třebas koukal na instrukční sadu a jakožto zvyklý na svých 35 mě nejprve těch 80 děsilo, ale tak po bližším seznámením je to vlastně fajn. To, z čeho sem pořád nějakej nesvůj je těch 16 bit… prostě to je nějaký dlouhý 0b0101010101010101 :smiley:

Registry LATx jsou třeba i v PIC18FxxKxx a PIC18FxxJxx … v každém DS je i schéma portu s vnitřními registry, z něho je to možná pochopitelnější…
Klidně můžeš zase využívat jen těch “svých” 35, ty další jsou tam řekněme “navíc”, aby si mohl programovat efektivněji a výsledný kód byl rychlejší (zjednodušeně řečeno).
Při výpočtech je 16bit (namísto 8bit) nenahraditelných (je to přeci jenom 256x víc), každopádně mě osobně přijde přívětivější (a taky možná přehlednější), třeba při konfiguraci periferií procesoru, zapisovat do jednoho 16bit registru namísto dvou 8bit registrů :slight_smile:

Neřekl jsme, že je je to špatně, ale že z toho sem nějakej nesvůj. Určitě to má jen výhody. Jen nezvyk :slight_smile: Zítra se snad vrhnu na display 4x16. Leží mi ve skříni, tak to zkusíme :slight_smile: