SoloCodigo
Programación Específica => Microcontroladores => Mensaje iniciado por: Bixix en Lunes 14 de Febrero de 2005, 17:19
-
Hola otra vez FORO!! :P
esta vez la pregunta va por software... :comp:
(Siguiendo con el dsPIC y el Si3000...)
tengo un ejemplo de audio, y el proyecto incluye un archivo llamado timer2.c
en este apartado, hay dos funciones; init_timer2 y _ISR_T2Interrupt.
entiendo que el primero inicializa lor registros necesarios y que la segunda crea una interrupción cada cierto tiempo.
Mi pregunta es doble...
1 Porqué el dsPIC crea una interrupción? para qué? si solamente tiene que comunicarse con el codec... no debería de ser el codec quien produjera las interrupciones?
2 Qué sentido tienen los ticks? cómo puedo saber cada cuanto tiempo se dá la interrupción? Cuando llega ticks a 100?
qué era ^= ??(Lo sé muy básico... :( )???
-
Hola Bixix, veo que te has lanzado de cabeza ¿eh? :lightsabre:
si no te importa pego parte del código aquí:
cómo puedo saber cada cuanto tiempo se dá la interrupción?
** Generates interrupts every 10 ms.
De todos modos si no te fias o cambias la frecuencia de trabajo, con breakpoints en el simulador se puede ver fácilmente.
Cuando llega ticks a 100?
Pues si genera una interrupción cada 10 ms y la variable ticks se incrementa en 1 cada vez que se atiende la interrupción...
Qué sentido tienen los ticks?
int ticks; es una variable que se utiliza como contador de interrupciones. En este caso pretende ejecutar el:
if (ticks++ >= 100) { /* blink LED 1 slowly */
ticks = 0;
PORTDbits.RD0 ^= 1;
}
cuando la variable ticks sea mayor o igual a 100.
qué era ^= ??(Lo sé muy básico... )???
Es una XOR a nivel de bits (en este caso complementa a 1 que es equivalente a ~=). Puedes encontrar más información en cualquier manual básico de C/C++.
Porqué el dsPIC crea una interrupción?
/* blink LED 1 slowly */
Esta interrupción no es para el si3000, seguramente tendrá otra fuente por ahí.
Un saludo y suerte. :)