Webcampista.com

mucho más que un foro

PIC 18f4550 y CCS compiler

Bueno el pick no esta jodio, acabos de probar con uno virgen y tampoco anda.
 
Sorry, creo que os he liado, la i2c anda, ahora mismo solo me queda por configuara el comparador analógico, para poder dar por liquidado, el gestor, y tener algo para presentar.
 
A ver si nos centramos
Creo que aún no has contestado a la pregunta principal:

El hardware por separado ¿funciona? quiero decir, el I2C, solo él, ¿funciona? el comparador solo él ¿funciona? y así, asegurate que funcionan uno a uno y después los juntas, si no lo haces así corres el riesgo de confundir un problema hard con uno soft.

Como pones los esquemas así, sin oscilador, sin masas conectadas, no sabemos si pones condensadores de desacoplo, etc, pero si no lo haces, haz caso de Gerard. 10k para las resistencias de pull up, 100nF multicapa para los condensadores de desacoplo son un compromiso bueno.
 
Vale, se ha colado el mensaje anterior mientras escribía, entonces ¿solo falta eso? ¿el comparador?

¿has probado a comentar todo lo demás e intentarlo solo con el comparador? con el hard que toque.
 
El tema esta que cuando me funciono, vino el que que teoricamente es mi compi, al cual no veo hace una semana y me la lio, y entre el cansancio que acumule, el estres ya no me acuerdo de que configuración, y que esquemas hice.

condensadores de desacoplo no tengi ni uno, solo el que te comente que he puesto al cuentavuentas.

entonces al seguidor de tension tambien le pongo un condensador?????? de que valor??????

y al pic tambien???? de que valor????
 
A ver, entre positivo y negativo uno multicapa o cerámico de 100nF, en las patas de los pulsadores, las resistencias de 10k, y si tienes problemas con los rebotes, en paralelo con el pulsador, otro condensador de entre 10 y 100nF, cuanto menos mejor, pues lo notan los contactos del pulsador.

Un detalle, ¿lo haces con el oscilador interno? si lo haces con un cristal externo, ponle también condensadores a masa en cada pata del cristal, de 15pF los pongo yo, para 20Mhz.

Los condensadores lo más cercanos posible al chip, sobre todo el de alimentación.

En el I2C ningún condensador, o te cargas las señales.

Esto que me acuerde...
 
Ahora estoy en protoboard, y tiene poco uso, con lo que podemos decir que esta nuevecita.

ok marchando tres condensadores de 100 nF

en el seguidor de tension del comparador no pongo na mas, verdad?????


Pd. y el chat que paso?????? jejejeje
 
¿para que se usa el comparador? si se usa para detectar la tensión de arranque, no servirá de mucho, incluso molestará, pero en el detector de paso si puede ayudar.

¿por que pasas del chat? es que por aquí es un poco lento-lio. ¿no?
 
gerard, que encontré una ventana de chat por ahí suelta...

Los zener ideales polarizados al revés son un circuito abierto, pero los de verdad no, tienen mucha impedancia, pero sirven para "mandar a masa" (y dar un cero) la entrada del PIC, por eso pueden arreglar algunos problemas ocultos, aunque esto me hace pensar que con el divisor que comentas ese problema también se soluciona (por si acaso, mantendría los zener)
 
ya he vuelto, son casi la 1h jejej, el reloj sale mal.

A ver si nos aclara para que sirve el comparador analogico, tampoco se si es que hay prevision de hacer mas cosas mas adelante.....es que no lo pillo.

Los zeners polarizados por debajo de la tension zener trabajando como pull-down? bufff no me fiaria nada de nada, sobre una int de hard ? y sin ser entradas trigger? ummm, yo no usaria un pulldown de mas de 2k2 o 3k3 en una linea que va a quedar al aire con cables largos, motores de escobillas, escobllas de los coches sobre pistas radiando como locas...que miedo :)

Segun lo que se persiga , si se pudiera optoacoplar con separacion de masas seria ideal, ya nos explicará que busca, pero si no, el zener es casi obligado.

Placa protoboard? jaja haber empezado por aqui... :) si es lo que hay, que se le va a hacer.
______________________________________________
Simulador? el otro dia, un multisim me llama la atencion, es que me gritaba al pasaaaar, un decoder 7segmentos anodo comun 7447 sobre un display Catodo comun con el K a una bateria del reves !!! y funcionaba correctamente *** es decir, los tr de salida, open colector npn conduciendo del reves con el Emisor a la masa interna del 74 y la salida, Col. a tension negativa a traves de los segmentos del display---oleeeee
________________________________________________

Del chat, es que no habia entrado nunca, solo me ha aceptado a aunolose pero no he visto respuesta, se me ha hecho tarde y he cerrado.

Respecto al soft, pàso a paso, rutina a rutina, eso lo tengo tambien muy claro, incluso soy un poc exagerado en los detalles.
 
Gerard, los zener no se deben usar como pull down por lo que dices, pero el error que tenía, de darle 5V aún sin conectar, era debido a que no había pull down, al poner los zener, estos lo hacen, estamos hablando de que todavía no está el motor en marcha, no hay ruido, y así la entrada se pone a cero, de mala manera, pero lo detecta como cero, y averigua un fallo que se le había escapado, ahora que lo sabe puede poner el divisor resistivo y lo que haga falta.

Los optoacopladores, y precisamente para aplicaciones lineales, no son "llegar y besar el santo", a estas alturas de proyecto, no sé si le dará tiempo.

Los ruidos de escobillas se pueden quitar con algún condensador pequeño, no puede ser muy grande para que la interrupción se produzca cuando toca y no "un rato después".

navegante, una duda que tengo (estoy en casa y aquí no tengo el CCS) ¿se pueden usar las dos entradas como comparadores independientes? luego lo miraré, que ahora me reclaman...
 
de acuerdo, si, los optos en lineal es complicado.

He mirado en la seccion de 18F donde el comparador analogico y pone que hay DOS comparadores, sus entradas se pueden seleccionar entre RA0 hasta 5 y que las salidas normal o invertida son accesibles exteriormente.

Tambien aparece un modulo detector de alto/voltage. Permite al usuario definir un umbral y direccion de flanco para activar una INT. No se si es de aplicacion en este proyecto.

Segun el libro de CCS+proteus pag 239 !!! advierte que "hay un error de asignacion en el fichero de cabezera del 18F4520.h (solo en este?) al usar la funcion setup_comparator(), sugieren asignar directamente el valor que corresponda al byte de config CMCON, Lo apunto para verificar....
 
Que edicion tienes?????? yo en la 239 tengo el bootloader?????

El comaprador lo uso con un valor de ref interno que le asigno, sin zener los coches arrancan a 3, 22V con el zener lo estoy acabando de ajustar, pero rondan los 2,49V con lo que comparando los dos valores de la pista con este valor de ref. se si el coche esta corriendo o parado, durante el procedimento de salida controlo si el coche se sale antes de tiempo, durante la carrera controlo si hace la penalización, o si se ha salido de pista.

Entonce si el fallo esta en el archivo cabezera como lo arreglo?????, que hago??? donde has encontrodado esa info?????


Y ya puestos, no viviras muy lejos de la plaza de toros de Tarragona?????
 
Este es el esquema que mne interesa.
comparador.JPG

YA vi lo del registro cmcon, Asi pues si sustituyo la directriz setup_comparador() por:

_asm
movlw 0xa5
movwf cmcon,0
_endasm

por ejemplo????, el valor lo he puesto a voleo.

las interupciones como has visto me interesa en los dos sentidos. Como y ahora me lo miro todo bien,


Que contento empiezo ha estar..... al final, gracias a vosotros, sin duda alguna, y tendreis vuestra mencion el dia de la presentación, voy a conseguir que funcione. Muchisimas gracias. Os podeis imaginar lo agradecedido que estoy....



Bueno gerarad, que sepas que te grabo ese primer pic cuando quieras, y que las cervezas las pago yo, jejejejeje
 
Segun el libro de CCS+proteus pag 239 !!! advierte que "hay un error de asignacion en el fichero de cabezera del 18F4520.h (solo en este?) al usar la funcion setup_comparator(), sugieren asignar directamente el valor que corresponda al byte de config CMCON, Lo apunto para verificar....

Ya esta, Pag, 268 en la 2º edicion.... No se puede ir tan de culo, teniendo la solucion delante de mis narices, y tengo a dos personas perdiendo el tiempo abriendome los ojos.

Os pido disculpas.


Y el codigo es el siguiente:

#byte CMCON 0xFB4

CMCON= 0b00000110;

Supongo que cmcon esta en la misma direccion en el 18f4550 que en el 18f4520.



Por cierto advierte que en proteus no simula el comparador en el 18 y te digo que en el 16 tampoco. para hacer la prueba con el 16f627 tube que cargar la libreria del proteus 6 para que funcionara....

Lastima que el en 6 faltan un monton de pics, por ejemplo el que estoy usando.
 
Si es la misma dirección, pg 68 de data tabla 5.1

Monto programa y os cuento.
 
pues no ha habido suerte. este es el codigo que estoy usando.

#include <18F4550.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES WDT128 //Watch Dog Timer uses 1:128 Postscale
#FUSES INTRC_IO //Internal RC Osc, no CLKOUT
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOBROWNOUT //No brownout reset
#FUSES BORV20 //Brownout reset at 2.0V
#FUSES NOPUT //No Power Up Timer
#FUSES NOCPD //No EE protection
#FUSES STVREN //Stack full/underflow will cause reset
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOWRT //Program memory not write protected
#FUSES NOWRTD //Data EEPROM not write protected
#FUSES IESO //Internal External Switch Over mode enabled
#FUSES FCMEN //Fail-safe clock monitor enabled
#FUSES PBADEN //PORTB pins are configured as analog input channels on RESET
#FUSES NOWRTC //configuration not registers write protected
#FUSES NOWRTB //Boot block not write protected
#FUSES NOEBTR //Memory not protected from table reads
#FUSES NOEBTRB //Boot block not protected from table reads
#FUSES NOCPB //No Boot Block code protection
#FUSES MCLR //Master Clear pin enabled
#FUSES LPT1OSC //Timer1 configured for low-power operation
#FUSES NOXINST //Extended set extension and Indexed Addressing mode disabled (Legacy mode)
#FUSES PLL12 //Divide By 12(48MHz oscillator input)
#FUSES CPUDIV4 //System Clock by 4
#FUSES USBDIV //USB clock source comes from PLL divide by 2
#FUSES VREGEN //USB voltage regulator enabled
#FUSES ICPRT //ICPRT enabled

#use delay(clock=8000000)
#use i2c(Master,Fast,sda=PIN_B0,scl=PIN_B2)
#use fast_io (A)
#use fast_io (B)
#use fast_io (C)
#use fast_io (D)
#byte CMCON=0xFB4

#int_COMP
void COMP_isr(void)
{
if(C1OUT==1)output_high (pin_D4);
else output_low (pin_D4);
if(C2OUT==1)output_high (pin_D5);
else output_low (pin_D5);
clear_interrupt(INT_COMP);
}



void main()
{
set_tris_D (0b11000000);
set_tris_A (0b11111111);
set_tris_B (0b11111100);

setup_timer_0(RTCC_INTERNAL);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);

enable_interrupts(GLOBAL);
//enable_interrupts(INT_RB);
enable_interrupts(INT_COMP);
setup_vref(VREF_LOW|5|VREF_F5);
CMCON=0b00000110;


setup_oscillator(OSC_8MHZ|OSC_TIMER1|OSC_31250|OSC_PLL_OFF);
output_D(0);

veias algo raro, o alguna cagada mia?????
 
Señores, no pierdan mas el tiempo conmigo, enserio, no lo merezco.......

se acuerdan de este trozo de codigo:

if(C1OUT==1)output_high (pin_D4);
else output_low (pin_D4);
if(C2OUT==1)output_high (pin_D5);
else output_low (pin_D5);

Y saben que el puerto d en este pic no es correlativo, verdad??????

d0 en la 19
d1 en la 20
d2 en la 21
d3 en la 22
pero d4 no esta en la 23
ni de d5 en la 24.....


Asi podia yo esperar que se encendiaran......

os estareis partiendo el culo de mi, pero si os digo que llevo parte de la tarde cambiado cables, resistencias, leds, comprobando continuidades y na. deios que vergüenza :oops::oops::oops: y al final ha sido porque harto de que no se encieran he dicho por mis guews que se encienden,

While (1)
output_high (pin_d4);
output_high (pin_d5);

y claro al no encenderse, me he dicho, algo pasa, y he caido en mio error:banghead::banghead::banghead:

Ahora solo por gusto se van a tirar to la noche encendidos :D

Ahora ha probar el bloque completo, y montarle el programa. programar Timer O y Timer 3 y gestor listo, con un poco de suerte el martes empiezo con el box.

Pic esclavo, dependiente del gestor.
4 interupciones, 2 lcd, y bootloader, y por lo menos llevaremos unos minimos del proyecto para el concurso.
 
Tranquilo que eso nos ha pasado a todos 15 veces. Hay cosas que solo se ven despues de dejarlas por que incluso nos engaña la vista! para empezar las imagenes se ven dentro del ojo del reves :) y las celulas de la retina sensibles a la luz son los bastones, quien le puso este nombre era un cachondo, los vería blancos?

Ayer me estube peleando buscando un proteus +|- actual y al final consegui el 7.7 medicarlo etc,al final funcionó, espero que bien pero eso ya se verá.

Mas complicado fue lo del ccs, tambien lo mas actual posible, por aquello de los errores, v4.107, tambien veremos como, y vaya follon para que se tome la pildora en win7, aqui no quiero... no es un dir valido... aqui no te dejo :bounce:...al final pinta bien. He configurado proteus para que enlace con ccs...poco a poco.

:banghead: Luego he visto el enlace al proteus que ya tenias puesto por aqui :) , eso me pasa por no mirar ! pero hay que tener cuenta en taringa, o no te deja entrar en esa pagina.

Lo del plugin al mplab ya veremos, supongo que lo necesito si compilo y debugo con el C de microchip, no quiero cerrarme ninguna puerta a pesar del riesgo de pillar un catarro por la corriente de aire, y acabar no concretando en nada.

Siento no poder ayudarte con todas las configs del pic, osc, timers y toda la montaña de flags me va grande, voy mirando.
_____

Por las cervezas no será :) , y no vivo por ese lado, mas bien en el contrario, donde el nastic (cuando eras muy pequeño jaja), pero que Tarragona a pie es pequeña.

A ver si puedo verificar los detalles de tu prog, pero tengo un pc con millones de fotos familiares y he de clonar el win a otro disco mas grande, QUE MIEDO!

Voy a pedir consejo de disco nas con dlna al foro informatico jeje a ver que me dicen.
 
jejeje, pozi, eso pasa, y por si te sirve de consuelo, no será la ultima vez :D

Un fallo por adelantado, lo que en otros PIC es RC2 (¿?, la pata 14), en el 2550 es vusb, y si no pones un condensador de entre 220nF y 470nF el USB no funciona... tal vez Gerard tenga ganas de averiguar porque, yo cuando me cansé de buscar el motivo, lo puse como un acto de fe y a rodar... :dontknow: a lo mejor es que la función de ese pin está mal explicada, o que mi ingles no es lo suficientemente bueno para entenderlo :(


Al grano, tanta directiva me pone un poco nervioso... creo que quitaría todas las que no voy a gastar, por ejemplo ¿que eso de el timer1 y el low power? pero ojo, también te digo que si te funciona lo otro, no las cambies, salvo que alguna afecte al comparador, aunque sospecho que tienes algún problema hard...

Ya no sé si fue aquí o en el chat donde puse lo de la resistencia de 100k para pobrar si llegan los 12V al lugar correcto, el PIC lo pones después, junto con el zener, puedes dejar la resistencia de 100k, para fijar un poco el cero cuando no hay coche, incluso ponerla más baja (menos ruido) pero entonces calcula el divisor, que 100k es 50 veces más grande de 2k2, pero 10k solo son 5 veces. no sé si me explico.

Cuando pruebes una parte y funcione, no la desmontes, solamente comentas la parte de software correspondiente y pasas a la siguiente parte, cuando funcionen las tres por separado, juntas dos y te pegas para que funcione, es poco provable que tengas que cambiar el hard si funciona por separado. Haciendo esto te aseguras que el hard está bien y puedes pasar al soft, que es más pijotero.

¿En el CCS no se puede ver el código desensamblado? aunque intento no tocar el ensamblador, en el MMC18 tengo/tenemos detectados algunos fallos en las librerías, o fallos o que no sabemos llamarlas como esperan, entonces nos vamos al código ensamblador, vemos lo que hace, vemos si coincide con lo que esperamos que haga y si no lo hace, nos construimos nosotros una, copiando lo bueno de la otra si hace falta.
 
Segun los fuses, podemos utilizar la fuente interna u otra externa, en ese caso no hara falta el condensador. Supongo que el condensador hace falta si se usa la fuente interna de 3,3V que la dejan mal filtrada. Es la alimentacion del transceiver y tambien referencia para las R de pullup que definen el modo de trabajo de la com del Usb.

Vusb es la patilla 18 para el 4550

The PIC18FX455/X550 devices have a built-in 3.3V regulator
to provide power to the internal transceiver and
provide a source for the internal/external pull-ups. An
external 220 nF (±20%) capacitor is required for stability.

The regulator is enabled by default and can be disabled
through the VREGEN Configuration bit. When enabled,
the voltage is visible on pin VUSB. When the regulator
is disabled, a 3.3V source must be provided through
the VUSB pin for the internal transceiver. If the internal
transceiver is disabled, VUSB is not used.
 
Al ser un simple filtro por descontado que a partir de 220nF funciona bien , mucha gente usa 470nF para curarse en salud, hasta varios microFs. Yo no lo pondria, durante la desconexion nos podemos encontrar que se descargue antes la Vcc que la Vusb por exceso de capacidad, polarizando de forma inversa algun transistor interno del chip. Los problemas llegan solos....no hay que buscarlos.
 
Miraba donde esta el bit CIS, estoy con la config del COMP, es un pequeño lio.

ya lo tengo, jaja, es que escribo sobre la marcha
 
espero que tengas la referencia de tension bien configurada, vaya lio, lo mismo que los osciladores del pic, de los timers ya se ha comentado.
 
Arriba
© 2004-2024 Webcampista.com