Vítejte na Elektro Bastlírn?
Nuke - Elektro Bastlirna
  Vytvořit účet Hlavní · Fórum · DDump · Profil · Zprávy · Hledat na fóru · Příspěvky na provoz EB

Vlákno na téma KORONAVIRUS - nutná registrace


Nuke - Elektro Bastlirna: Diskuzní fórum

 FAQFAQ   HledatHledat   Uživatelské skupinyUživatelské skupiny   ProfilProfil   Soukromé zprávySoukromé zprávy   PřihlášeníPřihlášení 

PIC18F05Q40 MPLAB X

 
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
pepe363



Založen: Aug 30, 2009
Příspěvky: 180

PříspěvekZaslal: so červen 15 2024, 19:48    Předmět: PIC18F05Q40 MPLAB X Citovat

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

; Definice proměnných
    CBLOCK  0x20
    COUNT1
    COUNT2
    ENDC

; Začátek kódu
    ORG     0x0000      ; Začátek programu na adrese 0x0000

; Hlavní program
START:
    CLRF    PORTA       ; Vymaž PORTA
    CLRF    LATA        ; Vymaž LATA
    CLRF    TRISA       ; Nastav všechny piny PORTA jako výstupní

BLINK:
    BSF     LATA, 0     ; Nastav pin RA0
    CALL    DELAY       ; Zavolej zpoždění
    BCF     LATA, 0     ; Vymaž pin RA0
    CALL    DELAY       ; Zavolej zpoždění
    GOTO    BLINK       ; Opakuj smyčku

; 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"


Díky Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
petrfilipi



Založen: Sep 13, 2005
Příspěvky: 2693

PříspěvekZaslal: ne červen 16 2024, 7:25    Předmět: Citovat

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.

PF
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
MiloPS3



Založen: Aug 07, 2010
Příspěvky: 265

PříspěvekZaslal: ne červen 16 2024, 9:06    Předmět: Citovat

skompilovat to slo ale jsou tam naky varovani ...
kód:
#include <xc.inc>

; Definice procesoru a zahrnutí definic registrů
    LIST    P=18F05Q40
   

; Definice proměnných
    ;CBLOCK  0x20
    COUNT1  equ   0x20
    COUNT2  equ   0x21
    ;ENDC

; Začátek kódu
    ORG     0x0000      ; Začátek programu na adrese 0x0000

; Hlavní program
START:
    CLRF    PORTA,0       ; Vymaž PORTA
    CLRF    LATA,0        ; Vymaž LATA
    CLRF    TRISA,0       ; Nastav všechny piny PORTA jako výstupní

BLINK:
    BSF     LATA, 0     ; Nastav pin RA0
    CALL    DELAY       ; Zavolej zpoždění
    BCF     LATA, 0     ; Vymaž pin RA0
    CALL    DELAY       ; Zavolej zpoždění
    GOTO    BLINK       ; Opakuj smyčku

; 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 ... Evil or Very Mad
skus najit nakej sterej ekvivalent toho 18F05Q40 co pude v MPLAB IDE
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
pepe363



Založen: Aug 30, 2009
Příspěvky: 180

PříspěvekZaslal: ne červen 16 2024, 10:28    Předmět: Citovat

petrfilipi napsal(a):
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.

PF


Díky, mrknu na to
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
pepe363



Založen: Aug 30, 2009
Příspěvky: 180

PříspěvekZaslal: ne červen 16 2024, 10:29    Předmět: Citovat

MiloPS3 napsal(a):
skompilovat to slo ale jsou tam naky varovani ...
kód:
#include <xc.inc>

; Definice procesoru a zahrnutí definic registrů
    LIST    P=18F05Q40
   

; Definice proměnných
    ;CBLOCK  0x20
    COUNT1  equ   0x20
    COUNT2  equ   0x21
    ;ENDC

; Začátek kódu
    ORG     0x0000      ; Začátek programu na adrese 0x0000

; Hlavní program
START:
    CLRF    PORTA,0       ; Vymaž PORTA
    CLRF    LATA,0        ; Vymaž LATA
    CLRF    TRISA,0       ; Nastav všechny piny PORTA jako výstupní

BLINK:
    BSF     LATA, 0     ; Nastav pin RA0
    CALL    DELAY       ; Zavolej zpoždění
    BCF     LATA, 0     ; Vymaž pin RA0
    CALL    DELAY       ; Zavolej zpoždění
    GOTO    BLINK       ; Opakuj smyčku

; 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 ... Evil or Very Mad
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 ?

Děkuju
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
petrfilipi



Založen: Sep 13, 2005
Příspěvky: 2693

PříspěvekZaslal: ne červen 16 2024, 12:45    Předmět: Citovat

Fakt mrkni na ten můj odkaz - na konci je nějaká možnost nepoužívat MPLAB X.

PF
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
MiloPS3



Založen: Aug 07, 2010
Příspěvky: 265

PříspěvekZaslal: ne červen 16 2024, 18:27    Předmět: Citovat

verze 6.20 dneska stazena, mel jsem starou a tam tenhle pic nebyl
projekt v priloze

kdyz se to prelozi je to tam napsany ..
kód:
BUILD SUCCESSFUL (total time: 102ms)



test_18F05Q40.zip
 Komentář:

Stáhnout
 Soubor:  test_18F05Q40.zip
 Velikost:  7.86 kB
 Staženo:  11 krát

Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
pepe363



Založen: Aug 30, 2009
Příspěvky: 180

PříspěvekZaslal: út červen 18 2024, 21:23    Předmět: Citovat

Díky moc, už mi překlad konečně funguje ! Mánička

Pro ostatní co by řešili stejný problém, vše řekne přiložený screen Wink



Snímek obrazovky 2024-06-18 220135.jpg
 Komentář:
 Velikost:  171.07 kB
 Zobrazeno:  45 krát

Snímek obrazovky 2024-06-18 220135.jpg


Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
pepe363



Založen: Aug 30, 2009
Příspěvky: 180

PříspěvekZaslal: čt červen 20 2024, 20:09    Předmět: Citovat

Tak bohužel, to že je kompilace úspěšná, nic neznamená Exclamation

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í.

Díky !
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
strg



Založen: Oct 14, 2004
Příspěvky: 27

PříspěvekZaslal: čt červen 20 2024, 21:16    Předmět: Citovat

Toto by mohlo pomoct. Smile
kód:
                       ORG     0X00                          ;  Reset procesoru
                       GOTO    START


                        ORG      0X04                        ; Obsluha preruseni
INTERRUPT:       MOVWF   TMP_W
                             ;
                             ;
                             ;
                         MOVFW    TMP_W
                         RETFIE

; Hlavní program
START:
                        CLRF    PORTA,0       ; Vymaž PORTA
                        CLRF    LATA,0        ; Vymaž LATA
                        CLRF    TRISA,0       ; Nastav všechny piny PORTA jako výstupní
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
pepe363



Založen: Aug 30, 2009
Příspěvky: 180

PříspěvekZaslal: čt červen 20 2024, 21:38    Předmět: Citovat

Takhle to mám, ale prostě to nefunguje. A k velkému překvapení jsem zjistil že program memory je úplně, ale úplně prázdné. Co to proboha je za bug ?


Messenger_creation_db5a5283-ff5e-411d-a42d-d5f8c344cafe.png
 Komentář:
 Velikost:  200.08 kB
 Zobrazeno:  22 krát

Messenger_creation_db5a5283-ff5e-411d-a42d-d5f8c344cafe.png



Messenger_creation_4aafd7f6-0b58-4add-b236-31dbdf954d62.png
 Komentář:
 Velikost:  137.64 kB
 Zobrazeno:  11 krát

Messenger_creation_4aafd7f6-0b58-4add-b236-31dbdf954d62.png


Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
MiloPS3



Založen: Aug 07, 2010
Příspěvky: 265

PříspěvekZaslal: pá červen 21 2024, 18:54    Předmět: Citovat

vsim jsem si toho uz predtim, tet sem to testoval a zapisuje se to do eeprom ... Laughing
funguje to nejak fak divne

kód:
#include <xc.inc>
   
; Definice procesoru a zahrnutí definic registr?
 PSECT resetVect, class=CODE, reloc=2;delta=0
resetVect:
    PAGESEL main
    goto main
   
PSECT code, delta=0
 
 ;ORG     0x7ff0
 ;ORG     00h
 
main:

    MOVLW   0x12        ; Nastav WREG na 0xFF
    MOVLW   0x34
    MOVLW   0x56
    goto    $-5

        PSECT   ResetVec,class=CODE,delta=2
    global  ResetVector
ResetVector:

    end     ResetVector                    ; Konec programu

tohle zas zapisuje kod ke konci a neprisel jsem na to jak to dostat na zacatek .. Rolling Eyes



Snímek obrazovky 2024-06-21 195321.png
 Komentář:
 Velikost:  17.75 kB
 Zobrazeno:  9 krát

Snímek obrazovky 2024-06-21 195321.png


Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Mahoney



Založen: Oct 26, 2019
Příspěvky: 392

PříspěvekZaslal: po červen 24 2024, 7:40    Předmět: Citovat

Použij starší MPLABX, který MPASM ještě podporuje (v. 3.46 apod)
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
pepe363



Založen: Aug 30, 2009
Příspěvky: 180

PříspěvekZaslal: po červen 24 2024, 8:35    Předmět: Citovat

To bohužel není řešení, protože tyhle staré verze pro změnu nepodporují můj PIC
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Mahoney



Založen: Oct 26, 2019
Příspěvky: 392

PříspěvekZaslal: st červen 26 2024, 15:11    Předmět: Citovat

Pokud nepotřebuješ debug (nepotřebuješ), tak použiješ IPE z novějšího (vším tím jsem už prošel).

Já to dělám tak, že používám externí editor, a kompilátoru jenom předhazuju.

Pokud je to MCU, které MPASM nezná, je třeba si napsat vlastní definici.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
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

Powered by phpBB © 2001, 2005 phpBB Group
Forums ©
Nuke - Elektro Bastlirna

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.


PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Čas potřebný ke zpracování stránky 0.18 sekund