Progetti

   

Sponsor

   

Servizi

   
Benvenuto, Ospite
Nome utente: Password: Ricordami
  • Pagina:
  • 1
  • 2
  • 3

ARGOMENTO: Trucchi e soluzioni non sempre logiche..per non impazzire!

Trucchi e soluzioni non sempre logiche..per non impazzire! 6 Anni 11 Mesi fa #1

  • StefA
  • Avatar di StefA
  • Offline
  • Moderatore
  • Messaggi: 1222
  • Ringraziamenti ricevuti 104
  • Karma: 14
A molti di noi sarà già capitato, ad altri capiterà di perdere ore e giorni su funzionamenti all'apparenza inspiegabili, sia software che hardware... spesso la soluzione è qualcosa di semplicissimo a cui non pensiamo... a volte invece è qualcosa che non sappiamo, non ci sembra logico e ci arriviamo quasi per caso.

Questo topic nasce per raccogliere tutti questi casi e semplificarci la vita grazie al tempo perso di chi ci ha sbattuto la testa.. chiunque voglia "partecipare" risponda con la propria esperienza, provvederò a mettere tutto sul questo post..

Grazie a tutti.

Ste


  • Se utilizzate la Freedom II con l'RTCC PCF8563, sappiate che così com'è perde qualche secondo all'ora. Si risolve facilmente mettendo un condensatore da 5-25pF sul quarzo del PCF8563. [Thanks to Me per la domanda & fer_ver per la soluzione] topic

  • In Mplab Ide con C18, errori apparentemente inesistenti potrebbero essere risolti lasciando una riga vuota alla fine del main, oppure commentando la prima riga del main. [Thanks to Mauro Laurenti & Pinna] topic

  • Quando si inizializzano o si azzerano dei vettori con dei cicli, prestare particolare attenzione agli estremi, fino a che punto "conta", se ad esempio ho un vettore di 100 char e per errore si mette <120 al posto di <100, l'inizializzazione cambia anche 20 valori in più rispetto a quello che ci aspettiamo, e suddetti valori possono essere qualsiasi cosa nel nostro programma, di conseguenza possono esserci comportamenti anomali o errori inspiegabili. [Thanks to fer_ver] post #2

  • Utilizzando la funzione "void putUSBUSART(char *data, BYTE length)" prestare particolare attenzione a cosa viene passato, deve essere un indirizzo di una variabile o un puntatore ad un array.
    Es:
    char data =0x31;

    se scrivo nel seguente modo è sbagliato...
    putUSBUSART(data,1);

    il modo corretto è il seguente...
    putUSBUSART(&data,1);

    se invece passo un array posso scrivere direttamente data perché è il puntatore al primo dato...come segue..
    char data[] = {0x18,0x42,0x55,0x54,0x54,0x4F,0x4E,0x3A,0x20,0x32,0x00};
    putUSBUSART(data,11);

    [Thanks to shinshi] post #3

  • Un utente che utilizzava come antivirus Comodo, ha riscontrato problemi. Non venivano compilati i progetti con MPLABX (1.90) e C18 (3.44) perché l'antivirus bloccava il tutto; avendo i messaggi di segnalazione dell'antivirus disabilitati, non è stato semplice capire il problema. Lo stesso problema potrebbe essere causato da altri antivirus e con altri software e sistemi operativi. [Thanks to Hector] topic

..avevano magari fatto lo sgambetto al ka, ma il sangue restava sempre più denso dell'acqua.. [cit.]
Ultima modifica: 6 Anni 10 Mesi fa da StefA. Motivo: Aggiornamento
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Trucchi e soluzioni non sempre logiche..per non impazzire! 6 Anni 11 Mesi fa #2

  • fer_ver
  • Avatar di fer_ver
  • Offline
  • Expert Boarder
  • Messaggi: 91
  • Ringraziamenti ricevuti 11
  • Karma: 3
La settimana scorsa ho passato alcune sere a capire perché un array che dichiaravo all'inizio
del Main in questo modo :
unsigned char keys[]={1,4,7,'*',2,5,8,0,3,6,9,'#','A','B','C','D'};
ad un certo, inspiegabilmente, punto cambiava valore.

Ho poi capito che era dovuto al fatto che avevo dichiarato un altro array in questo modo
unsigned char MemTemp[100];
ed ad un certo punto nel programma andavo ad azzerarlo con un ciclo for di questo tipo

for(x=0; x<120;x++){
MemTemp[x]= 0;
}
.... x arrivava a 119(per mio errore), superava la lunghezza dell'array MemTemp e continuava a scrivere sulle variabili successive in memoria che nel mio caso era l'array Keys[].

Spero di essermi spigato bene.
Ciao
Renato
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Trucchi e soluzioni non sempre logiche..per non impazzire! 6 Anni 11 Mesi fa #3

  • shinshi
  • Avatar di shinshi
  • Offline
  • Gold Boarder
  • Messaggi: 293
  • Ringraziamenti ricevuti 29
  • Karma: 3
Ottima iniziativa Ste.
Settimana scorsa sono impazzito anche io nel tentativo di usare la funzione
void putUSBUSART(char *data, BYTE length)
che fa parte del framework USB Microchip e descritta nella guida di Mauro Laurenti "Leggere e Scrivere dati
via USB". In breve questa funzione permette la scrittura di dati dalla RAM al modulo USB.
*data: Puntatore alla struttura dati residente in memoria RAM
length: lunghezza della struttura dati (numero di byte).
Ciò che non capivo inizialmente era che passando alla funzione una variabile char
char data =0x31;
putUSBUSART(data,1);
In realtà passavo alla funzione il dato che in RAM è contenuto nella posizione di memoria 0x31, fino a che non ho corretto in
char data =0x31;
putUSBUSART(&data,1);
In quasto modo passo alla funzione l'indirizzo RAM che contiene la variabile char data.
Se si utilizza invece un array va bene
char data[] = {0x18,0x42,0x55,0x54,0x54,0x4F,0x4E,0x3A,0x20,0x32,0x00};
putUSBUSART(data,11);
Perchè in questo caso data contiene il puntatore all'array.
Saluti
Luca
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Trucchi e soluzioni non sempre logiche..per non impazzire! 6 Anni 11 Mesi fa #4

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Offline
  • Moderatore
  • Messaggi: 4656
  • Ringraziamenti ricevuti 555
  • Karma: 52
Ottima idea.
...ne avevi parlato tempo fa e alla fine l'hai fatta! :)
Fammi fare mente locale. :)

Saluti,

Mauro
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Trucchi e soluzioni non sempre logiche..per non impazzire! 6 Anni 11 Mesi fa #5

  • StefA
  • Avatar di StefA
  • Offline
  • Moderatore
  • Messaggi: 1222
  • Ringraziamenti ricevuti 104
  • Karma: 14
si..l'idea era partita dal fare una sorta di pillole per MplabX.. poi ho pensato di ampliare un po' la cosa.. :P

Ste
..avevano magari fatto lo sgambetto al ka, ma il sangue restava sempre più denso dell'acqua.. [cit.]
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
  • Pagina:
  • 1
  • 2
  • 3
Moderatori: Mauro Laurenti, StefA
Powered by Forum Kunena
   
© LaurTec 2006-2015