Autor Tema: Rutinas para compartir  (Leído 82613 veces)

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

Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
Re: Rutinas para compartir
« Respuesta #30 en: 09 de Julio de 2009, 05:23:14 »
veis a que me refiero, por ej te pueden contar la teoria un millon de veces, pero llega en este caso BrunoF... y a mi casi siempre me cambia la forma de ver las cosas. ahora mismo ya estoy dandole vueltas a esa
una preguntica, BrunoF?? si no es mucha indicrecion  :mrgreen: cuanto tiempo llevas programando en ensamblador (segun lo que me respondas me tiro al pozo :D)

respecto a lo de que desaparezca la serie 16f87x creo recordar en el foro tecnico (no lo encuentro, puede ser mi imaginacion) que iban a sacar la serie mejorada, pero buscando encontre este otro de Bruno Saravia en el que habla del seminario de microchip en argentina y dice esto
Citar
... presentar brevemente las características sobresalientes de la Arquitectura PIC Linea Media Mejorada, integrada por los PIC16F1XXX y PIC12F1XXXX que se caracterizan por ampliar la capacidad de los PIC Linea Media y el Set de Instrucciones, luego haré un informe especial sobre los mismos...
habria que plantearse probarlos, la puñeta es en mi caso la de siempre, la informacion, no me entero con el ingles, asi que ya saben a ver cuando empiezan a sacar los datas traducidos estos de uC. que somos muchos los que estamos varados  :8} :8}

un saludo

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: Rutinas para compartir
« Respuesta #31 en: 09 de Julio de 2009, 07:19:31 »
Si Aalogic_on Bruno siempre nos da sorpresas agradables, no te desesperes si no llegas aser tan bueno como el, da la impresion de que hay una escuela Argentina de programadores en asembler no? muy buena ademas.
Acabo de mirar las novedades de Microchip:


                       precio      osc_interno      memoria     pines I/O

16f877            $4.26          NO                   8K             33
16F876           $3.90          NO                    8K             2

16F886            $1.49        8Mz                     8k            25
16f887            $1.78         8Mz                     8k           36

16f1934            $1.47       32Mz                    4k             36
16f1936           $1.30       32                        8K             25
16F1937           $1.54       32                        8K            36

De momento son los tres que hay en produccion, la serie incluira uno de 64 pines y 54 I/O con 16Kwords, la llevan promtiendo desde finales del año pasado, les debe estar dando algun problemilla.
Hay que reconocer que la 16f88x es mejor que la 87x pero me pasa como a ti Alogic_on, el tener que aprenderlo en ingles me jode mucho.

tapi8

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Rutinas para compartir
« Respuesta #32 en: 09 de Julio de 2009, 16:30:15 »
veis a que me refiero, por ej te pueden contar la teoria un millon de veces, pero llega en este caso BrunoF... y a mi casi siempre me cambia la forma de ver las cosas. ahora mismo ya estoy dandole vueltas a esa
una preguntica, BrunoF?? si no es mucha indicrecion  :mrgreen: cuanto tiempo llevas programando en ensamblador (segun lo que me respondas me tiro al pozo :D)

No hay problema en preguntar eso. No debes tirarte a ningún pozo. La primera vez que intenté programar una bendita línea en asm fue en Marzo de 2003. Para ese entonces ya había aprendido Pascal y algo de Java en la Universidad. También programaba en Basic y VB, pero los aprendí por mi cuenta a temprana edad.

Estaban dando un curso de uC PIC en la Universidad de Ingeniería y me anoté. Fuí a las clases pero creo que no lo tomé mucho en serio. "No di pie con bola", es decir, no logré entender nada. Ahora me doy cuenta que el error no era solo mío sino de los profesores también que intentaban explicar todo en poco tiempo(1 clase de 2 horas por semana, durante 16 semanas) y de manera errónea(porque todavía andan dando vueltas sus apuntes y al mirarlos son desastrosos).
Abandoné el curso casi cuando estaba por terminar porque ya no podía seguir las clases y no tenía sentido seguir haciendolo...

Comence a revolver cielo y tierra para conseguir un libro que pudiese ayudarme a programar uCs PIC en asm. No sería fácil tarea pero me conseguí uno prestado(que jamás habían leído) y empece a leer. Otra vez era chino básico.Venía medianamente legible el texto hasta que te topabas con el código asm: te mostraban las instrucciones para cómo hacer para saber si A=B, A<B o A>B, indicandote que revisaras los flags Z y C pero no te decía en ningún momento por qué había que revisar esos flags. Claro! yo como loco porque parecía que el uC más que lindo era mágico. Las cosas sucedían milagrosamente sin saber el ¿por qué? de las mísmas.

Construí el programador NOPPP. Me bajé el MPLAB e intenté grabar uno de los programitas que había aprendido en el curso. Frustrante. Lograba ensamblarlo(copiando fielmente de mis apuntes, sin lograr modificar nada...) pero no lograba grabarlos con el NOPPP. Sólo logré quemar 2 16F84...costaban más de 15 dólares cada uno, y yo no tenía una moneda...fué frustrante y abandoné todo.

En el 2004, mi papá comienza con un microemprendimiento en el cual necesitaba una alarma perimetral. Vuelvo a la carga para intentar ayudarlo. Esta vez busco a ver si exíste algo ya hecho. Revolviendo la web encuentro una alarma hecha por Peter Jakab. Comienzo a intentar modificarla. Esta vez, no recurro a ningún libro. Bajo el datasheet del 16F84 y lo leo hasta el hartazgo. Intento aprender todas las instrucciones disponibles del uC. No logro obviamente asociarlas o combinarlas para lograr algoritmos complejos, pero de a poco comienzo a entender "algo". Pregunto a Peter(a quien le he agradecido y le sigo agradeciendo) ciertas dudas que me surgen. En menos de 2 meses de haber retomado, estaba modificando y creando mi propio código. Modifiqué su diseño de alarma para que le sirviera a mi papá y la publiqué en mi difunta página web(http://ar.geocities.com/brunodini/Alarma.htm).

A partir de allí todo se tornó mucho más fácil. Comencé a estudiar a fondo cada registro del uC. Comencé a desarrollar algoritmos que realizacen funciones complejas en pocas líneas de código. Me enamoré perdidamente del potencial de las instrucciones IOR,XOR,AND yCOMF. En los años 2004,2005 y 2006 programé mucho en asm. Desde el 2007 hasta el momento, programo poco y nada uC PICs. Un pequeño porcentaje de ese poco es en asm y el resto es en CCS. El 90% del código asm que he programado desde el 2007 ha sido en respuesta, o como aporte, a este foro.

Ultimamente no programo en asm para proyectos personales porque se pierde demasiado tiempo cuando se quieren utilizar módulos avanzados del uC o se migra a familias más avanzadas, lo que no quiere decir que mi gran amor haya sido, es y será por siempre el lenguaje ensamblador...

Si Aalogic_on Bruno siempre nos da sorpresas agradables, no te desesperes si no llegas aser tan bueno como el, da la impresion de que hay una escuela Argentina de programadores en asembler no? muy buena ademas.

Por supuesto que cualquiera puede ser tan "bueno... :roll:" o mejor que yo. .No te desanimes. Me hubiese venido bien esa escuelita! ja ja ja! Realmente desconozco de escuela alguna!

Un saludo.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Rutinas para compartir
« Respuesta #33 en: 09 de Julio de 2009, 16:35:31 »
  :shock: :rolleyes: Que el hilo no pierda su tema principal. Leer las reglas del Foro  :mrgreen:
No contesto mensajes privados, las consultas en el foro

Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
Re: Rutinas para compartir
« Respuesta #34 en: 10 de Julio de 2009, 03:13:13 »
Por supuesto que cualquiera puede ser tan "bueno... :roll:" o mejor que yo. .No te desanimes.
Si Aalogic_on Bruno siempre nos da sorpresas agradables, no te desesperes si no llegas aser tan bueno como el
jej que es coña, soy mucho mas cabezota y para desanimarme vais a necesitar algo mas  :D n veas si me queda por seguiros dando el peñaso por aqui con mis electrotrastornos  :D :D
  :shock: :rolleyes: Que el hilo no pierda su tema principal. Leer las reglas del Foro  :mrgreen:
traaaaaanki  :D :D que no lo pierde
 tenemos rutinas para matematicas X : + -...., tambien IIC, ADC,eeprom.... que nos falta para cubrir rutinas para compartir, así a ojo de buen cubero.... usart,  modulo comparador de las tres formas, escribir leer en la flash y perifericos que podriamos ir añadiendo un larguisimo etc luego subo alguna para no perder el hilo Suky  :D

un saludo

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Rutinas para compartir
« Respuesta #35 en: 10 de Julio de 2009, 09:36:36 »
 :shock: :rolleyes: Que el hilo no pierda su tema principal. Leer las reglas del Foro  :mrgreen:
traaaaaanki  :D :D que no lo pierde
 tenemos rutinas para matematicas X : + -...., tambien IIC, ADC,eeprom.... que nos falta para cubrir rutinas para compartir, así a ojo de buen cubero.... usart,  modulo comparador de las tres formas, escribir leer en la flash y perifericos que podriamos ir añadiendo un larguisimo etc luego subo alguna para no perder el hilo Suky  :D

un saludo
Mejor que así sea!   :?
:D  :D  :D
No contesto mensajes privados, las consultas en el foro

Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
Re: Rutinas para compartir
« Respuesta #36 en: 30 de Agosto de 2009, 16:07:53 »
bueno no es que sea mucho, pero se me ocurrio que porqué estar calculando el valor del registro spbrg, para configurar la usart. si el mplab lo hace por nosotros  :mrgreen:
para calcular el Baud rate tenemos la famosa formula
;  Baud Rate=Fosc/(16(X+1)) para (Higth Speed) en modo Asincrono
;  Baud Rate=Fosc/(64(X+1)) para (Low Speed)   en modo Asincrono


despejamos la X que se queda asi
;  X = (Baud_rate / (Fosc * 16) ) - 1
u asi
;  X = (Baud_rate / (Fosc * 64) ) - 1

con lo que ponemos en el mplab asin
Código: ASM
  1. ;AUTO_CALC SPBRG
  2. #DEFINE BAUD_RATE       .31250
  3. #DEFINE Fosc            .20000000
  4. #DEFINE H_L_SPEED       'L'     ;Ó 'H'         ;64 o 16 SEGUN SEA ALTA O BAJA VELOCIDAD
  5.  
  6.         IF      H_L_SPEED=='L'
  7.                 MOVLW (Fosc / (BAUD_RATE * .64) ) - .1
  8.         ENDIF
  9.         IF      H_L_SPEED=='H'
  10.                 MOVLW   (Fosc / (BAUD_RATE * .16) ) - .1
  11.         ENDIF
  12.         MOVWF   SPBRG
  13. ;aparte el bit BRGH
  14.         IF      H_L_SPEED=='H'
  15.                 BCF             TXSTA,BRGH              ;BAJA VELOCIDAD DE TRANSMISION
  16.         ENDIF
  17.         IF      H_L_SPEED=='L'
  18.                 BSF             TXSTA,BRGH              ;ALTA VELOCIDAD DE TRANSMISION
  19.         ENDIF
en mi caso. a 31250 bauds, Fosc 20.000.000 en modo baja velocidad da .9  :mrgreen: clavao

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: Rutinas para compartir
« Respuesta #37 en: 30 de Agosto de 2009, 19:19:28 »
¡Uy! me viene como anillo al dedo.
Es unos días retomo mi proyecto y voy a experimentar con esto.
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Re: Rutinas para compartir
« Respuesta #38 en: 14 de Septiembre de 2009, 03:02:59 »
Acabo de conceguir todas las rutinas del libro "Microcontrolador 16F84 Desarrollo de proyectos" y me gustaria saber si no es contra las reglas del foro subirlas debido a los derechos de autor.
Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Rutinas para compartir
« Respuesta #39 en: 14 de Septiembre de 2009, 12:54:07 »
El libro tiene copyright y no se deben publicar tales contenidos en el foro.

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: Rutinas para compartir
« Respuesta #40 en: 20 de Octubre de 2009, 19:59:46 »
Comunicación USART entre dos pic en forma unidireccional (una sola dirección).
9 bit paridad par.

Tx. Ejemplo de utilización.

Código: [Seleccionar]
LIST P=16F877A
INCLUDE <P16F877A.INC>
__CONFIG _XT_OSC & _PWRTE_OFF & _WDT_OFF & _CP_OFF & _BODEN_OFF & _LVP_OFF & _WRT_OFF
;
;---------------------------------------------------------------
;VARIABLES.
;---------------------------------------------------------------
;
CBLOCK H'20'
dato_enviar
dato_enviar_temp
contador
cont_bit
ENDC
;
RESET ORG H'00'
GOTO INICIO
ORG H'04' ;VECTOR INTERRUPCIÓN
;
#INCLUDE USART_TX.INC
INICIO
;
BCF STATUS,RP0
BCF STATUS,RP1 ;BANCO 0
CLRF PORTA
CLRF PORTB
CLRF PORTC
CLRF PORTD
CLRF PORTE
BSF STATUS,RP0 ;BANCO 1
CLRF TRISA
MOVLW H'FF'
MOVWF TRISB
CLRF TRISC
CLRF TRISD
CLRF TRISE
MOVLW 0x06
MOVWF ADCON1
;
;EJEMPLO DE UTILIZACIÓN
;----------------------
;
;ENVÍA EL ESTADO DEL PORTB POR MEDIO DE LA USART.
;
BCF STATUS,RP0
CALL INI_USART
MOVFW PORTB
CALL DETERMINAR_PARIDAD
BCF contador,0 ;RETORNA CON LA FINALIZACIÓN DE LA TRANSMISIÓN
CALL TRANSMITIR
GOTO $-4
;
END

Rx Ejemplo de utilización.

Código: [Seleccionar]
LIST P=16F877A
INCLUDE <P16F877A.INC>
__CONFIG _XT_OSC & _PWRTE_OFF & _WDT_OFF & _CP_OFF & _BODEN_OFF & _LVP_OFF & _WRT_OFF
;
;---------------------------------------------------------------
;VARIABLES.
;---------------------------------------------------------------
;
CBLOCK H'20'
bit_recepcion
bit_cont
bit_cont_temp
dato_recibido
dato_recibido_temp
                        RCSTA_temp
SALVAR_W
SALVAR_STATUS
SALVAR_FSR
SALVAR_PCLATH
SALVAR_OPTION_REG
ENDC
;
RESET ORG H'00'
GOTO INICIO
ORG H'04' ;VECTOR INTERRUPCIÓN
INTERRUP
                        MOVWF SALVAR_W ;SALVA EL CONTENIDO DE W
SWAPF STATUS,W ;PASAMOS A W STATUS (ES CON SWAPF PARA NO AFECTAR EL BIT Z)
MOVWF SALVAR_STATUS ;SALVA EL CONTENIDO DE STATUS
SWAPF FSR,W ;PASAMOS A W FSR
MOVWF SALVAR_FSR ;SALVA FSR
SWAPF PCLATH,W ;PASAMOS A W PCLATH (Pagina de programa)
MOVWF SALVAR_PCLATH ;SALVA EL CONTENIDO DE PCLATH
BCF STATUS,RP1
BSF STATUS,RP0 ;BANCO 1
SWAPF OPTION_REG,W ;PASAMOS A W OPTION_REG (Bancos)
MOVWF SALVAR_OPTION_REG ;SALVA EL CONTENIDO DE OPTION_REG
BCF STATUS,RP0 ;BANCO 0
                        BTFSS PIR1,RCIF ;¿SE ACTIVÓ RECEPCIÓN USART?
GOTO        SALIR ;FALSA INTERRUPCIÓN
BCF PIR1,RCIF ;SI, REESTABLECEMOS EL BIT DE RCIF
;
#INCLUDE RX_USART_INTERRUPCION.INC
;
SALIR BSF STATUS,RP0 ;BANCO 1
SWAPF SALVAR_OPTION_REG,W ;RESTAURA EL VALOR A OPTIO_REG
MOVWF OPTION_REG
SWAPF SALVAR_PCLATH,W ;RESTAURA EL VALOR A PCLATH
MOVWF PCLATH
SWAPF SALVAR_FSR,W ;RESTAURA EL VALOR A FSR
MOVWF FSR
SWAPF SALVAR_STATUS,W ;RESTAURA EL VALOR A STATUS
MOVWF STATUS
SWAPF SALVAR_W,W ;RESTAURA EL VALOR A W
RETFIE
;
#INCLUDE RX_USART.INC

;
INICIO BCF STATUS,RP0
BCF STATUS,RP1 ;BANCO 0
CLRF PORTA
CLRF PORTB
CLRF PORTC
CLRF PORTD
CLRF PORTE
BSF STATUS,RP0 ;BANCO 1
CLRF TRISA
CLRF TRISB
CLRF TRISC
CLRF TRISD
CLRF TRISE
MOVLW 0x06 ;PORTA TODAS DIGITALES.
MOVWF ADCON1
;
;EJEMPLO DE UTILIZACIÓN.
;
;RECIBE EL ESTADO DEL PORTB DE TX POR MEDIO DE LA USART Y LO MUESTRA EN EL PORTB.
;
CALL INI_USART_RX
CALL ACTIVAR_USART
BTFSS bit_recepcion,0
GOTO $-1
BCF bit_recepcion,0
MOVFW dato_recibido
MOVWF PORTB
GOTO $-5

END
« Última modificación: 21 de Octubre de 2009, 09:30:17 por Leon Pic »
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
Re: Rutinas para compartir
« Respuesta #41 en: 21 de Octubre de 2009, 02:57:43 »
te habrás quedao agusto¡¡¡  :D :D :D


Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: Rutinas para compartir
« Respuesta #42 en: 21 de Octubre de 2009, 09:48:48 »
te habrás quedao agusto¡¡¡  :D :D :D



Sin ofender, pero no te entiendo :oops:
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
Re: Rutinas para compartir
« Respuesta #43 en: 22 de Octubre de 2009, 02:47:50 »
Citar
Sin ofender, pero no te entiendo
jej vas a tener que decir algo mas para ofender  :D :D :D era como un piropo que me salio asi en ese momento
 :D :D :D te habras quedao agusto = que tas sobrao = mu buen trabajo. :mrgreen: y un par de estas  :-/ :-/

ademas a mi me viene de perlas el tema, estoy comparando la de rX con la que utilizo yo para mi proximo juguete. quiero usar un sid6581 y tengo que usar rx si o si, veremos en que queda :mrgreen:

un saludo

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: Rutinas para compartir
« Respuesta #44 en: 22 de Octubre de 2009, 06:41:57 »
Gracias Alogic.on

De todas maneras, gracias a este foro logré hacerlo andar. ;-)
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.


 

anything