MSP430 tiempo de instrucción

4

Tengo un MSP430G2231. Mi objetivo final es comunicarme con un dispositivo que desea 1 bit de datos cada microsegundo. Creo que esto es demasiado rápido para los temporizadores, lo que significa que debo escribir a mano el código de ensamblaje que usa la cantidad correcta de ciclos para la temporización.

ti.com dice que la frecuencia de la CPU es de 16MHz. El manual dice que "llamada" lleva 5 ciclos. ¿Significa esto que toma 5 / 16000000segundos?

Para verificar esto, traté de hacer un programa simple que se supone que debe encender el LED cada segundo al contar desde 65536 61 veces. Esto debería usar ~ 65536 * 61 * 4 ciclos (alrededor de 16 000 000). Suponiendo que el párrafo anterior sea correcto, eso debería tomar 1 segundo, pero toma 12-13 segundos.

hello:
    mov.w #62, r15
    clr.w r14
hello_next:
    dec.w r14      ; 1 cycle
    subc.w #0, r15 ; 1 cycle
    jnz hello_next ; 2 cycle

    xor.b #LED1PIN, &P1OUT
    jmp hello
    
pregunta wildnu

1 respuesta

1

El Manual de referencia familiar tiene información de tiempo para varias instrucciones que comienzan en la página 63. El número La cantidad de ciclos no se fija para una determinada instrucción, parece depender del modo utilizado. Aquí está una de las tablas del manual, puede ver que la mayoría de las instrucciones toman más de 1 ciclo:

No he usado un MSP4340, pero me imagino que debería haber una herramienta disponible en el IDE para cronometrar su código y decirle cuántos ciclos toma ejecutar. Trataré de encontrar / usar esto primero; si no puede, use la información en el manual y realice el cálculo manualmente.

Si nos da más información sobre el dispositivo que necesita los datos (número de pieza, formato, etc.), entonces podremos sugerir alternativas (por ejemplo, ¿un periférico SPI?). Suena como una tarea difícil para alcanzar esta velocidad con este método, y no es particularmente eficiente si un periférico / PLD puede hacerlo por usted.
Con el precio / la capacidad de los uC en la actualidad, la necesidad de recurrir a este tipo de cosas suele ser una señal para mí de que debo considerar cambiarme a un uC más capaz (a menos que las cantidades sean tales que supongan una diferencia suficiente)

    
respondido por el Oli Glaser

Lea otras preguntas en las etiquetas