Translate, Traductor

Mostrando entradas con la etiqueta memoria. Mostrar todas las entradas
Mostrando entradas con la etiqueta memoria. Mostrar todas las entradas

jueves, 7 de junio de 2012

Plantilla PIC 12F675

Plantilla para el microcontrolador 12F675
Un microcontrolador de 8 pines, 6 de ellos disponibles para entrada y salida, 1024 palabras de 14 bit's cada una, frecuencia máxima del oscilador igual a 20 MHz, oscilador interno de 4 MHz, característica interesante ya que no necesitaremos cristal, lo que nos ahorra dos pines, 128 Bytes de EEPROM, 64 Bytes de RAM.


Importante:

Estamos acostumbrados a que los puertos de los PIC's son llamados PORTx, en los micros de 8 pines son llamados GPIO y los pines GP0, GP1, GP2, GP3, GP4 y GP5



Plantilla



LIST P=12F675
INCLUDE P12F675.INC

ERRORLEVEL -302

; Trabajamos con un oscilador interno a 4Mhz

__CONFIG _CPD_OFF & _CP_OFF & _BODEN_ON & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT


CBLOCK 0X20

ENDC



ORG 00

GOTO CONFIGURA



CONFIGURA  NOP
CLRF GPIO
MOVLW B'00000111' ; 07H Configuro GP1, GP2, GP3 como pines, no uso el comparador
MOVWF CMCON ; digitales
BANKSEL OSCCAL
CALL 3FFH ; Obtengo el valor de calibracion del oscilador
MOVWF OSCCAL
CLRF TRISIO
BANKSEL GPIO


INICIO


GOTO INICIO

END



; *    
; *      Copyright 2012 EDWTRON
; *    
; *      Este rpograma es software libre; usted puede redistribuirlo y/o modificarlo
; *      bajo los terminos de la GNU licencia publica general tal y como es publicada
; *      por la fundacion de software libre; bajo la version 2 de la licencia, o
; *      una version superior.
; *      Leer la licencia GNU gpl para mas detalles.

; *      This program is free software; you can redistribute it and/or modify
; *      it under the terms of the GNU General Public License as published by
; *      the Free Software Foundation; either version 2 of the License, or
; *      (at your option) any later version.
; *    
; *      This program is distributed in the hope that it will be useful,
; *      but WITHOUT ANY WARRANTY; without even the implied warranty of
; *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
; *      GNU General Public License for more details.
; *    
; *      You should have received a copy of the GNU General Public License
; *      along with this program; if not, write to the Free Software
; *      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
; *      MA 02110-1301, USA.
; *


Copyright 2012  edwtron
       
Este DOCUMENTO es un DOCUMENTO LIBRE, usted puede redistribuirlo y/o modificarlo bajo los terminos de la GNU FDL tal y como es publicada por la fundacion de software libre; bajo la version 1.3 de la licencia, o  una version superior.
     Leer la licencia GNU gpl para mas detalles. 

    Permission is granted to copy, distribute and/or modify this document
    under the terms of the GNU Free Documentation License, Version 1.3
    or any later version published by the Free Software Foundation;
    with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
    A copy of the license is included in the section entitled "GNU
    Free Documentation License".

viernes, 13 de agosto de 2010

Fusibles de configuracion "Bit's de configuracion" de los PIC's

Los bit's de configuracion o mas comunmente llamados "fusibles" permiten confugurar ciertas funciones en los microcontroladores PIC, como el tipo de cristal para el oscilador, permiten proteger el codigo en el micro, entre muchas funciones. La cantidad de funciones que se pueden configurar con los fusibles dependen del microcontrolador, si tenemos en el 16F84A  4 funciones, en el 16F88 son alrededor de 13 funciones.

Bueno y para que sirven?
Como lo dije antes son para configurar algunas funciones del micro, como el tipo de oscilador, la proteccion de codigo, habilitar el perro guardian ( por que si no este los muerde), habilitar el reset maestro, habilitar un reset inicial, habilitar reset por bajo voltage en la fuente, y otros que como les dije depende del micro usado.

Ahhh y cuando se usan??
En el momento en que se quiere programar el micro se le deben configurar los fusibles ( esto es usando un software como el WINPIC800,  me parece necesario agradecer a los creadores de este software quienes nos permiten descargarlo y usarlo sin ningun problema, www.winpic800.com,  GRACIAS!!!!!!) y si estamos usando alguno de los programadores de MICROCHIP como el pickit2 o el pickit3 debemos escribir la configuracion de estos fusibles en la cabecera de nuestro fuente antes de compilar.

Como se que fusibles usa  mi pequeño monstruo?
Como siempre digo "pues en el manual del micro", jeje suena obvio, y los podes obtener del fichero que incluimos en la cabecera del fuente,  el  P16F88.INC por ejemplo, que se encuentra en la carpeta "MPASM suite" que esta dentro de la carpeta "microchip" donde instalamos el MPLAB, ojo que el nombre del fichero depende del micro.

De los ficheros antes mencionados obtube lo siguiente:

Para el 16F84A


_CP_ON                       EQU     H'000F'
_CP_OFF                      EQU     H'3FFF'
_PWRTE_ON                    EQU     H'3FF7'
_PWRTE_OFF                   EQU     H'3FFF'
_WDT_ON                      EQU     H'3FFF'
_WDT_OFF                     EQU     H'3FFB'
_LP_OSC                      EQU     H'3FFC'
_XT_OSC                      EQU     H'3FFD'
_HS_OSC                      EQU     H'3FFE'
_RC_OSC                      EQU     H'3FFF'

de donde se arma nuestra palabra de configuracion anteponiendo la directiva  "__CONFIG"

__CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF &  _XT_OSC

Que es lo que debemos poner en la cabecera del fuente.

Aqui va la del 16F88


_CONFIG1               EQU     H'2007'
_CONFIG2                EQU     H'2008'

;Configuration Byte 1 Options
_CP_ALL                               EQU     H'1FFF'
_CP_OFF                              EQU     H'3FFF'
_CCP1_RB0                              EQU     H'3FFF'
_CCP1_RB3                              EQU     H'2FFF'
_DEBUG_OFF                              EQU     H'3FFF'
_DEBUG_ON                               EQU     H'37FF'
_WRT_PROTECT_OFF               EQU     H'3FFF' ;No program memory write protection
_WRT_PROTECT_256               EQU     H'3DFF' ;First 256 program memory protected
_WRT_PROTECT_2048            EQU     H'3BFF' ;First 2048 program memory protected
_WRT_PROTECT_ALL             EQU     H'39FF' ;All of program memory protected
_CPD_ON                               EQU     H'3EFF'
_CPD_OFF                               EQU     H'3FFF'
_LVP_ON                              EQU     H'3FFF'
_LVP_OFF                              EQU     H'3F7F'
_BODEN_ON                               EQU     H'3FFF'
_BODEN_OFF                              EQU     H'3FBF'
_MCLR_ON                              EQU     H'3FFF'
_MCLR_OFF                              EQU     H'3FDF'
_PWRTE_OFF                              EQU     H'3FFF'
_PWRTE_ON                               EQU     H'3FF7'
_WDT_ON                              EQU     H'3FFF'
_WDT_OFF                              EQU     H'3FFB'
_EXTRC_CLKOUT                 EQU     H'3FFF'
_EXTRC_IO               EQU     H'3FFE'
_INTRC_CLKOUT               EQU     H'3FFD'
_INTRC_IO                              EQU     H'3FFC'
_EXTCLK                               EQU     H'3FEF'
_HS_OSC                              EQU     H'3FEE'
_XT_OSC                                EQU     H'3FED'
_LP_OSC                               EQU     H'3FEC'

;Configuration Byte 2 Options
_IESO_ON                               EQU     H'3FFF'
_IESO_OFF                               EQU     H'3FFD'
_FCMEN_ON                               EQU     H'3FFF'
_FCMEN_OFF                              EQU     H'3FFE'



y la palabra seria algo como esto:

__CONFIG    _CONFIG1, _CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_ON & _MCLR_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC

;Program Configuration Register 2
__CONFIG    _CONFIG2, _IESO_OFF & _FCMEN_OFF


Si necesitan de otro micro la pueden consultar el el fichero del micro como les comente antes, ahhh  bueno pues!!!!  me pueden escribir yo se las pongo aqui.