Non è possibile tutte a me!
Programma contagiri... ****!
Moderatore:
Paolino
50 messaggi
• Pagina 3 di 5 • 1, 2, 3, 4, 5
0
voti
Dopo svariati tentativi ha funzionato (solo l'accensione di tutti i led insieme con un programmino semplice)
Ero felicissimo tanto che volevo provare anche l'altro programma (contagiri) ma poi ho provato un ultima volta con il programmino semplice! ma non funziona niente!! e ora dopo svariati tentativi di provare a farlo ripartire ancora niente... uff 
Non è possibile tutte a me!

Non è possibile tutte a me!
-

DeMonio83924EL
78 3 7 - Frequentatore

- Messaggi: 231
- Iscritto il: 24 ott 2009, 23:02
0
voti
Fai una prova. Seleziona l' oscillatore interno senza PLL e mettici questo programma. E' il tuo, scritto un po' piu' leggibile e con qualche piccola variazione.
Fai partire e dimmi cosa vedi.
Fai partire e dimmi cosa vedi.
- Codice: Seleziona tutto
void interrupt (void); //Funzione ISR (Interrupt Service Routine)
volatile int rpm=0; //Variavile globale per i giri del motore
void main()
{
T0PS1_bit=1; //Imposto il valore di prescale a 1:8
TMR0IE_bit=1; //Abilita l'interrupt su TMR0 quando avviene l'overflow
TMR0IF_bit=1; //Abilita l'interrupt flag quando viene scatenato l'interrupt per overflow da TMR0
TMR0ON_bit=1; //Attiva TMR0
T1SYNC_bit=1; //TMR1 external clock input do not synchronization
TMR1CS_bit=1; //Sorgente di clock esterna per TMR1 dal pin T1CKI
TMR1ON_bit=1; //Attiva TMR1
PCFG3_bit=1; //Tutta PORTA come I/O digitali
PCFG2_bit=1; //Tutta PORTA come I/O digitali
PCFG1_bit=1; //Tutta PORTA come I/O digitali
PCFG0_bit=1; //Tutta PORTA come I/O digitali
trisb=0; //PORTB tutta come output
trisa=0; //PORTA tutta come output
TMR0L=0x7A; //Inizializza TIMER 0 reimposto il valore preindicato per stabilire i 100 mS all'interrupt(Fosc=12 MHz)
TMR0H=0x6D;
TMR1L=0x00; //Azzera TIMER 1 per conteggio asincrono segnale esterno (onda quadra)
TMR1H=0x00;
IPEN_bit=0; //Disabilita la priorità degli interrupts
GIE_bit=1; //Abilita GIE (General Interrupt Enable)
PEIE_bit=1; //Abilita PEIE (Peripheral Interrupt Enable)
while(1) //Ciclo infinito
{
// Prova per verifca del funzionamento
rpm = 3;
// fine prova
switch (rpm)
{
case 0: //Caso di motore fermo
LATB = 0;
LATA = 0;
break;
case 1: //Caso mille giri al minuto
LATB = 0x80;
LATA = 0;
break;
case 2: //Caso 2 mila giri al minuto
LATB = 0xC0;
LATA = 0;
break;
case 3: //Caso 3 mila giri al minuto
LATB = 0xE0;
LATA = 0;
break;
case 4: //Caso 4 mila giri al minuto
LATB = 0xF0;
LATA = 0;
break;
case 5: //Caso 5 mila giri al minuto
LATB = 0xF8;
LATA = 0;
break;
case 6: //Caso 6 mila giri al minuto
LATB = 0xFC;
LATA = 0;
break;
case 7: //Caso 7 mila giri al minuto
LATB = 0xFE;
LATA = 0;
break;
case 8: //Caso 8 mila giri al minuto
LATB = 0XFF;
LATA = 0;
break;
case 9: //Caso 9 mila giri al minuto
LATB = 0xFF;
LATA = 0x20;
break;
case 10: //Caso 10 mila giri al minuto
LATB = 0xFF;
LATA = 0x30;
break;
case 11: //Caso 11 mila giri al minuto
LATB = 0xFF;
LATA = 0x38;
break;
case 12: //Caso 12 mila giri al minuto
LATB = 0xFF;
LATA = 0x3C;
break;
case 13: //Caso 13 mila giri al minuto
LATB = 0xFF;
LATA = 0x3E;
break;
case 14: //Caso 14 mila giri al minuto
LATB = 0xFF;
LATA = 0x3F;
break;
}
}
}
void interrupt (void) //Funzione ISR (Interrupt Service Routine)
{
if (pir1.TMR0IF) //Interrupt scatenato da timer0?
{
pir1.TMR0IF=0; //Azzero il bit flag interrupt scatenato da TMR0
rpm=((int)TMR1L*3)/35; //Valore TMR1 in variabile rpm (moltiplico il valore di TMR1L per 10 e per 60 per trovare gli impulsi in un minuto poi divido per 7, il valore dei poli dell'alternatore, e infine divido per mille per ricavare un numero intero che varia da 0 a 14)
TMR0L=0x7A; //Inizializza TIMER 0 reimposto il valore preindicato per stabilire i 100 mS all'interrupt(Fosc=12 MHz)
TMR0H=0x6D;
TMR1L=0x00; //Azzera TIMER 1 per conteggio asincrono segnale esterno (onda quadra)
TMR1H=0x00;
}
}
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
-

TardoFreak
73,9k 8 12 13 - -EY Legend-

- Messaggi: 15754
- Iscritto il: 16 dic 2009, 11:10
- Località: Torino - 3° pianeta del Sistema Solare
0
voti
-Allora prima cosa: Come mai il mio non funzionava?! anche lo spostare le impostazioni(es. GIE_bit=1) prima(nel programma) o dopo deve avere una logica per poi funzionare?! perché pure io avevo fatto una prova simile ma senza aver risultati finali...
-Seconda: mi sa che c'è qualche problema per attivare i led... credo che dovrò attivarli uno per volta, all'interno di ogni "case". perché con la variabile rpm=3 accende tutta LATB meno l'ultimo bit di essa! e dovrebbe accendere il 7°,6°e5°... infatti il numero esadecimale è 0xE0 ed il corrispondente in binario è 11100000... questo succede per quale motivo?!
-Terza: Sul contagiri finale posso utilizzare anche l'oscillatore interno?! Io avevo preso questo oscillatore a 12MHz perché un amico mi aveva detto che per riuscire a captare un segnale in entrata a 1400Hz mi serviva almeno un oscillatore da 12MHz... Ma poi ora che ci ragiono sopra è inutile... perché se ho impostato l'ingresso su T1CKI, impostato come contatore asincrono non dovrei aver limiti! Sbaglio?! quindi posso utilizzare anche l'oscillatore interno!?
Grazie mille!!!!!!!!!
-

DeMonio83924EL
78 3 7 - Frequentatore

- Messaggi: 231
- Iscritto il: 24 ott 2009, 23:02
0
voti
Niente c'è qualcosa che non va! oggi ho provato tutti i 15 casi... ma il risultato è uguale per tutti! si accende solo LATB escluso il 7°bit!
Cos'è?! tipo una segnalazione di un errore??
Cos'è?! tipo una segnalazione di un errore??
-

DeMonio83924EL
78 3 7 - Frequentatore

- Messaggi: 231
- Iscritto il: 24 ott 2009, 23:02
0
voti
Hai provato a selezionare l' oscillatore interno?
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
-

TardoFreak
73,9k 8 12 13 - -EY Legend-

- Messaggi: 15754
- Iscritto il: 16 dic 2009, 11:10
- Località: Torino - 3° pianeta del Sistema Solare
0
voti
Certo certo! Grazie!
infatti si accendono i led ma in maniera "strana"! si accende sempre tutta LATB eccetto il 7°bit di quel LAT e il LATA non da segni di vita (in qualunque "case" in cui si trovi il programma)... ho provato anche ad accendere i led dei bit per bit (senza usare il numero esadecimale) ma comunque da sempre lo stesso risultato... boh... 
N.B. Con un programmino semplice con solo l'accensione dei led singolarmente e anche con numero esadecimale funziona tutto perfettamente!
N.B. Con un programmino semplice con solo l'accensione dei led singolarmente e anche con numero esadecimale funziona tutto perfettamente!
-

DeMonio83924EL
78 3 7 - Frequentatore

- Messaggi: 231
- Iscritto il: 24 ott 2009, 23:02
0
voti
OK, controlliamo il "case".
Modifica il programma nel modo seguente:
Ora DEVE funzionare, altrimenti c'e' qualcosa che non va ma non a livello di programma.
Ah, puoi usare il clock interno. Ha precisione piu' che sufficiente per la tua applicazione.
Modifica il programma nel modo seguente:
- Codice: Seleziona tutto
void interrupt (void); //Funzione ISR (Interrupt Service Routine)
volatile int rpm=0; //Variavile globale per i giri del motore
int pippo;
void main()
{
T0PS1_bit=1; //Imposto il valore di prescale a 1:8
TMR0IE_bit=1; //Abilita l'interrupt su TMR0 quando avviene l'overflow
TMR0IF_bit=1; //Abilita l'interrupt flag quando viene scatenato l'interrupt per overflow da TMR0
TMR0ON_bit=1; //Attiva TMR0
T1SYNC_bit=1; //TMR1 external clock input do not synchronization
TMR1CS_bit=1; //Sorgente di clock esterna per TMR1 dal pin T1CKI
TMR1ON_bit=1; //Attiva TMR1
PCFG3_bit=1; //Tutta PORTA come I/O digitali
PCFG2_bit=1; //Tutta PORTA come I/O digitali
PCFG1_bit=1; //Tutta PORTA come I/O digitali
PCFG0_bit=1; //Tutta PORTA come I/O digitali
trisb=0; //PORTB tutta come output
trisa=0; //PORTA tutta come output
TMR0L=0x7A; //Inizializza TIMER 0 reimposto il valore preindicato per stabilire i 100 mS all'interrupt(Fosc=12 MHz)
TMR0H=0x6D;
TMR1L=0x00; //Azzera TIMER 1 per conteggio asincrono segnale esterno (onda quadra)
TMR1H=0x00;
IPEN_bit=0; //Disabilita la priorità degli interrupts
GIE_bit=1; //Abilita GIE (General Interrupt Enable)
PEIE_bit=1; //Abilita PEIE (Peripheral Interrupt Enable)
while(1) //Ciclo infinito
{
// Prova per verifca del funzionamento
pippo = 3;
// fine prova
switch (pippo)
{
case 0: //Caso di motore fermo
LATB = 0;
LATA = 0;
break;
case 1: //Caso mille giri al minuto
LATB = 0x80;
LATA = 0;
break;
case 2: //Caso 2 mila giri al minuto
LATB = 0xC0;
LATA = 0;
break;
case 3: //Caso 3 mila giri al minuto
LATB = 0xE0;
LATA = 0;
break;
case 4: //Caso 4 mila giri al minuto
LATB = 0xF0;
LATA = 0;
break;
case 5: //Caso 5 mila giri al minuto
LATB = 0xF8;
LATA = 0;
break;
case 6: //Caso 6 mila giri al minuto
LATB = 0xFC;
LATA = 0;
break;
case 7: //Caso 7 mila giri al minuto
LATB = 0xFE;
LATA = 0;
break;
case 8: //Caso 8 mila giri al minuto
LATB = 0XFF;
LATA = 0;
break;
case 9: //Caso 9 mila giri al minuto
LATB = 0xFF;
LATA = 0x20;
break;
case 10: //Caso 10 mila giri al minuto
LATB = 0xFF;
LATA = 0x30;
break;
case 11: //Caso 11 mila giri al minuto
LATB = 0xFF;
LATA = 0x38;
break;
case 12: //Caso 12 mila giri al minuto
LATB = 0xFF;
LATA = 0x3C;
break;
case 13: //Caso 13 mila giri al minuto
LATB = 0xFF;
LATA = 0x3E;
break;
case 14: //Caso 14 mila giri al minuto
LATB = 0xFF;
LATA = 0x3F;
break;
}
}
}
void interrupt (void) //Funzione ISR (Interrupt Service Routine)
{
if (pir1.TMR0IF) //Interrupt scatenato da timer0?
{
pir1.TMR0IF=0; //Azzero il bit flag interrupt scatenato da TMR0
rpm=((int)TMR1L*3)/35; //Valore TMR1 in variabile rpm (moltiplico il valore di TMR1L per 10 e per 60 per trovare gli impulsi in un minuto poi divido per 7, il valore dei poli dell'alternatore, e infine divido per mille per ricavare un numero intero che varia da 0 a 14)
TMR0L=0x7A; //Inizializza TIMER 0 reimposto il valore preindicato per stabilire i 100 mS all'interrupt(Fosc=12 MHz)
TMR0H=0x6D;
TMR1L=0x00; //Azzera TIMER 1 per conteggio asincrono segnale esterno (onda quadra)
TMR1H=0x00;
}
Ora DEVE funzionare, altrimenti c'e' qualcosa che non va ma non a livello di programma.
Ah, puoi usare il clock interno. Ha precisione piu' che sufficiente per la tua applicazione.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
-

TardoFreak
73,9k 8 12 13 - -EY Legend-

- Messaggi: 15754
- Iscritto il: 16 dic 2009, 11:10
- Località: Torino - 3° pianeta del Sistema Solare
0
voti
Grazie! Comunque appena provato... niente... da lo stesso identico problema di prima!
Poi ora ho notato che il numero esadecimale di LATA era sbagliato! quindi l'ho modificato con:
Però mi sorge una domanda... non è che ho sbagliato o addirittura dimenticato qualche impostazione iniziale del PIC che magari non conosco? perché con questo programma funziona perfettamente, il numero esadecimale e i led accesi corrispondono!
Poi ora ho notato che il numero esadecimale di LATA era sbagliato! quindi l'ho modificato con:
- Codice: Seleziona tutto
void interrupt (void); //Funzione ISR (Interrupt Service Routine)
volatile int rpm=0; //Variavile globale per i giri del motore
int pippo;
void main()
{
T0PS1_bit=1; //Imposto il valore di prescale a 1:8
TMR0IE_bit=1; //Abilita l'interrupt su TMR0 quando avviene l'overflow
TMR0IF_bit=1; //Abilita l'interrupt flag quando viene scatenato l'interrupt per overflow da TMR0
TMR0ON_bit=1; //Attiva TMR0
T1SYNC_bit=1; //TMR1 external clock input do not synchronization
TMR1CS_bit=1; //Sorgente di clock esterna per TMR1 dal pin T1CKI
TMR1ON_bit=1; //Attiva TMR1
PCFG3_bit=1; //Tutta PORTA come I/O digitali
PCFG2_bit=1; //Tutta PORTA come I/O digitali
PCFG1_bit=1; //Tutta PORTA come I/O digitali
PCFG0_bit=1; //Tutta PORTA come I/O digitali
trisb=0; //PORTB tutta come output
trisa=0; //PORTA tutta come output
TMR0L=0x7A; //Inizializza TIMER 0 reimposto il valore preindicato per stabilire i 100 mS all'interrupt(Fosc=12 MHz)
TMR0H=0x6D;
TMR1L=0x00; //Azzera TIMER 1 per conteggio asincrono segnale esterno (onda quadra)
TMR1H=0x00;
IPEN_bit=0; //Disabilita la priorità degli interrupts
GIE_bit=1; //Abilita GIE (General Interrupt Enable)
PEIE_bit=1; //Abilita PEIE (Peripheral Interrupt Enable)
while(1) //Ciclo infinito
{
// Prova per verifca del funzionamento
pippo = 3;
// fine prova
switch (pippo)
{
case 0: //Caso di motore fermo
LATB = 0;
LATA = 0;
break;
case 1: //Caso mille giri al minuto
LATB = 0x80;
LATA = 0;
break;
case 2: //Caso 2 mila giri al minuto
LATB = 0xC0;
LATA = 0;
break;
case 3: //Caso 3 mila giri al minuto
LATB = 0xE0;
LATA = 0;
break;
case 4: //Caso 4 mila giri al minuto
LATB = 0xF0;
LATA = 0;
break;
case 5: //Caso 5 mila giri al minuto
LATB = 0xF8;
LATA = 0;
break;
case 6: //Caso 6 mila giri al minuto
LATB = 0xFC;
LATA = 0;
break;
case 7: //Caso 7 mila giri al minuto
LATB = 0xFE;
LATA = 0;
break;
case 8: //Caso 8 mila giri al minuto
LATB = 0XFF;
LATA = 0;
break;
case 9: //Caso 9 mila giri al minuto
LATB = 0xFF;
LATA = 0x01;
break;
case 10: //Caso 10 mila giri al minuto
LATB = 0xFF;
LATA = 0x03;
break;
case 11: //Caso 11 mila giri al minuto
LATB = 0xFF;
LATA = 0x07;
break;
case 12: //Caso 12 mila giri al minuto
LATB = 0xFF;
LATA = 0x0F;
break;
case 13: //Caso 13 mila giri al minuto
LATB = 0xFF;
LATA = 0x1F;
break;
case 14: //Caso 14 mila giri al minuto
LATB = 0xFF;
LATA = 0x3F;
break;
}
}
}
void interrupt (void) //Funzione ISR (Interrupt Service Routine)
{
if (pir1.TMR0IF) //Interrupt scatenato da timer0?
{
pir1.TMR0IF=0; //Azzero il bit flag interrupt scatenato da TMR0
rpm=((int)TMR1L*3)/35; //Valore TMR1 in variabile rpm (moltiplico il valore di TMR1L per 10 e per 60 per trovare gli impulsi in un minuto poi divido per 7, il valore dei poli dell'alternatore, e infine divido per mille per ricavare un numero intero che varia da 0 a 14)
TMR0L=0x7A; //Inizializza TIMER 0 reimposto il valore preindicato per stabilire i 100 mS all'interrupt(Fosc=12 MHz)
TMR0H=0x6D;
TMR1L=0x00; //Azzera TIMER 1 per conteggio asincrono segnale esterno (onda quadra)
TMR1H=0x00;
}
}
Però mi sorge una domanda... non è che ho sbagliato o addirittura dimenticato qualche impostazione iniziale del PIC che magari non conosco? perché con questo programma funziona perfettamente, il numero esadecimale e i led accesi corrispondono!
- Codice: Seleziona tutto
void main()
{
trisb=0;
trisa=0;
latb=0xFF; //tutta latb a livello alto
lata=0x01; //primo bit di lata a livello alto
while(1);
}
-

DeMonio83924EL
78 3 7 - Frequentatore

- Messaggi: 231
- Iscritto il: 24 ott 2009, 23:02
0
voti
Dopo molte prove escludendo e poi aggiungendo una ad una le impostazioni (quelle prima dello switch) ho scoperto che funziona con tutto eccetto questa riga di codice:
Appena viene inserita non funziona niente... perché???
Stò cercando anche sul datasheet... ho provato anche con mettere l'interrupt con priorità alta ma per il momento niente!
- Codice: Seleziona tutto
TMR0IE_bit=1; //Abilita l'interrupt su TMR0 quando avviene l'overflow
Appena viene inserita non funziona niente... perché???
Stò cercando anche sul datasheet... ho provato anche con mettere l'interrupt con priorità alta ma per il momento niente!
-

DeMonio83924EL
78 3 7 - Frequentatore

- Messaggi: 231
- Iscritto il: 24 ott 2009, 23:02
0
voti
Ora ho capito... Guardando il diagramma dell'abilitazione degli interrupt:
io da stupido
, ponevo già l'interrupt flag di TMR0 a 1 quindi andava subito all'interrupt!!! e quindi non funzionava niente credo... però ora c'è qualche problemino nella gestione dell'interrupt... perché ho provato ma non funziona... boh! il programma ora è così:
Ho provato a fare dei test... ho provato a mettere rpm=2 all'interno della gestione dell'interrupt... ma niente...
Quindi ora la mia domanda è cos'ho sbagliato nella gestione dell'interrupt?!
Grazie!
io da stupido
, ponevo già l'interrupt flag di TMR0 a 1 quindi andava subito all'interrupt!!! e quindi non funzionava niente credo... però ora c'è qualche problemino nella gestione dell'interrupt... perché ho provato ma non funziona... boh! il programma ora è così:- Codice: Seleziona tutto
void interrupt (void); //Funzione ISR (Interrupt Service Routine)
volatile int rpm=0; //Variavile globale per i giri del motore
void main()
{
TMR0IE_bit=1; //Abilita l'interrupt su TMR0 quando avviene l'overflow
TMR0ON_bit=1; //Attiva TMR0
T1SYNC_bit=1; //TMR1 external clock input do not synchronization
TMR1CS_bit=1; //Sorgente di clock esterna per TMR1 dal pin T1CKI
TMR1ON_bit=1; //Attiva TMR1
PCFG3_bit=1; //Tutta PORTA come I/O digitali
PCFG2_bit=1; //Tutta PORTA come I/O digitali
PCFG1_bit=1; //Tutta PORTA come I/O digitali
PCFG0_bit=1; //Tutta PORTA come I/O digitali
LATB=0;
LATA=0;
trisb=0; //PORTB tutta come output
trisa=0; //PORTA tutta come output
TMR0L=0x2A; //Inizializza TIMER 0 reimposto il valore preindicato per stabilire i 100 mS all'interrupt(Fosc=12 MHz)
TMR0H=0xFC;
TMR1L=0; //Azzera TIMER 1 per conteggio asincrono segnale esterno (onda quadra)
TMR1H=0;
IPEN_bit=0; //Disabilita la priorità degli interrupts
GIE_bit=1; //Abilita GIE (General Interrupt Enable)
PEIE_bit=1; //Abilita PEIE (Peripheral Interrupt Enable)
while(1) //Ciclo infinito
{
// Prova per verifca del funzionamento
rpm = 6;
// fine prova
switch (rpm)
{
case 0: //Caso di motore fermo
LATB = 0;
LATA = 0;
break;
case 1: //Caso mille giri al minuto
LATB = 0x80;
LATA = 0;
break;
case 2: //Caso 2 mila giri al minuto
LATB = 0xC0;
LATA = 0;
break;
case 3: //Caso 3 mila giri al minuto
LATB = 0xE0;
LATA = 0;
break;
case 4: //Caso 4 mila giri al minuto
LATB = 0xF0;
LATA = 0;
break;
case 5: //Caso 5 mila giri al minuto
LATB = 0xF8;
LATA = 0;
break;
case 6: //Caso 6 mila giri al minuto
LATB = 0xFC;
LATA = 0;
break;
case 7: //Caso 7 mila giri al minuto
LATB = 0xFE;
LATA = 0;
break;
case 8: //Caso 8 mila giri al minuto
LATB = 0XFF;
LATA = 0;
break;
case 9: //Caso 9 mila giri al minuto
LATB = 0xFF;
LATA = 0x01;
break;
case 10: //Caso 10 mila giri al minuto
LATB = 0xFF;
LATA = 0x03;
break;
case 11: //Caso 11 mila giri al minuto
LATB = 0xFF;
LATA = 0x07;
break;
case 12: //Caso 12 mila giri al minuto
LATB = 0xFF;
LATA = 0x0F;
break;
case 13: //Caso 13 mila giri al minuto
LATB = 0xFF;
LATA = 0x1F;
break;
case 14: //Caso 14 mila giri al minuto
LATB = 0xFF;
LATA = 0x3F;
break;
}
}
}
void interrupt (void) //Funzione ISR (Interrupt Service Routine)
{
if (pir1.TMR0IF) //Interrupt scatenato da timer0?
{
pir1.TMR0IF=0; //Azzero il bit flag interrupt scatenato da TMR0
rpm=((int)TMR1L*3)/35; //Valore TMR1 in variabile rpm (moltiplico il valore di TMR1L per 10 e per 60 per trovare gli impulsi in un minuto poi divido per 7, il valore dei poli dell'alternatore, e infine divido per mille per ricavare un numero intero che varia da 0 a 14)
TMR0L=0x2A; //Inizializza TIMER 0 reimposto il valore preindicato per stabilire i 100 mS all'interrupt(Fosc=12 MHz)
TMR0H=0xFC;
TMR1L=0; //Azzera TIMER 1 per conteggio asincrono segnale esterno (onda quadra)
TMR1H=0;
}
}
Ho provato a fare dei test... ho provato a mettere rpm=2 all'interno della gestione dell'interrupt... ma niente...
Quindi ora la mia domanda è cos'ho sbagliato nella gestione dell'interrupt?!
Grazie!
-

DeMonio83924EL
78 3 7 - Frequentatore

- Messaggi: 231
- Iscritto il: 24 ott 2009, 23:02
50 messaggi
• Pagina 3 di 5 • 1, 2, 3, 4, 5
Torna a Firmware e programmazione
Chi c’è in linea
Visitano il forum: Nessuno e 13 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)