DavidOne71 Inserito: 18 maggio 2013 Segnala Inserito: 18 maggio 2013 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
DavidOne71 Inserita: 25 maggio 2013 Autore Segnala Inserita: 25 maggio 2013 Immagino che nessuno sa niente di questa cosa
kappa47 Inserita: 29 maggio 2013 Segnala Inserita: 29 maggio 2013 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...
DavidOne71 Inserita: 29 maggio 2013 Autore Segnala Inserita: 29 maggio 2013 Innanzi tutto grazie per la risposta non ci speravo più 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
kappa47 Inserita: 30 maggio 2013 Segnala Inserita: 30 maggio 2013 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" ?
DavidOne71 Inserita: 30 maggio 2013 Autore Segnala Inserita: 30 maggio 2013 (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 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: 30 maggio 2013 da DavidOne71
kappa47 Inserita: 31 maggio 2013 Segnala Inserita: 31 maggio 2013 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.
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora