TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: pic27 en 29 de Febrero de 2004, 06:29:00
-
Hola , tal como dige anteriormente, hasta que alguien me demuestre lo contrario, el pin b.3 del 18F876 me tiene mania.
Os explico. intento simplemente poner a alto los cuatro primeros bits del puerto B y tras 300 ms todo a bajo , sencillo verdad? JE,JE,JE (léase sarcasticamente).
Pues lo dicho, B0, b1 y b2 lo hacen pero el insurrepto B3 no,¿por que?
es culpa mía, es un nuevo fenómeno paranormal, es culpa de mi lamparita?, de mi soldador, de mi mujer...
Gracias de antemano, un saludete.
#include "C:WINDOWSEscritorioLuisPruebas3210PRUEBA3.h"
#include <stdio.h>
void main() {
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_spi(FALSE);
setup_counters(RTCC_INTERNAL,RTCC_DIV_2);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
//set_tris_B(0x00);
set_tris_b(0xF0);
while (true){
output_high(PIN_B0);
output_high(PIN_B1);
output_high(PIN_B2);
output_high(PIN_B3);
delay_ms(300);
output_low(PIN_B0);
output_low(PIN_B1);
output_low(PIN_B2);
output_low(PIN_B3);
delay_ms(300);
}
}
-
¿Que has puesto en prueba3.h?
-
en el ejemplo he puesto sólo 4 bits como salida, pero la idea era ponerlos todos los B como salidas.
#include <16F876.h>
#device adc=8
#use delay(clock=8000000)
#fuses HS,PUT,BROWNOUT,NOWDT
#use rs232(baud=2400,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=9)
-
Tienes un montón de cosas que no son necesarias:
- #include <stdio.h>
- #device adc=8
#use rs232 (baud=2400,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=9)
- etc
Elimínalas y dejalo limpio.
Creo que el fallo está en los fuses.
#fuses HS,PUT,BROWNOUT,NOWDT
Si usas el ICPROG el fuse de bajo voltaje de programación se te activa y tiene que estar desactivado.
Usa esta configuración:
#fuses XT, NOPROTECT, NOPUT, NOWDT, NOBROWNOUT, NOLVP, NOCPD, NOWRT
Aún así el WRT se activa y no sé porqué, desactivalo manualmente.
Un saludo
-
Para desactivar WRT hay que poner en la línea de configuración WRT en lugar de NOWRT, que es como lógicamente debería ser. Una errata, no... quién sabe??
-
GRACIAS, ya le he dicho a Malder y Scali que no vengan (ya sabeis, los de expedirnte x)
efectivamente he insertado esta línea:
#fuses XT, NOPROTECT, NOPUT, NOWDT, NOBROWNOUT, NOLVP, NOCPD, NOWRT
pero realmente se ha solucionado al desactivar manualmente LVP en el ICProg, es decir PWR sí está activado.
Y si me lo permitiis una nueva pregunta: cómo se saca un byte por el puerto B en lugar de bit a bit?
Gracias por las respuestas, un saludo
-
Saludos
Quisiera explicar tambine un problema que tengo con el B.3
En un programa que encontré, el B.3 esta seteado para que saque una transmision serial a 9600 bps, sin embargo no lo hace. Hice una prueba con el osciloscopio en ese pìn y efectivamente sale pero con muy bajo nivel de voltaje apenas perceptible gracias al osciloscopio.
Pocher, con tu sabia experiencia que crees que pueda ser el problema.
El circuito es un logger
-
Saludos
Quisiera explicar tambine un problema que tengo con el B.3
En un programa que encontré, el B.3 esta seteado para que saque una transmision serial a 9600 bps, sin embargo no lo hace. Hice una prueba con el osciloscopio en ese pìn y efectivamente sale pero con muy bajo nivel de voltaje apenas perceptible gracias al osciloscopio.
Pocher, con tu sabia experiencia que crees que pueda ser el problema.
El circuito es un logger y todas las otras tareas que tiene programadas funcionan al pelo, lo unico que no funciona es el dumping hacia RS232.
angelmoi123
-
En el tema de comunicaciones (y en otros muchos) soy muy, muy novatillo.
Si el programa está en C, podrías colgarlo? Le pegaría un vistazo, a ver si me entero.
-
SAludos
Amigo Pocher, ayer mismo resolvi mi problema, basado en este subtema y en tu sugerencia sobre como configurar los fuses, me dispuse a buscar otra version del sofware de mi programador "EPICWIN", actualicé y baje nuev amente el software al chip con la grata sorpresa que est vez si funcionó.
Por alguna razon la version anterior no estaba haciendolo muy bien
Aprendizaje:
Despues de largas horas iterando con el circuitillo sin descubrir que pasaba, pude profundizar en otros aspectos del C de CCS asi como también conocer mejor mi humilde programador.
Creo que si hubiese funcionado a la primera no hubiese aprendido tanto.
angelmoi123