Problema con el trisb
| #1 Problema con el trisb |
| #2 TRISB |
|
AleixForo
|
Mira si lo programas con el CCS, la instruccion es SET_TRIS_B( 0x32 ); (por ejemplo)
sino prueba primero de ponerlo en hexadecimal como en el ejemplo anterior en vez de en binario y sino no funciona, no pongas nada de configuracion de entrada salida, en los pic's funciona igual de bien. |
|||||||||||
|
|
||||||||||||
| #3 |
|
Paloky
|
Hola Arex.
Supongo que una vez configurado el TRISB, pones IN1=0 y IN2=1 y biceversa para hacer girar el motor, no?. Que compilador usas: Assembler o C ? Pon el código completo a ver si vemos algo raro. Saludos. |
|||||||||||
|
|
||||||||||||
| #4 |
|
arex
|
Si efectivamente luego utilizo el IN1 y el IN2 Enable..., uso como como compilador el Mplab, el programa que he realizado es de los mas simple y lo hice con el unico objetivo de comprobar que mi placa funcionaba, es decir el programa gordo todavia no lo he hecho, por cierto si no lo configuro como salida no me funciona y no se porque pero bueno. Lo mas raro esque tengo un entrenador con leds y demas y cuando conecto pruebo el micro parece estar bien, pero en mi placa no me va. Ya he preguntado a 3 profesores y tampoco saben decirme. El programita: #include <pic1687x.h> /* declaración de registros apra el PIC16F876 */ void main (void){ OPTION=0; TRISA=0b00111111; ADCON1=0b00000111; // todas las líneas son digitales TRISB=0b11110000; //aquí creo qe esta el problema TRISC=0b11111111; INTCON=0; while(1){ if (RC1) {RB3=1; RB0=1;RB2=1;RB1=0;} else {RB3=0; RB0=1;RB2=0;RB1=1;} } } Lo mas raro es que el Rb2 que controla el IN2 del L298 no me da problemas, y para comprobar el funcionamiento de la placa he quitado el micro e introducido manualmente 5 voltios al Rb1 que ataca al IN1 y funcinaba, es decir, el hardware no puede ser. Tambien he probado varios micros por si estubiera defectuoso. salu2 y muchas gracias por todo Por cierto RC1 es un pulsador con resistencia de pull-up |
|||||||||||||
|
|
||||||||||||||
| #5 |
|
Paloky
|
Busca y utiliza el compilador CCS, y prueba este programa.
#include <16F876.h> #device adc=8 #FUSES NOWDT //No Watch Dog Timer #FUSES HS //High speed Osc (> 4mhz) #FUSES NOPUT //No Power Up Timer #FUSES NOPROTECT //Code not protected from reading #FUSES BROWNOUT //Reset when brownout detected #FUSES LVP //Low Voltage Programming on B3(PIC16) or B5(PIC18) #FUSES NOCPD //No EE protection #FUSES NOWRT //Program memory not write protected #FUSES NODEBUG //No Debug mode for ICD #use delay(clock=20000000) /* RB0 Tengo conectado el enable de un L298 (control para un motor) RB1 Tengo conectado el IN1 del L298 RB2 Tengo conectado el IN2 del L298 RB3 Tengo conectado un led */ void main() { setup_adc_ports(NO_ANALOGS); setup_adc(ADC_OFF); setup_spi(FALSE); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); setup_timer_1(T1_DISABLED); setup_timer_2(T2_DISABLED,0,1); while(1) { if (input(PIN_C1)) { output_high(PIN_B3); // Led ON output_high(PIN_B0); // Enable L298 output_high(PIN_B2); // Sentido_1 output_low(PIN_B1); } else { output_low(PIN_B3); // Led OFF output_high(PIN_B0); // Enable L298 output_low(PIN_B2); // Sentido_2 output_high(PIN_B1); } } // Fin del While(1) } // Fin del Main Te tendria que funcionar a la primera. Ya me dirás a ver. Saludos. |
|||||||||||
|
|
||||||||||||
| #6 |
|
arex
|
Paloky gracias por tu aportacion pero como me obligan a usar ese compilador, no me quedan mas narices.
Bueno como mi problema es rarisimo pues decidí hacer otra plaquita (esta ultima mucho mejor echa y comprobada), esta la he probado con el programita que os dije y me funciona, ha sique he ido creando un programa mas complejo (aunque no mucho) el caso es que inserto el micro en la placa pulso un fin de carrera el motor comienza a girar pero no para desconecto de alimentacion y veo que el micro esta muy caliente, enciendo la fuente otra vez y la fuente me indica que esta en corto y no funciona nada, despues quito el micro y ya no hay corto, asique digo bueno pues voy a poner el micro que use antes con el primer programa y nada mas ponerlo se empieza a calentar y otra vez en corto, vuelvo a quitar el micro y se quita el corto, en resumidas, me he cargado dos micros. A que puede ser debido? al principio me funcionó y no he cambiado nada, y me da miedo volver a probar y cargarme otro. |
|||||||||||
|
|
||||||||||||
| #7 Un esquemático del circuito? |
|
Ardogan
|
Como calienta tanto el micro puede ser que tu circuito le esté pidiendo más corriente de la que puede dar el microcontrolador en alguno de sus pines.
Para ver si es algo de eso tendrías que postear el circuito que usaste (una imagen jpg o gif es lo más fácil de ver), para que te puedan contestar con precisión. Saludos |
|||||||||||
|
|
||||||||||||
| #8 |
|
arex
|
Adjunto os dejo el circuito que realice con el capture, yo creo que esta bien pero si ven algo raro...
|
|||||||||||
|
|
||||||||||||
| #9 |
|
Ardogan
|
Lo primero que noté es que para inicializar los puertos de I/O recomiendan escribir un 0, y después configurar los TRIS (si bien no creo que esto para nada elimine el problema):
"It is recommended that when initializing the port, the data latch (PORT register) should be initialized ?rst, and then the data direction (TRIS register). This will elim- inate a possible pin glitch, since the PORT data latch values power up in a random state." " CLRF STATUS ; Bank0 CLRF PORTB ; Initialize PORTB by clearing output ; data latches BSF STATUS, RP0 ; Select Bank1 MOVLW 0xCF ; Value used to initialize data direction MOVWF TRISB ; PORTB<3:0> = inputs, PORTB<5:4> = outputs ; PORTB<7:6> = inputs " No ví nada raro en el esquema del circuito. Pensaba que podían llegar a ser incompatibles las entradas del L298 con las salidas del PIC, pero no según las hojas de datos. En la hoja de datos del L298/características eléctricas dice que la tensión en Vs tiene que ser al menos 2.5V mayor a Vih (nivel alto con el que se excitan las entradas lógicas), y veo que lo estás con Vss=Vs=Vcc. En fin, nada de lo anterior explica el calentamiento del PIC... Revisa si las resistencias en la placa son de los mismos valores del esquemático, quizás soldaste alguna de menor valor sin querer... Es lo único que se me ocurre para explicarlo. Saludos |
|||||||||||
|
|
||||||||||||
| #10 |
|
arex
|
He colocado un condensador de 100nF en paralelo con uno de 100uF a la entrada de alimentacion del l298 y parece que ya se ha solucinado, alomejor eran los pico de tension que hacian cosas raras, pero ahora se me plantea otra duda, esta vez con el programa
Este es mi programa: #include <pic1687x.h> /* declaración de registros para el PIC16F876 */ #define FCd RC2 #define FCi RC1 #define pul RC0 #define derecha 1 #define izquierda 0 bit ok; void main (void){ OPTION=0; ADCON1=0b00000111; PORTB=PORTC=0; /* CONVIENE PONER LOS PUERTOS A CERO */ /* FALTABA LOS TRIS */ TRISA=0b11111111; /* Todo como entradas*/ TRISB=0b11110000; TRISC=0b11111111; if (ok==derecha) {if (FCd==0){ RB0=RB1=RB2=RB3=0; if (pul==0){ ok=!ok; /*+++*/ } } else {RB0=1;RB1=1;RB2=0;RB3=1;} /*+++*/ } else if (FCi==0){ RB0=RB1=RB2=0;RB3=1; if (pul==0){ ok=!ok; /*+++*/ } } else {RB0=1;RB1=0;RB2=1;} /*+++*/ }/*de main*/ Bueno pues donde aparece esto "/*+++*/" es por que en ese punto tendria que volver al principio del programa, es decir tendria que volver a hacer todo desde el main y no se como acerlo, talvez con funciones pero no se muy bien como se hace, me podeis ayuda? muxas gracias a todos |
|||||||||||
|
|
||||||||||||
|
| Temas de interés | |
|---|---|
| proteccion contra corto circuito. | |
| TV en corto | |
| LA fuente hace corto | |
| corto en placa base de un portatil??? andandara??? | |
| fuente regulable hasta 30v con proteccion contra corto | |
| Foros de Electronica |
| ||
Cuestiones Elementales de Electrónica ||
Fuentes de alimentacion ||
Circuitos de radio ||
Diseño de circuitos en general || || Sistemas de Audio: Preamplificadores, Ecualizadores || Amplificadores || Reparación || Discusión || || Microcontroladores y sistemas embebidos || Circuitos logicos combinacionales y secuenciales || Interfaces y Programacion || Dudas en general || Sistemas de Video || PC Hardware || Telematica y comunicaciones || Tecnologias moviles || Software Electronico || Robotica, Domotica y Mecatronica || Autotrónica || Automatizacion, Electronica industrial y de Potencia || Documentacion, circuitos y esquemas || Donde Las Ideas Convergen... || Tutoriales y Manuales || Proyectos Prácticos || |
Site Map
© Foros de Electrónica
Comunidad Internacional de Electrónicos
Powered by phpBB © 2001, 2005 phpBB Group
Acerca de || Política de privacidad
© Foros de Electrónica
Comunidad Internacional de Electrónicos
Powered by phpBB © 2001, 2005 phpBB Group
Acerca de || Política de privacidad

