Transmitir datos por el puerto serie
| #1 Transmitir datos por el puerto serie |
| #2 Re: ¡AYUDA NO DOY CON EL PUERTO SERIE¡ :! |
|
maunix
Colaborador
|
El tema de si es una "interrupción" o "un evento" depende del sistema operativo que estés usando. Siempre es la interrupción la que ocurre pero lo que sucede es que si tienes un sistema operativo que encapsule el hardware (w2000, windows xp, linux, etc) no tendrás acceso directo a la interrupción. Si usas un lenguaje C o C++ o ensamblador... ¿bajo que sistema operativo lo haces? |
|||||||||||||
|
|
||||||||||||||
| #3 |
|
neutron0607
|
Uso Windows 98 tambien me gustaria saber como se configura el puerto para controlar la velocidad y como hacer para poder mandar las señales "de listo para leer datos" y "la que le dice al pic que espere"
|
|||||||||||
|
|
||||||||||||
| #4 |
|
leo_programer
|
no se si le sirva, pero aqui: http://c.conclase.net/preguntas.php hay unas funciones para manejar el puerto serie en c++, no las he podido probar del todo puesto que se me dañó el quemador de pics, pero al menos el programa me compila, revisalas y mira a ver si le sirve, cuidense...
|
|||||||||||
|
|
||||||||||||
| #5 |
|
maunix
Colaborador
|
Lo último que programé de puerto serie bajo W98 fue hace aññños, pero te hablo de al menos 6 o 7 años. Lo que hice fue leerme el datasheet del IC 16550 (en principio traian este IC, luego ya lo incorporaban en el chipset o bien tenian un IC que era 100% compatible con él) Te dejo el siguiente link: Wikipedia 16550 Leyendo el datasheet y usando outport e inport fui programando los registros del mismo. La escritura y lectura la hacia por "polling" ya que en su momento no sabía como resolver el tema de interrupciones por hardware/software, ya que hay que armar un handler y es todo un tema! Saludos |
|||||||||||||
|
|
||||||||||||||
| #6 |
|
neutron0607
|
trato de mandar datos por el puerto serie pero no puedo aun, uso win98 trabajo con un pic16f876 escribi el siguiente codigo para mandar los datos:
LIST P=16F876 RADIX=HEX PROCESSOR 16F876 INCLUDE "P16F876.INC" __CONFIG _XT_OSC &_WDT_OFF &_PWRTE_ON &_LVP_OFF ORG 0X00 GOTO INI ORG 0X05 INI MOVLW 0X00 bsf STATUS,RP0 BCF STATUS,RP1 MOVLW b'1011111' MOVWF TRISC BCF STATUS,RP0 BSF RCSTA,SPEN BSF STATUS,RP0 MOVLW b'00100100' MOVWF TXSTA MOVLW .25 MOVWF SPBRG BSF TXSTA,TXEN BCF STATUS,RP0 MOVLW 48 MOVWF TXREG END luego el programa de la compu es este: #include<stdlib.h> #include<dos.h> #include<stdio.h> #include<conio.h> int c,d,i; main() { clrscr(); c=inportb(0x3F8); printf("%d",c); d=inportb(0x3Fd); printf("\t\n%d",d); getch(); return 0; } pero la cochinada no me lee el dato no se que esta mal ayudenme pliss |
|||||||||||
|
|
||||||||||||
| #7 |
|
maunix
Colaborador
|
neutron0607, vayamos por partes
Te propongo que pruebes primero con el hyperterminal y no con un programa hecho por tí. El hyperterminal viene con windows, seteas el baudeaje, sin control de flujo y listo. En cuanto a tu software, me parece qeu estas liado en 2 cosas. 1) Tu pic no termina la ejecución al llegar al END! El END solamente le dice al ensamblador que termine su tarea. Debes hacer un bucle infinito. Por ej: , cambia
por
2) Estas configurando mal el TRISC, si te fijas en el datasheet de los 16F, el trisc<6> y trisc<7> ambos deben estar en 1. |
|||||||||||
|
|
||||||||||||
| #8 |
|
neutron0607
|
hice lo que me dijiste estoy usando el hiperterminal y mande 52 hex que es 'R' en ascii veo lo siguiente:
RRRRRÿRRRRRRRRRRRRRRRRRRRRRRRRÿRRRRRRRRÿRRRRRRRRÿRRRRRRRRÿRRRRRRRRþRRRRRR lo cual ya es consolador, solo una duda? esos caracteres que no son R son algun tipo de errrores o indicadores de otro tipo? gracias ahora voy por lo de la programacion en c++ pero no se si debe ser dentro de este foro |
|||||||||||
|
|
||||||||||||
| #9 |
|
maunix
Colaborador
|
¿A qué baudeaje estas trabajando? ¿Tienes deshabilitado el WatchDog? ¿Has modificado el TRISC<6> como te indiqué? |
|||||||||||||
|
|
||||||||||||||
| #10 |
|
neutron0607
|
Hola ya avance en mi programa de C++ pero independiente de que use si mi programa o la hyperterminal de todos modos veo esto:
RRRRRRRòRRRRRRR²RRRRRRRÒRRRRRRR²HIIIIIIéRRRRRRRòRRRRRRRÒR RRRRRRRÒRRRRRRRÒRRRRRRRÒRRRRRRR’RRRRRRR’RRRRRRRÂ Como podras notar de cada 8 caracteres el octavo esta mal, esto si me tiene desconcertado ya hice lo que dijiste mira te mando mi nueva compilacion LIST P=16F876 RADIX=HEX PROCESSOR 16F876 INCLUDE "P16F876.INC" __CONFIG _XT_OSC &_WDT_OFF &_PWRTE_ON &_LVP_OFF ORG 0X00 GOTO INI ORG 0X05 INI MOVLW 0X00 bsf STATUS,RP0 BCF STATUS,RP1 MOVLW b'1111111' MOVWF TRISC BCF STATUS,RP0 BSF RCSTA,SPEN BSF STATUS,RP0 MOVLW b'00100100' MOVWF TXSTA MOVLW 0x1F MOVWF SPBRG BSF TXSTA,TXEN BCF STATUS,RP0 BUCLE: btfss PIR1,TXIF ;nos fijamos si está vacío el buffer de usart goto BUCLE MOVLW 0x52 MOVWF TXREG goto BUCLE END A este punto ya estoy seguro que el problema es mi programa, por cierto compre proto nueva y un cristal de 4.9152 para que al usar el numero 0x1F me dé un baudaje de 9600 bauds exacto. |
|||||||||||
|
|
||||||||||||
|
| Temas de interés | |
|---|---|
| Ayuda con modulos TLP434 y RLP434 | |
| Transmitir codigo | |
| transmitir videos en vivo por internet | |
| transmitir por el sci | |
| Acople y Filtrado para transmitir datos por la red electrica | |
| 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
Generada en = 0.11381 segundos, Consultas = 13
© Foros de Electrónica
Comunidad Internacional de Electrónicos
Powered by phpBB © 2001, 2005 phpBB Group
Acerca de || Política de privacidad
Generada en = 0.11381 segundos, Consultas = 13

