Autor Tema: Programar PIC18F452 y 18F458  (Leído 2837 veces)

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

Desconectado ulysse

  • PIC10
  • *
  • Mensajes: 30
Programar PIC18F452 y 18F458
« en: 09 de Marzo de 2005, 19:22:00 »
Hola, en todas las aplicaciones que he realizado he usado pic16f876 o pic16f877, los cuales sé programar perfectamente con el icprog, pero necesito usar ahora un pic18F452 o el 18F458, ya que estoy teniendo problemas de memoria de codigo y estos contienen el doble que los 16, además de contar con algunas cosillas más, por lo que es interesante aprender a manejarlos.  Mi problema es que no sé programarlos con el icprog, la pantalla de configuración cambia por completo del modelo 16 al 18, es totalmente distinta y no se que colocar en cada una de las casillas de config que vienen ( que por defecto están a FFFF ), si lo dejo así me da error tanto en el 452 como en el 458.

Saludos.

Desconectado manex_1987

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1127
RE: Programar PIC18F452 y 18F458
« Respuesta #1 en: 10 de Marzo de 2005, 08:32:00 »
Es bastante embarazoso que las palabras de configuracion de los 18F esten en forma hexadecimal en ICPROG. Es muy logico que con FFFFFF no te programe, porque estas pasando de alto muchos fuses importantes.
Debes de invocar los fuses en el programa ASM (o equivalente) mismo. No tengo mucha idea de fuses en asm, por lo que no te puedo dar un ejemplo.

salu2

Desconectado ulysse

  • PIC10
  • *
  • Mensajes: 30
RE: Programar PIC18F452 y 18F458
« Respuesta #2 en: 10 de Marzo de 2005, 09:56:00 »
No entendí muy bien del todo lo que me dijiste. También decirte que yo programo en C y no en asm.

Saludos.

Desconectado manex_1987

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1127
RE: Programar PIC18F452 y 18F458
« Respuesta #3 en: 13 de Marzo de 2005, 05:55:00 »
Bien, perfecto. Yo tambien programo en CCS. Y ultimamente no hago programas mas que para el 18F458. Yo lo configuro asi:
#include <18f458.h>
#fuses HS,NOWDT
#use delay(clock=4000000)

salu2

Desconectado Protheus5

  • PIC10
  • *
  • Mensajes: 37
RE: Programar PIC18F452 y 18F458
« Respuesta #4 en: 14 de Marzo de 2005, 11:57:00 »
Hola Ulisse, haber si te puedo ayudar.

Yo estoy trabajando en un proyecto con el 18F452, y también uso el compilador CCS,para escribir codigo en C.

Ten cuidado que el 18F es un poco tiquismiquis, yo al principio tuve problemas con él debido a los FUSES y a los tiempos para el ADC, además a veces, sin razón aparente, me daba errores al cargar el fichero .coff. Pero por lo demás va como la seda.

Si te sirve de ayuda, te pongo la cabecera que uso yo: aunque el programa lo escribo directamente en la ventana del MPLAB 6.5, la cabecera la pillo usando el compilador CCS, que para mí es de lo más intiuitvo y potente que he visto.
El C18 de Microchip no me convence mucho, y segun los miembros del foro falla en algunas ocasiones.



#include <18f452.h>
#include<STDDEF.h> //puedes omitir esta header
#device adc=10
#use delay(clock=8000000)
#fuses NOWDT,HS, NOPROTECT, NOOSCSEN, NOBROWNOUT, NOPUT,  NOLVP, NOWRT, NOWRTD, NOWRTB, NOWRTC, NOCPD, NOCPB, NOEBTR, NOEBTRB
#use rs232(baud=19200,xmit=PIN_C6,rcv=PIN_C7,parity=O,bits=8)

Un saludo,

Desconectado ulysse

  • PIC10
  • *
  • Mensajes: 30
RE: Programar PIC18F452 y 18F458
« Respuesta #5 en: 14 de Marzo de 2005, 14:37:00 »
He descubierto algo del porqué no me programa pero no lo entiendo del todo.
Me explico: yo intentaba cargar el hex de un programa grande y me daba error en el icprog, probé a hacer un programa de ejemplo, que encendiera y apagara un led, y este si me lo cargaba y funcionaba perfectamente, por lo que el problema no es la configuración de los fuses.
Uso el compilador de hi-tech. Compilo el programa grande, que está probado en un 877 y funciona, y el compilador me da los siguientes datos :

Memory Usage Map:

Program ROM   $000000 - $000003  $000004 (       4) bytes
Program ROM   $000006 - $0005F9  $0005F4 (    1524) bytes
Program ROM   $00086A - $00338B  $002B22 (   11042) bytes
                                                          $00311A (   12570) bytes total Program ROM

RAM data      $0000F8 - $0000FF  $000008 (       8) bytes
RAM data      $0005FB - $0005FF  $000005 (       5) bytes
                                                     $00000D (      13) bytes total RAM data    

Near RAM      $000000 - $00003C  $00003D (      61) bytes total Near RAM    
Near bits       $0001E8 - $0001E9  $000002 (       2) bits  total Near bits
 
ROM data      $000004 - $000005  $000002 (       2) bytes
ROM data      $000600 - $000868  $000269 (     617) bytes
                                                       $00026B (     619) bytes total ROM data
     

Config Data   $300000 - $30000D  $00000E (      14) bytes total Config Data


Program statistics:

Total ROM used    13189 bytes (40.2%)
Total RAM used       75 bytes (4.9%)   Near RAM used       62 bytes (48.4%)




Creo que la "ROM data" es la que me está dando problemas, cojo parte del código, lo elimino haciendo que esta disminuya hasta 450 bytes aprox., y el programa me carga bien el archivo .hex en el pic, por lo que el problema está aquí, si esta memoria aumenta no me carga el archivo.  En el pic 877 creo que Rom data  no salía , y no se que es lo que usa esta memoria.

Saludos.