Buongiorno a tutti.
Ho messo insieme alcune righe di codice che impostano un interrupt sull'overflow del timer generandomi una chiamata allo stesso vettore ogni secondo (ma questo tanto è ininfluente)
All'interno di questo interrupt vado ad effettuare una chiamata ad una void con parametri, tramite un puntatore alla stessa, contenuto in una struttura.
All'interno della stessa struttura è contenuto anche un puntatore uint8_t che contiene il valore delll'area di memoria dove sono presenti dei dati che voglio passare alla funzione menzionata sopra.
il codice 'looks like above':
//struttura dati task
struct TaskData
{
void (*functionPointer)(uint8_t *);
uint8_t * parameterPointer;
};
// questo è il vettore dell'interrupt
ISR(TIMER1_COMPA_vect)
{
seconds++;
if (seconds == UPDATE_INTERVALL )
{
if(task_data.functionPointer !=NULL)
{
task_data.functionPointer(task_data.parameterPointer);
}
}
}
Il codice in oggetto riesce tranquillamente ad effettuare la chiamata alla funzione , ma il parametro non viene passato.
Ho provato anche a sostituire
task_data.functionPointer(task_data.parameterPointer);
con
uint8_t params[2] = {1,0};
task_data.functionPointer(params);
Nel secondo caso i parametri vengono passati correttamente.
Avete qualche idea?
Grazie.