Autor Tema: de Freescale 8bits a PIC32...  (Leído 31079 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: de Freescale 8bits a PIC32...
« Respuesta #60 en: 07 de Mayo de 2013, 12:03:17 »
Hola Gustavo, te resumo un poco. Diferentes arquitecturas poseen diferentes estrategias con respecto a las interrupciones. Vos sabes bien que en los FreeScale cuando una interrupcion es disparada, el micro automaticamente guarda en el stack todos todos los registros, en el caso del S08 por una cuestión de compatibilida para atras, el único que no se guarda es el HX. Al contrario la linea 8051 únicamente guardaba el contador de programa y el registro de estado. Si vos ibas a usar otro registo dentro del handler es tu responsabilidad pushearlo y popearlo. Probablemente en el caso MicroChip se este último. Después se puede discutir que es mejor o que es peor, algo similar pasa con el tema del endian. Normalmente cuando trabajas en un compilador C, este define la estrategia a utilizar, algunos son bastante inteligentes y pueden detectar que cuando se usan funciones dentro del handler automáticamente pushean y popean todo. Con respecto a lo comentas del timer no es que haya otra CPU, sino que justamente todos los registros son preservados y restaurados a la salida del handler, esto es para que no provoque discrepancias en el programa principal.

Saludos !
« Última modificación: 07 de Mayo de 2013, 12:23:32 por RICHI777 »

Desconectado dongustavo

  • PIC10
  • *
  • Mensajes: 22
Re: de Freescale 8bits a PIC32...
« Respuesta #61 en: 07 de Mayo de 2013, 12:20:52 »
Hola Gustavo, te resumo un poco. Diferentes arquitecturas poseen diferentes estrategias con respecto a las interrupciones. Vos sabes bien que en los FreeScale cuando una interrupcion es disparada, el micro automaticamente guarda en el stack todos todos los registros, en el caso del S08 por una cuestión de compatibilida para atras, el único que no se guarda es el HX. Al contrario la linea 8051 únicamente guardaba el contador de programa y el registro de estado. Si vos ibas a usar otro registo dentro del handler es tu responsabilidad pushearlo y popearlo. Probablemente en el caso MicroChip se este último. Después se puede discutir que es mejor o que es peor, algo similar pasa con el tema del endian. Normalmente cuando trabajas en un compilador C, este define la estrategia a utilizar, algunos son bastante inteligentes y pueden detectar que cuando se usan funciones dentro del handler automáticamente pushean y popean todo. Con respecto a lo comentas del timer no es que haya otra CPU, sino que justamente todos los registros son preservados y restaurados a la salida del handler, esto es para que provoque discrepancias en el programa principal.

Saludos !

Me hiciste acordar de un cartel tamaño A4 que tenía pegado al lado de la PC "en INT guardar HX"... Sí guarda el X, no el H.
Sabés que se me pasó ese detalle...xD... a revisar todo jajaja. Me quiero matarrrrrr...

saludos!

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: de Freescale 8bits a PIC32...
« Respuesta #62 en: 07 de Mayo de 2013, 12:25:20 »
Igual fijate si no existe alguna palabra reservada del compilador que lo haga por vos, normalmente la palabra interrupt, __interrupt o algo parecido hacen eso, como no es algo que el ANSI C soporte cada compilador le da el uso que quiere.

Saludos !

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: de Freescale 8bits a PIC32...
« Respuesta #63 en: 07 de Mayo de 2013, 19:50:03 »
Yo desde que probe un dspic no quiero otra cosa, son bastante mas sencillos de manejar, las interrupciones van por vectores, se puede hacer un guardado rapido usando los registros shadow... Desde que los llevo usando me han parecido mas complicados los pic12...pic18 que los dspic.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: de Freescale 8bits a PIC32...
« Respuesta #64 en: 07 de Mayo de 2013, 20:48:44 »
Yo desde que probe un dspic no quiero otra cosa, son bastante mas sencillos de manejar, las interrupciones van por vectores, se puede hacer un guardado rapido usando los registros shadow... Desde que los llevo usando me han parecido mas complicados los pic12...pic18 que los dspic.

Al igual que los PIC24, tienen características similares, salvo claro el DSP.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: de Freescale 8bits a PIC32...
« Respuesta #65 en: 07 de Mayo de 2013, 21:17:48 »
Yo desde que probe un dspic no quiero otra cosa, son bastante mas sencillos de manejar, las interrupciones van por vectores, se puede hacer un guardado rapido usando los registros shadow... Desde que los llevo usando me han parecido mas complicados los pic12...pic18 que los dspic.

Al igual que los PIC24, tienen características similares, salvo claro el DSP.


Saludos!

Dejemoslo en la familia de 16bits  ;-)

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: de Freescale 8bits a PIC32...
« Respuesta #66 en: 08 de Mayo de 2013, 11:12:37 »
Hola MerLinz,

Citar
Yo desde que probe un dspic no quiero otra cosa, son bastante mas sencillos de manejar, las interrupciones van por vectores, se puede hacer un guardado rapido usando los registros shadow... Desde que los llevo usando me han parecido mas complicados los pic12...pic18 que los dspic.

Lo de los registros shadow es algo similar a registros alternativos ? Te comento esot porque algunas arquitecturas tienen esta caracteristica, los registros del micro estan replicados en una serie de bancos 1,2,4, etc. Cuando ingresas en una interrupcion lo único que haces switchear el banco, de esta manera te ahorras todo el proceso de pusheo y popeo.

Saludos !

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: de Freescale 8bits a PIC32...
« Respuesta #67 en: 08 de Mayo de 2013, 16:07:50 »
Hola MerLinz,

Citar
Yo desde que probe un dspic no quiero otra cosa, son bastante mas sencillos de manejar, las interrupciones van por vectores, se puede hacer un guardado rapido usando los registros shadow... Desde que los llevo usando me han parecido mas complicados los pic12...pic18 que los dspic.

Lo de los registros shadow es algo similar a registros alternativos ? Te comento esot porque algunas arquitecturas tienen esta caracteristica, los registros del micro estan replicados en una serie de bancos 1,2,4, etc. Cuando ingresas en una interrupcion lo único que haces switchear el banco, de esta manera te ahorras todo el proceso de pusheo y popeo.

Saludos !

Los dspic no usan "bancos" :D
El registro es asi de simple: push.s y pop.s y lo que haces es guardar los principales registros W0->W3 y STATUS (ahora mismo no caigo en cuenta si se guarda algo mas), es decir, con una simple instruccion guardas los principales registros y con otra instruccion los restauras. La ventaja es esa, poco lag en la interrupcion, creo que variaba unos 7Tcy o algo asi cuando estuve trasteando con el simulador.

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: de Freescale 8bits a PIC32...
« Respuesta #68 en: 08 de Mayo de 2013, 16:10:19 »
Oka, gracias por la respuesta !

Saludos !

Desconectado dongustavo

  • PIC10
  • *
  • Mensajes: 22
Re: de Freescale 8bits a PIC32...
« Respuesta #69 en: 25 de Julio de 2013, 17:16:10 »
Hola, como están?

Bueno pude hacer algo con el PIC:

-Parpadear un LED con varios timers
-Leer teclado
-controlar un display NOKIA5110 (SPI)

Uso el micro a 24MHz, con un cristal de 4MHz

Ahora bien, lo que no me entra en la cabeza es que no pueda hacer un timer de 1mS+- un ciclo....  No más o menos 1mS, sino 1mS a secas.

Usé el time de 8 bits con pre y post scaler y con ese registro de comparacion y siempre le falta o le sobra algo... ya desde la tabla de excel.

Tengo que hacer un cronómetro que cuente milisegundos y que el error en 2 minutos no supere el milisegundo.





Saludos, Gustavo.




Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: de Freescale 8bits a PIC32...
« Respuesta #70 en: 25 de Julio de 2013, 18:09:26 »
porque no usas un timer de 16bits y lo pones a 24000? Es justo 1ms aun asi siempre hay unos Tcy de lag hasta que llega a la interrupcion y tambien hasta que llega a la funcion, es algo que lo debes calcular y tener en cuenta

Desconectado dongustavo

  • PIC10
  • *
  • Mensajes: 22
Re: de Freescale 8bits a PIC32...
« Respuesta #71 en: 26 de Julio de 2013, 12:01:14 »
OK, gracias...

hice eso, o algo parecido, porque lo que hay que cargar es 0xFFFF-el valor, ya que el contador es incremental.

if (PIR1bits.TMR1IF)
    {                                   //check for TMR1 overflow
      PIR1bits.TMR1IF = 0;            //clear interrupt flag
      WriteTimer1(value);
      LATEbits.LATE0 = !LATEbits.LATE0; //toggle PIN
    }


Como debug, el valor lo modifico en el main.
WriteTimer1 sale de timers.h

De todas maneras, esto es un timer como los de Motorola U3 o R3 del año 1985... un mamarracho (opinión totalmente subjetiva, por supuesto...).
Por supuesto siempre hay una solución.
-----------------------------------------------------------------------------------------------

Otra consulta con respecto al IDE:

Estoy usando el MPLAB X IDE, el compilador es el C18.
Hay alguna manera de ver variables o registros (por ej. el TMR1) sin tener que pausar la ejecución? Osea que se refresque el valor por ejemplo cada 100mS o cuando varía...

Pongo watchs pero se refrescan sólo pauso, lo mismo con los registros.

Saludos, Gustavo.











Desconectado dongustavo

  • PIC10
  • *
  • Mensajes: 22
Re: de Freescale 8bits a PIC32...
« Respuesta #72 en: 26 de Julio de 2013, 12:25:54 »
OK, gracias...

hice eso, o algo parecido, porque lo que hay que cargar es 0xFFFF-el valor, ya que el contador es incremental.

if (PIR1bits.TMR1IF)
    {                                   //check for TMR1 overflow
      PIR1bits.TMR1IF = 0;            //clear interrupt flag
      WriteTimer1(value);
      LATEbits.LATE0 = !LATEbits.LATE0; //toggle PIN
    }


Como debug, el valor lo modifico en el main.
WriteTimer1 sale de timers.h

De todas maneras, esto es un timer como los de Motorola U3 o R3 del año 1985... un mamarracho (opinión totalmente subjetiva, por supuesto...).
Por supuesto siempre hay una solución.
-----------------------------------------------------------------------------------------------

Otra consulta con respecto al IDE:

Estoy usando el MPLAB X IDE, el compilador es el C18.
Hay alguna manera de ver variables o registros (por ej. el TMR1) sin tener que pausar la ejecución? Osea que se refresque el valor por ejemplo cada 100mS o cuando varía...

Pongo watchs pero se refrescan sólo pauso, lo mismo con los registros.

Saludos, Gustavo.





Perdón la segunda pregunta ya la había planteado... con el PICKIT 3 no se puede...

Saludos!

Desconectado dongustavo

  • PIC10
  • *
  • Mensajes: 22
Re: de Freescale 8bits a PIC32...
« Respuesta #73 en: 13 de Agosto de 2013, 16:42:36 »
Hola,

bueno actualizo cómo me fue con el PIC18f46j50:

Hice en cronómetro con un display NOKIA 5110 (SPI), 4 botones, todo montado de la peor manera con respecto a la EMI...

Puse en crototipo al lado de mi simulador de chispa de bujías (con bobina de competición 95000V@22000RPM!)

Como soy jodido, enrrosqué el PIC con el cable de HV jejeje Y NO SE COLGÓ. El display si se fue a la mierda, pero el PIC siguió corriendo.

Saludos, Gustavo.

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: de Freescale 8bits a PIC32...
« Respuesta #74 en: 14 de Agosto de 2013, 14:03:49 »
jajajajaa !!!! Te felicito !!! Igual ya te dije que sos un kamikaze !!!!

Saludos !


 

anything