Vai al contenuto
PLC Forum

Partecipa anche tu alla Live su Youtube martedì 28/01/2025 per festeggiare i 24 anni di PLC Forum

Per ulteriori informazioni leggi questa discussione: https://www.plcforum.it/f/topic/326513-28012025




Mplab X Funzione Step Over


Messaggi consigliati

Inserito:

Ciao a tutti, vorrei passare a mplab X ma ci sono alcune cose che non funzionano e in particolare la funzione step over.

In mplab 8.84 nessun problema e anche nelle versioni precedenti...

MainLoop

34 call InitDelay

35 call DcR

36 call DcL

37 call PwrR

......

DcR

123 btfss SOFTON

124 return

125 movlw b'00000001' ; Seleziona il canale 0 (RA0),

126 movwf ADCON0 ; giustificato a sinistra, attiva il convertitore ADC

127 goto $+1 ; Ritardo di 5 us

128 goto $+1 ; per la carica

.....

I numeri li ho messi solo per capire meglio, quando simulo e sono alla linea 35 premo step over che dovrebbe eseguire la routine DcR senza entrarci e fermarsi sulla linea successiva (36) invece salta alla linea 37. Come mai? nella 8.84 non accade...

Spero che qualcuno mi possa aiutare

Grazie

:smile:


Inserita:

Immagino che nessuno sa niente di questa cosa :(

Inserita:

Probabilmente e' un bug del simulatore/emulatore.

Prova ad inserire una "nop" tra le due call (tra il punto 35 e 36).

Non dici quale compilatore utilizzi.

Prova a compilare con il minimo di ottimizzazione.

Alla prossima...

Inserita:

Innanzi tutto grazie per la risposta non ci speravo più :smile:

Prova ad inserire una "nop" tra le due call (tra il punto 35 e 36).

In effetti funziona pero non mi sembra eccezionale :(

Non dici quale compilatore utilizzi.

MPASM v5.49

Prova a compilare con il minimo di ottimizzazione.

Non vale per i compilatori ad alto livello? io scrivo in assembler :huh:

Inserita:

Hai ragione, in assembler non ci sono livelli di ottimizzazione.

Per curiosita', prova a fare questa modifica:

DcR

123 btfss SOFTON

124 goto label

125 movlw b'00000001' ; Seleziona il canale 0 (RA0),

126 movwf ADCON0 ; giustificato a sinistra, attiva il convertitore ADC

127 goto $+1 ; Ritardo di 5 us

128 goto $+1 ; per la carica

.....

130 label return

Togli la "nop" che hai inserito tra la riga 35 e 36.

Puoi postare l'inizio della funzione "DcL" ?

Inserita: (modificato)
130 label return

Perdonami, ma non ho capito il "label", devo scriverla proprio cosi?

Puoi postare l'inizio della funzione "DcL" ?

Il codice che ho postato era solo un esempio, me lo fa su tutte le call che ho :wacko:

comunque questa è tutta la routine:

DcL

btfss SOFTON

return

movlw b'00000101' ; Seleziona il canale 1 (RA1),

movwf ADCON0 ; giustificato a sinistra, attiva il convertitore ADC

goto $+1 ; Ritardo di 5 us

goto $+1 ; per la carica

nop ; del condensatore

bsf ADCON0,GO ; start conversion

btfsc ADCON0,GO ; this bit will change to zero when the conversion is complete

goto $-1

ifdef __DEBUG

movlw 100

movwf ADRESH

endif

movfw ADRESH ; Salva il valore acquisito

sublw 38

btfss _C

goto $+2

goto DcLover

movfw ADRESH ; Salva il valore acquisito

sublw 141

btfss _C

goto DcLover

bcf DCL ; Imposta errore soglia DC non superata

return

DcLover bsf DCL ; Imposta errore soglia DC superata

return

Scusa per l'allineamento ma l'editor del forum mi toglie gli spazi :(

Modificato: da DavidOne71
Inserita:

E' una etichetta per il "goto". Puoi usare un nome qualunque.

Se il problema rimane, prova ad iniziare le tue funzioni con una "nop"

e non con il test della variabile "SOFTON".

Non ti preoccupare per l'allineamento.

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...