chiamata di una funzione con pic18f45k20 da problemi

9 Anni 7 Mesi fa - 9 Anni 7 Mesi fa #1 da aliasin81
Salve a tutti sono nuovo ed è la prima volta che scrivo in questo forum ma visto che è partito tutto da questo sito mi è sembrato giusto cosi....vengo subito al dunque:
uno dei mie più grandi desideri era quello di imparare a usare i pic quindi poco tempo fa ho acquistato il pickit 3 con una scheda prova ed ho cominciato a programmare pic per la prima volta in assebler con il pic16f628 facendo qualche programmino prova di quelli stupidi , poi con la versione free di xc8 con pic 18f45k20 visto che mi sono messo intesta di fare cose più complicate, premetto che ho imparato quel poco di c grazie hai pic. Dato che la scheda prova ha solo dei led mi esercito per il momento con giochi di luce visto che ora sono queste le possibilità ho fatto un programma che racchiude più giochi di luce: premendo il tasto 1 sec si accende led 0 on e chiamata la funzione effetto led super car tenendolo premuto per 2 sec led 1on e si avviano led rotanti, 3 sec led 2on si visualizza su latd il registro adresl dell'adc vedendo cosi la tensione convertita in bit, 4sec led 3on tutti i led con effetto lampeggiante 5 sec led 7 on e poi si ferma tutto. E fino qui tutto ok il problema sta nel momento in cui inserisco le due chiamate prima e dopo il ciclo de led rotanti per sentire la pressione del tasto per poter cambiare effetto luminoso. Se tolgo le chiamate tutto funziona bene tranne il fatto che se entro nel ciclo dei led rotanti non ne posso più uscire.Se metto le chiamate e premo il pulsante le funzioni scorrono con il relativo led ma se lascio il tasto non fa più nulla tutto spento e come se non restituisse il valore che abilita quel'effetto o provato anche con una funzione che restituisce il valore
ma non cambia niente e dovuto che xc8 e free oppure per mia inesperienza mi sfugge qualcosa. invio il codice se qualche buon anima gli da un occhiata non trovo l'errore....grazie :(
Allegati:
Ultima Modifica 9 Anni 7 Mesi fa da aliasin81.

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

  • aliasin81
  • Junior Member
  • Junior Member
Di più
9 Anni 7 Mesi fa #2 da StefA
Benvenuto nel forum aliasin81!

Da uno sguardo rapido ho notato che scrivi...
//INCREMENTO REGGISTR LATD DI UNO VERSO DESTRA//
LATD>>=1;

devo ricontrollare ma credo sia errato, dovrebbe essere LATD >> 1;

(analogamente sotto...LATD<<=0x01; andrebbe cambiato in LATD << 0x01;)

non so se questo può risolvere il tuo problema, quando posso cerco di leggermelo più approfonditamente.

Un consiglio per il futuro, quando programmi inserisci gli spazi in modo da rendere più leggibile il programma.

Ste

..avevano magari fatto lo sgambetto al ka, ma il sangue restava sempre più denso dell'acqua.. [cit.]
Ringraziano per il messaggio: aliasin81

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

  • StefA
  • Avatar di StefA
  • Moderator
  • Moderator
Di più
9 Anni 7 Mesi fa - 9 Anni 7 Mesi fa #3 da aliasin81
Grazie StefA inazitutto della riposta lo so il codice visto cosi è un casino e ci sono delle variabili in più ,che ho usato per fare delle prove ma questo perchè è un prog. per esercitarmi.
Il fatto che ho usato lo schift in questo modo e che se non metto l'uguale davanti "<<=" non mi scorrono i led si inchiodano per tutte è due i versi.E poi la parte superiore del prog. funziona e solo la chiamata dentro questa parte di prog. che fa il casisno ripeto se la tolgo entro dentro la if i led ruotano quindi ok ma poi non esco più.Se invece la metto e salto questa parte di prog selezionando per dire il 4 e poi esco e provo gli altri escluso rotazione led ok .Ma se vado proprio su quella if i led spenti non ruotano se provo a uscire "fa il gesto diciamo" posso scegliere l'effetto luce ma però dopo non funziona neanche quello cosi per tutti, tutto se lascio la chiamata 'push();' dento quel pezzo di prog. giuro non so proprio dov'è l'errore non ne ho idea..... :pinch: sto impazzendo.....
//ROTAZIONE LED//
if(ability==2){
LATDbits.LATD0=0;
while(1){
ADC();
push();----> con questa chiamata alla pressione di SWC si blocca tutto,tolta la chiamata va tutto ok PS se si entra non si esce più
//TEMPO RITORDO LED//
for(c=0;c<vai;c++){
}
LATD<<=0x01;
if(STATUSbits.C){
LATDbits.LATD0 = 1;
}
}
}
Ultima Modifica 9 Anni 7 Mesi fa da aliasin81.

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

  • aliasin81
  • Junior Member
  • Junior Member
Di più
9 Anni 7 Mesi fa #4 da aliasin81
Salve ha tutti ho scritto poco tempo per una funzione che mi dava dei problemi (che ancora non ho risolto). Apparte questo dopo aver fatto vari programmini ora ho la necessita di scrivere qualche libreria
girando sul web oltre che alle vostre informazioni su come creare una libreria non si trova molto l'uniche informazioni che ho trovato mostrano la seguente procedura:
si crea il progetto si sceglie il pic si sceglie la suite per esempi xc8 copiler si da nome al progetto si crea il file.c con le funzioni da eseguire
dopo si fa su projet-->build options-->*project e fino qui tutto okma e poi si dovrebbe aprire una finestra dove si dice che questo file e di libreria per poi compilarlo senza errore
visto che è esente dalla funzione main, e poi si fa il resto......il mio problema è che non ho quel tipo di finestra con quella funzione manderò un file con le imaggini per capirci meglio
Il punto è mi sfugge qualcosa forse perchè c'è differenza tra mplab-ide e mplabx o c'è

qualche altro metodo che non conosco come si creano queste librerie mi manca qualche passaggio
Grazie.......aspetto con ansia consigli......

ps.nel file inviato la finestra a sinistra con bordo blu e di esempio ed è quella diciamo giusta, la finestra a destra bordo più scuro è quella che appare a me e diverso il programma?
Allegati:

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

  • aliasin81
  • Junior Member
  • Junior Member
Di più
9 Anni 7 Mesi fa #5 da Cosimix

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.

  • Cosimix
  • Avatar di Cosimix
  • Elite Member
  • Elite Member
Di più
Moderatori: Mauro LaurentiPinnaStefAMatteo Garia

Registrati al sito

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

Registrati al sito LaurTec.

Login