AIUTO !!!!!!!

8 Anni 11 Mesi fa #6 da Novello
Risposta da Novello al topic AIUTO !!!!!!!
ciao Luca

grazie per la risposta
ma la risposta di Andrea mi aveva messo una pulce nell'orecchio e cosi ho cambiato porta e tutto funziona ( si vede che a furia di modificare la scheda ho bruciato la porta a

poi effettivamente quello che hai de tu è giusto ,ogni volta che premevo avanzava anche di due o tre e se tenevo premuto girava tranquillamente

ho apportato qualche modifica e adesso sembra che va bene

questa e la modifica
while (1) {

if (MARCIA_SU==1){

delay_ms(100);
if(MARCIA_SU==1) {
if (marce > 5 ) marce = 5 ;
ConvertValue(marce++ ,4,0,&StringLCD[0],0,FONT8,3,12,0);

while (MARCIA_SU==1){
delay_ms(20);
}

dimmi cosa ne pensi?
adesso devo fare la parte per tornare indietro
in quanto lo devo usare per contare le marce sul KART e pertanto quando scalo devo tornare indietro

comunque per essere il mio primo programmino sono soddisfatto, anche perche cosi facendo apprendo qualcosa

vi ringrazio tutti per l'appoggio che date

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

  • Novello
  • New Member
  • New Member
Di più
8 Anni 11 Mesi fa #7 da alfa75
Risposta da alfa75 al topic AIUTO !!!!!!!
Ora che ci ripenso sul portA di solito ci sono anche diversi ingressi analogici che di default sono attivi e vanno disattivati per rendere i vari pin del portA ingressi digitali
controlla bene il datasheet,perchè non conosco bene il pic in questione ma di solito si disattivano gli ingressi analogici tramite il registro ADCON0 o ADCON1

Ciao
Andrea

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

  • alfa75
  • Avatar di alfa75
  • Platinum Member
  • Platinum Member
Di più
8 Anni 11 Mesi fa #8 da Novello
Risposta da Novello al topic AIUTO !!!!!!!
Ciao Andrea
era solo un problema dì impostazioni delle porte
adesso ho capito l'inghippo e tutto funziona
praticamente non avevo capito la storia dei bit e quando pensavo di impostare la porta 6 impostavo la 5

adesso funziona sia in su che in giù mi segna anche la folle

adesso vorrei inserire anche il contachilometri, ma la vedo dura, comunque ci provo
al massimo vi rompo le scatole

ciao

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

  • Novello
  • New Member
  • New Member
Di più
8 Anni 11 Mesi fa #9 da LucaDB66
Risposta da LucaDB66 al topic AIUTO !!!!!!!
Ciao Novello


Scusa non sono più riuscito a seguire la discussione per impegni lavorati
Mi fa piacere che hai risolto il problema
Se me lo permetti volevo darti qualche dritta per il tuo programma
Non voglio assolutamente criticare anzi da un certo punto di vista invidio l' entusiasmo che
ci stai mettendo , entusiasmo che io col tempo ho un po perso .
Cosi come hai strutturato il programma , il ciclo while che hai usato fa si che il micro è "inchiodato"
li in attesa del pulsante e non può nel frattempo svolgere altre funzioni .

while (MARCIA_SU==1){
delay_ms(20);
}

In normale programma questo sarebbe inaccettabile
Mano a mano che acquisirai esperienza ti cimenterai nella realizzazione di programmi via via più complessi
Una delle prime cose di cui ti renderai conto per gestire la maggiore complessità , sara la necessita
di spezzare il programma in una serie di funzioni più semplici sia da scrivere che da debagare .
Passerai quindi da un main con tutto dentro come nel tuo attuale esercizio ad un main in cui verranno chiamate sequenzialmente una serie di funzioni .
Immagina ora se una di queste funzioni facesse entrare il micro in un loop infinito ovviamente le altre funzioni non potrebbero più girare .
Ti faccio un esempio sotto facendo riferimento al programma a cui stai lavorando

main(){
while(1){
GestioneTastoIncrementoVariabile();
GestioneTastoDecrementoVariabile();
GestioneAggiornamentoVariabile();
}
}

Immagina che la funzione "GestioneTastoIncrementoVariabile()" contenga all' interno un ciclo while dove aspetta il cambio di stato del pulsante come hai fatto tu . Risultato le altre due funzioni non possono girare .
Devi quindi ragionare in modo che ogni funzione venga eseguita e svolga il suo compito senza bloccare il micro

Ti ho allegato un pezzo di codice di esempio di quello che intendo
Sentiti tranquillamente libero di modificarlo o anche di cestinarlo se non ti ci trovi .
Nota io ho scritto un programma in C puro non ho usato funzioni di libreria
Comunque tranquillo non scoraggiarti l' unico modo per imparare e la passione e tentare e ritentare


Saluti
Allegati:
Ringraziano per il messaggio: Novello

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

  • LucaDB66
  • New Member
  • New Member
Di più
8 Anni 11 Mesi fa #10 da Novello
Risposta da Novello al topic AIUTO !!!!!!!
Ciao Luca

sei grande ........
effettivamente il ragionamento no fa una grinza
ma io purtroppo faccio per quello che riesco in quanto e la prima volta che scrivo un programmino

pertanto accetto volentieri il tuo programma cosi lo studio e lo provo con la struttura che hai fatto tu

prendo l'occasione per chiederti un'altro aiuto

sti spiego :
vorrei aggiungere anche il tachimetro e avevo pensato di usare un SS411A con effetto hall per leggere gli impulsi
ho fatto delle prove con un encoder montato su un motorino elettrico
( ho eliminato tutta la parte precedente di programma perche volevo capire se andasse senza avere le interferenze delle altre funzioni)
ma il riusltato e stato nullo
penso che probabilmente l'encoder non va letto come un pulsante in quanto pùò arrivare leggere fono a a 50000 impulsi al minuto
ho collgato il componente come da uno schema che avevo gia usando un HC14 ma niente

e pertanto non so come fare
puoi aiutarmi ?
hai qualche spiegazione da darmi sul come fare :( :( :(

Giovanni

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

  • Novello
  • New Member
  • New 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