Zaslal: so červen 15 2024, 19:48 Předmět: PIC18F05Q40 MPLAB X
zdravím,
můj život je v troskách. Příležitostně jsem si doteď programoval staré PICy v MPLAB IDE 8.92 v assembleru a všechno bylo krásný. Jenže teď stavím malý projekt na motorku a naprosto neuváženě jsem použil moderní PIC18F05Q40 a až příliš pozdě (když už mám hotovou a osazenou desku a zbývá jen programování) jsem zjistil že můj starý dobrý MPLAB tento čip již nepodporuje a musím se přesunout na MPLAB X. Tady začíná peklo. Z nějakého důvodu již není podporován pro můj čip MPASM a je dostupný pouze překladač XC8. Nedokážu napsat sebekratší program v asm aniž bych při pokusu o překlad nedostal chybu snad na každém řádku. Chci zůstat u asm, nechci C.
Četl jsem i tento ofíko dokument od Microchipu a komické je, že mi nefungují ani jejich příklady.
Může mě někdo nasměrovat na nějaké návody jak vůbec s MPLABem X pracovat a jak hlavně korektně zapsat program aby se řádně zkompiloval ? Prošel jsem mraky videí na YouTube a všechno jenom Céčko. Nejsou na tohle téma k dispozici nějaké knihy v češtině ?
Zkusil jsem zkompilovat tento kód:
kód:
; Definice procesoru a zahrnutí definic registrů
LIST P=18F05Q40
; Podprogram pro zpoždění
DELAY:
MOVLW 0xFF ; Nastav WREG na 0xFF
MOVWF COUNT1 ; Ulož do COUNT1
MOVLW 0xFF ; Nastav WREG na 0xFF
MOVWF COUNT2 ; Ulož do COUNT2
DELAY_LOOP1:
DECFSZ COUNT1, F ; Decrementuj COUNT1
GOTO DELAY_LOOP1 ; Opakuj, pokud není nula
DECFSZ COUNT2, F ; Decrementuj COUNT2
GOTO DELAY_LOOP1 ; Opakuj, pokud není nula
RETURN ; Návrat z podprogramu
END ; Konec programu
a dostal tyto chyby:
kód:
project_honda.asm:5:: error: (876) syntax error
project_honda.asm:15:: warning: (1522) RAM access bit operand not specified, assuming banked memory
project_honda.asm:16:: warning: (1522) RAM access bit operand not specified, assuming banked memory
project_honda.asm:17:: warning: (1522) RAM access bit operand not specified, assuming banked memory
project_honda.asm:20:: warning: (1522) RAM access bit operand not specified, assuming banked memory
project_honda.asm:22:: warning: (1522) RAM access bit operand not specified, assuming banked memory
project_honda.asm:29:: warning: (1522) RAM access bit operand not specified, assuming banked memory
project_honda.asm:31:: warning: (1522) RAM access bit operand not specified, assuming banked memory
project_honda.asm:34:: warning: (1522) RAM access bit operand not specified, assuming banked memory
project_honda.asm:36:: warning: (1522) RAM access bit operand not specified, assuming banked memory
make[2]: *** [nbproject/Makefile-default.mk:116: build/default/production/project_honda.o] Error 1
make[1]: *** [nbproject/Makefile-default.mk:91: .build-conf] Error 2
make: *** [nbproject/Makefile-impl.mk:39: .build-impl] Error 2
project_honda.asm:15:: error: (800) undefined symbol "PORTA"
project_honda.asm:16:: error: (800) undefined symbol "LATA"
project_honda.asm:17:: error: (800) undefined symbol "TRISA"
project_honda.asm:29:: error: (800) undefined symbol "COUNT1"
project_honda.asm:31:: error: (800) undefined symbol "COUNT2"
Nevím jak tyto moderní PICy, ale u starších začínal program na adrese 4. I když tyto PICy mají, zda se, start opravdu na adrese 0.
A zkusil bych ještě jednu věc : stáhl bych jakýkoli kompilátor, třeba MikroC. V něm bych napsal krátký program v Céčku a nechal ho zkompilovat a zkusil bych ho nahrát do PICu. Bude-li to v pořádku, tak mezi přeloženými soubory bude i překlad do assembleru a pak i hex soubor ve strojovém kódu. A uvidíš, jak to přeloží překladač a pak najdeš jednodušeji svoji chybu. Program na blikání budou mít určitě mezi příklady, nebudeš muset napsat ani řádek kódu v Céčku.
Teď ještě koukám na konec tvého výpisu chyb a řekl bych, že je problém s definičním souborem PICu.
Pak se taky podívej třeba sem.
; Podprogram pro zpoždění
DELAY:
MOVLW 0xFF ; Nastav WREG na 0xFF
MOVWF COUNT1,0 ; Ulož do COUNT1
MOVLW 0xFF ; Nastav WREG na 0xFF
MOVWF COUNT2,0 ; Ulož do COUNT2
DELAY_LOOP1:
DECFSZ COUNT1,F ; Decrementuj COUNT1
GOTO DELAY_LOOP1 ; Opakuj, pokud není nula
DECFSZ COUNT2, F ; Decrementuj COUNT2
GOTO DELAY_LOOP1 ; Opakuj, pokud není nula
RETURN ; Návrat z podprogramu
END ; Konec programu
kód:
make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
make -f nbproject/Makefile-default.mk dist/default/debug/test_18F05Q40.X.debug.hex
make[2]: 'dist/default/debug/test_18F05Q40.X.debug.hex' is up to date.
BUILD SUCCESSFUL (total time: 102ms)
Symbols unmodified. Previously loaded from F:/kopie_PIC/test_18F05Q40.X/dist/default/debug/test_18F05Q40.X.debug.elf...
Loading code from F:/kopie_PIC/test_18F05Q40.X/dist/default/debug/test_18F05Q40.X.debug.elf...
Program loaded with pack,PIC18F-Q_DFP,1.24.430,Microchip
Loading completed
jinak Xko je katastrofa ...
skus najit nakej sterej ekvivalent toho 18F05Q40 co pude v MPLAB IDE
Nevím jak tyto moderní PICy, ale u starších začínal program na adrese 4. I když tyto PICy mají, zda se, start opravdu na adrese 0.
A zkusil bych ještě jednu věc : stáhl bych jakýkoli kompilátor, třeba MikroC. V něm bych napsal krátký program v Céčku a nechal ho zkompilovat a zkusil bych ho nahrát do PICu. Bude-li to v pořádku, tak mezi přeloženými soubory bude i překlad do assembleru a pak i hex soubor ve strojovém kódu. A uvidíš, jak to přeloží překladač a pak najdeš jednodušeji svoji chybu. Program na blikání budou mít určitě mezi příklady, nebudeš muset napsat ani řádek kódu v Céčku.
Teď ještě koukám na konec tvého výpisu chyb a řekl bych, že je problém s definičním souborem PICu.
Pak se taky podívej třeba sem.
; Podprogram pro zpoždění
DELAY:
MOVLW 0xFF ; Nastav WREG na 0xFF
MOVWF COUNT1,0 ; Ulož do COUNT1
MOVLW 0xFF ; Nastav WREG na 0xFF
MOVWF COUNT2,0 ; Ulož do COUNT2
DELAY_LOOP1:
DECFSZ COUNT1,F ; Decrementuj COUNT1
GOTO DELAY_LOOP1 ; Opakuj, pokud není nula
DECFSZ COUNT2, F ; Decrementuj COUNT2
GOTO DELAY_LOOP1 ; Opakuj, pokud není nula
RETURN ; Návrat z podprogramu
END ; Konec programu
kód:
make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
make -f nbproject/Makefile-default.mk dist/default/debug/test_18F05Q40.X.debug.hex
make[2]: 'dist/default/debug/test_18F05Q40.X.debug.hex' is up to date.
BUILD SUCCESSFUL (total time: 102ms)
Symbols unmodified. Previously loaded from F:/kopie_PIC/test_18F05Q40.X/dist/default/debug/test_18F05Q40.X.debug.elf...
Loading code from F:/kopie_PIC/test_18F05Q40.X/dist/default/debug/test_18F05Q40.X.debug.elf...
Program loaded with pack,PIC18F-Q_DFP,1.24.430,Microchip
Loading completed
jinak Xko je katastrofa ...
skus najit nakej sterej ekvivalent toho 18F05Q40 co pude v MPLAB IDE
Zkompilovat to šlo ? Dáš mi prosím screen obrazovky abych se podíval na verzi MPLABu a kompileru ?
Tak bohužel, to že je kompilace úspěšná, nic neznamená
Program po nahrátí do procesoru nefunguje. Kontroloval jsem zda běží vnitřní oscilátor a ten je v pořádku.
Ukázalo se že je v MPLABu nějaký krutý bug, jelikož pokud se pokusím program odsimulovat, dostanu chybu že na počáteční adrese 0x00 není žádná instrukce kterou by šlo vykonat.
Poradí mi někdo prosím jak řádně specifikovat začátek programu ? ORG není funkční.
Časy uváděny v GMT + 1 hodina Jdi na stránku 1, 2Další
Strana 1 z 2
Nemůžete odesílat nové téma do tohoto fóra. Nemůžete odpovídat na témata v tomto fóru. Nemůžete upravovat své příspěvky v tomto fóru. Nemůžete mazat své příspěvky v tomto fóru. Nemůžete hlasovat v tomto fóru. Nemůžete připojovat soubory k příspěvkům Můžete stahovat a prohlížet přiložené soubory
Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.