• Martes 5 de Noviembre de 2024, 20:36

Autor Tema:  Timer2 Dspic30f6014  (Leído 1883 veces)

Bixix

  • Miembro activo
  • **
  • Mensajes: 45
    • Ver Perfil
Timer2 Dspic30f6014
« en: Lunes 14 de Febrero de 2005, 17:19 »
0
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... :( )???
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

Platypus

  • Miembro activo
  • **
  • Mensajes: 63
    • Ver Perfil
Re: Timer2 Dspic30f6014
« Respuesta #1 en: Lunes 14 de Febrero de 2005, 19:22 »
0
Hola Bixix, veo que te has lanzado de cabeza ¿eh?  :lightsabre:

si no te importa pego parte del código aquí:

Citar
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.

Citar
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...

Citar
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.

Citar
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++.

Citar
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.  :)