Assembler in MplabX

11 Anni 7 Mesi fa #6 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Assembler in MplabX
Ciao Giovanni,

come detto credo che il problema risieda nel fatto che il linker file non controlli tutti gli spostamenti e variabili allocate in maniera statica.

Se hai scritto gia' il programma in C, se non e' troppo complesso puoi dare un'occhiata al codice assembly generato dal compilatore.
...visto che lo devi scrivere in assembly non sara' arabo vedere il codice creato! :)

Saluti,

Mauro

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
11 Anni 7 Mesi fa #7 da Scollo
Risposta da Scollo al topic Assembler in MplabX
Ciao Mauro,

ho preso spunto dal Tuo suggerimento, ed ho provato ad effettuare il disassembly del mio programma in assembler (dal menù Windows, Pic memory view, Program memory) e con mia grande sorpresa ho costato che le direttive org vengono eseguite correttamente infatti il programma viene allocato come prescritto.
Il fatto curioso e che il programma va in tilt quando l'occupazione della program memory supera 0x00ff oppure viene allocato sopra l'indirizzo 0x00ff, qualunque istruzione viene messa fuori da questa zona il programma assembler non funziona sul PIC, mentre in simulazione sembra funzionare correttamente.
Sinceramente non riesco ad immaginare il problema e quindi la soluzione. Attendo fiducioso Tua opinione.

Saluti,

Giovanni

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Scollo
  • Junior Member
  • Junior Member
Di più
11 Anni 7 Mesi fa #8 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Assembler in MplabX
Ciao Giovanni,

dall'organizzazione della memoria interna non vedo grandi problemi o ragioni per cui non debba funzionare.

Il fatto che in simulazione funzioni mi fa anche pensare che ci sia qualche hardware che non viene simulato per cui non vedi eventuali reset o stalli.

Hai disabilitato il Watch Dog?
Se hai abilitato le interruzioni ha messo le relative interrupt service Routine?

Saluti,

Mauro

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
11 Anni 7 Mesi fa #9 da Scollo
Risposta da Scollo al topic Assembler in MplabX
Ciao Mauro
Mi sono interstadito e mi sono messo in testa di capire perchè non funziona, allora il Tuo suggerimento mi ha fatto riflettere, nel mio programma faccio uso di interrupt che sembrano funzionare correttamente.
Allora, sempre pensando che il problema si annidasse nella gestione della program memory, ho pensato di fare delle prove con un programma più semplice e senza interrupt per vedere come si comportasse il 18f2550 nel momento in cui andassi ad allocare istruzioni nella parte alta della program memory.
Ecco il programma dal quale sono partito: (mi permetto di postarlo perchè è semplicissimo)

#include <p18F2550.inc>

CONFIG WDT=OFF ; disable watchdog timer
CONFIG LVP = OFF ; Low-Voltage programming disabled (necessary for debugging)
CONFIG FOSC = INTOSCIO_EC ; Internal oscillator, port function on RA6
CONFIG PBADEN=OFF ; Portb digital

errorlevel -302

cblock 0x100
Dato ; variabili usate per dati temporanei
Riporto
endc

org 0x00
Start:
clrf TRISC ; Configura PortC tutte uscite
movlw 0xff ; Accendo PORTC
movwf PORTC
movlw 0x00 ; Azzero le varibili
movwf Dato
movwf Riporto
Inizio: ; ciclo ritardo
decfsz Dato, f
goto Inizio
decfsz Riporto, f
goto Inizio
movlw 0x00 ; Spengo PORTC
movwf PORTC
end

come vedi accendo un LED e dopo un po' lo spengo, il programma sembra funzionare, ma non funziona correttamente, perchè dopo il primo lampeggio, dopo circa ogni 5 secondi ripete il lampeggio. A questo punto penso che abbia ragione Tu, il programma dopo ogni 5 secondi si resetta, ma perchè si resetta? non dovrebbe fermarsi.

Saluti,

Giovanni

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Scollo
  • Junior Member
  • Junior Member
Di più
11 Anni 7 Mesi fa - 11 Anni 7 Mesi fa #10 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Assembler in MplabX

Rendering Error in layout Message/Item: array_keys(): Argument #1 ($array) must be of type array, null given. Please enable debug mode for more information.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
Moderatori: Mauro Laurenti

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Login