¿Qué está causando esta extraña forma de onda en descomposición en uno de mis pines MCU?

1

Ver imagen. Toma de cámara de mi osciloscopio.

Tengounproblemaextrañoconmiproyecto.EstoyusandoundsPIC33FJ128GP802DSC/MCU.Enestaaplicación,estoysincronizando-separandounaseñalCVBSutilizandounLM1881ytransmitiéndolaalaMCU(canal1).LaMCUestáconfiguradaparainterrumpirelcambiodepin.Estapartefuncionacorrectamenteycontrolaunavisualizaciónenpantallaqueescribíperfectamente.

Pero,laparteextrañaesqueencadainterrupciónestoypulsandobrevementeelpinRB12paradepuraralgo.¡Estoestácausandolaextrañaformadeondaendescomposiciónenelcanal4!Estoyesperandosolounbrevepulso,perotomacasi64microsegundos(eltiempodelalínea)decaeracero,casicomosihubierauncapacitormuygrandeenelpin(peronolohay).Además,puedeverelmismoefectoenelflancodescendente,yaquelainterrupcióntambiénseactivaeneso.¿Quépodríaestarcausandoesto?¡Metienecompletamenteperdido!

EstoyusandoestecódigoenmiISR:

TRISBbits.TRISB12=0;asm("nop");
PORTBbits.RB12 = 1;
asm("nop");
TRISBbits.TRISB12 = 1;
asm("nop");

Los nops son para garantizar que no se produzcan problemas de lectura-modificación-escritura, pero ocurre con o sin esos nops.

    
pregunta Thomas O

2 respuestas

8

¿Qué es el canal 4? ¿Es el pin RB12

Mirando tu código, estás convirtiendo el pin RB12 en una salida, configurándolo en alto y luego volviendo a establecer el pin en alta impedancia (una entrada)

¿Qué tiene cargando el pin aparte del alcance?

A mí me parece que el pin está flotando, al valor que lo dejaste en - alto, y el alcance está tirando del pin a tierra a través de su impedancia de entrada ...

intente cambiar TRISBbits.TRISB12 = 0; a PortBBits.RB12 = 0; (Dejando el pin como salida pero cambiándolo a bajo)

    
respondido por el Wonko The Sane
2

Debería usar LATx para las salidas, para evitar problemas de R-M-W.

    
respondido por el Leon Heller

Lea otras preguntas en las etiquetas