Mensajes recientes

Páginas: 1 2 3 [4] 5 6 7 8 9 10
31
Muy buenas!
Según entiendo esto es por el cambio de estandar C90 a C99 que implementaron.
La correcta definición de las funciones de interrupcion debe realizarse de la siguiente forma:
Código: [Seleccionar]
void __interrupt() my_ISR_function(void){
    // Code here
}

Ha cambiado además la forma de definir la prioridad de las interrupciones y se pueden definir distintas funciones de interrupción para distintos flags o combinaciones de estos. Cito los ejemplos de la guía de aplicación de Microchip, esto no lo he probado.
Código: [Seleccionar]
void __interrupt(irq(TMR0), high_priority) tc0Int(void){
    TMR0IF=0;
    ++tick_count;
    return;
}

void __interrupt(irq(TMR1) ,high_priority) tc1Int(void){
    TMR1IF=0;
    tick_count += 100;
    return;
}

Además hubo otros pequeños cambios, cito un comentario a modo resumen.
https://www.microforum.cc/topic/5-i-used-to-use-to-locate-variables-but-since-xc8-20-this-is-no-longer-working/?do=findComment&comment=18

Guía de usuario XC8:
http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_XC8_C_Compiler_User_Guide_for_PIC.pdf

Saludos!
32
Lenguaje C para microcontroladores PIC / Re:Ayuda con el uso de estructuras y su declaración
« Último mensaje por vra en 20 de Enero de 2020, 09:19:47 »
Dos cosas:

Estas poniendo esto en algun lugar fuera de una funcion, por lo tanto te da error. acabo de probarlo y es el mismo error que te da.
Código: C
  1. senales.banderas = 0;


Y segundo es Banderas con B mayuscula, C es case sensitive, el MPLAB te permite completarlo, al presionar el punto si no se abre enseguida (que se puede cambiar para que lo haga) podes presionar Ctrl + Barra espaciadora, y te abre las sugerencias.

Gracias, ya lo corregí quitando la asignación, alguien me dijo que no puedo hacer asignaciones de valores (de esa forma) en un .h.
33
Foro Técnico / Re:Calibrar el rtc por "smooth calibration"
« Último mensaje por juaperser1 en 20 de Enero de 2020, 08:21:28 »
A ver, el servicio técnico me ha respondido con una solución que parece ser bastante buena para mi, ya que da una resolucion de 1ppm en menos de 1 segundo y no parece necesitar ningún sistema externo.

(lo he traducido)

Calibración suave, requiere un reloj preciso de 1s en producción y durante 2x 32s se realiza la calibración, lo que parece llevar mucho tiempo.

La opción similar de cómo lograr una precisión de medición de hasta 1 ppm es implementar un contador con un reloj interno de 32 MHz más preciso.
La señal de cuarzo del pin MCO se usa como entrada para el contador y se cuentan 976.5 ciclos internos durante un período LSE.
Entonces, después de al menos 1/32 segundos (1024 períodos LSE) también se obtiene la precisión de medición de 1 ppm.
Según la medición, se puede cargar el registro de calibración adecuado.
Con el uso, cualquier margen de tiempo para la observación y verificación de la medición del proceso de calibración se puede realizar en aproximadamente <1 segundo.

Necesito ayuda para implementarlo ya que hay algunas cosas que no me quedan del todo claras, a ver:

Primero, debo justar el pin MCO como salida del reloj LSE, eso es fácil:

 

* Sin título.jpg
(15.76 kB, 492x257 - visto 19 veces)


Ahora no entiendo muy bien que debo hacer, utilizar un timer con la fuente de reloj MCO? utilizar un timer en modo captura y unir fisicamente el pin MCO??


34
Foro Técnico / Re:Calibrar el rtc por "smooth calibration"
« Último mensaje por juaperser1 en 20 de Enero de 2020, 07:24:50 »
Perdon por tardan en contestar, he tenido algunos problemas de indole personal.

Entonces, recapitulando para calibrarlo necesito una señal de 1Hz exacta, y medir la imprecisión, que podría hacerlo reconduciendo el pin de salida del RTC a otro del micro y medirlo en el propio micro, supongo que ha 64MHz de funcionamiento del reloj principal no tendré problemas para medir un herzio con precisión.

El problema es para producción y solo lo calibrare una vez, no puedo incluir un sistema que de un pulso de 1Hz, por que lo encarecería considerablemente, asi que supongo que comprará algo que me de 1Hz y a la hora de programar los calibraré.

Tambien creo que existe la posibilidad de utilizar la señal de la red de 50 o 60 Hz para que este siempre calibrado (menos cuando funcione la bateria de respaldo que entonces supongo que se quedará con la ultima calibración que tome de la red. ¿podría ser esto otra solución a estudiar viable? se podría tomar esta señal de 50Hz de la salida del transformador para asi tener ya el aislamiento de la red?

un saludo.


Por cierto para medir las frecuencias, me compro un frecuencimetro verdad? algo asi?

https://www.amazon.es/SODIAL-Contador-frecuencia-precision-Inteligente/dp/B07HHQ1Z1X/ref=sr_1_5?__mk_es_ES=%C3%85M%C3%85%C5%BD%C3%95%C3%91&crid=1DD8876PVQYZD&keywords=frecuencimetro&qid=1579517255&sprefix=freciu%2Caps%2C171&sr=8-5
35
Programadores / Re:Programación de memorias SPI
« Último mensaje por pela en 19 de Enero de 2020, 22:53:12 »
Josep90     El problema es que ese programador es para puerto serie y las computadoras ya no tienen ese puerto. El programador requerido es uno para puerto USB.
36
Almacén del Assembler / Re:Errores al Compilar Programa de Luces Secuenciales con Pic 10F200
« Último mensaje por pic_877a en 18 de Enero de 2020, 21:41:30 »


hola amigo KILLERJC, ante todo un feliz año nuevo y segundo  gracias por responder, hasta ahora le respondo razón he estado en el hospital muy seguido por estar recibiendo Quimioterapia y Radioterapia  tengo una LEUCEMIA y LINFOMA NO HODKING es un cáncer en la sangre, sobre el código este corre sin problema en el Pic 12F629, y quise probar  si en el Pic 10F200 funcionaba, pero veo que NO, tengo que realizar Muchos Cambios y seguir estudiando mas en Asm.

Gracias

Jose Luis
37
Lenguaje C para microcontroladores PIC / Re:Ayuda con timer mplab xc8
« Último mensaje por Electro_pic en 18 de Enero de 2020, 09:14:32 »
Desde ya muchas gracias, implemente el timer funciono correntamente.
38
Arduino / Re:Voltimetro Arduino para leer su propio voltaje de alimentacion.
« Último mensaje por Picuino en 17 de Enero de 2020, 12:12:30 »
Por lo que yo conozco, no es necesario habilitar el BROWNOUTDETECTOR.
Solo necesitas habilitar el ADC y luego lo puedes volver a desabilitar.

Saludos.
39
Arduino / Re:Voltimetro Arduino para leer su propio voltaje de alimentacion.
« Último mensaje por Simon21 en 17 de Enero de 2020, 09:16:35 »
Otra opción sería poder deshabilitar ese FUSE con el programa corriendo, para usarlo cuando realmente necesite medir.

40
Almacén del Assembler / Re:Errores al Compilar Programa de Luces Secuenciales con Pic 10F200
« Último mensaje por KILLERJC en 17 de Enero de 2020, 08:48:46 »
Algunos errores/warning son obvios:

Citar
Warning[219] F:\CCS\MPLABX\MPASM.X\MAIN.ASM 249 : Invalid RAM location specified.

Esto es porque el CBLOCK esta ubicado en 0x20, cuando la memoria del PIC10F200 va del 0x10 al 0x1F.

Citar
Error[113]   F:\CCS\MPLABX\MPASM.X\MAIN.ASM 65 : Symbol not previously defined (RP0)
Error[113]   F:\CCS\MPLABX\MPASM.X\MAIN.ASM 207 : Symbol not previously defined (TRISIO)
Error[113]   F:\CCS\MPLABX\MPASM.X\MAIN.ASM 210 : Symbol not previously defined (OPTION_REG)
Error[113]   F:\CCS\MPLABX\MPASM.X\MAIN.ASM 61 : Symbol not previously defined (RP0)
Error[113]   F:\CCS\MPLABX\MPASM.X\MAIN.ASM 215 : Symbol not previously defined (CMCON)
Error[113]   F:\CCS\MPLABX\MPASM.X\MAIN.ASM 217 : Symbol not previously defined (INTCON)
Error[113]   F:\CCS\MPLABX\MPASM.X\MAIN.ASM 217 : Symbol not previously defined (GIE)
Error[113]   F:\CCS\MPLABX\MPASM.X\MAIN.ASM 218 : Symbol not previously defined (INTCON)
Error[113]   F:\CCS\MPLABX\MPASM.X\MAIN.ASM 218 : Symbol not previously defined (PEIE)

Los demas tambien es un poco mas obvio...
No existe el registro TRISIO, sino existe una instruccion llamada TRIS para controlarlo. Tampoco existen todos los demas registros como le llamaste.
Concretamente tenes unicamente estos registros:

Código: [Seleccionar]
INDF             EQU  H'0000'
TMR0             EQU  H'0001'
PCL              EQU  H'0002'
STATUS           EQU  H'0003'
FSR              EQU  H'0004'
OSCCAL           EQU  H'0005'
GPIO             EQU  H'0006'

y ninguno mas. Claramente ese codigo que tenes es de otro PIC...
Esa version no posee comparador, asi que el CMCON no tiene sentido.

Citar
PAG_RAM0   MACRO
         bcf   STATUS,RP0
         ENDM

PAG_RAM1   MACRO
         bsf   STATUS,RP0
         ENDM

Tenes un solo banco, no tiene sentido este codigo, ni siqueira existen los bits.


Citar
         call    3FFh          ; Ajusta el oscilador a 4MHz
         movwf    OSCCAL          ; usando el valor que se encuentra en 3FFh

El lugar donde esta ubicado el valor es en 0xFF donde llega la memoria de ese PIC. y no es un RETLW sino un MOVLW ,
En el reset el PCL apunta directamente a 0xFF por lo tanto lo unico que tense que hacer es el MOVWF al OSCCAL

----------------------------------

Siempre que programes en ASM, si o si tenes que referenciarte al datasheet:
http://ww1.microchip.com/downloads/en/DeviceDoc/40001239F.pdf
Páginas: 1 2 3 [4] 5 6 7 8 9 10
anything