Autor Tema: usart con pic 16f628 como esclavo  (Leído 2859 veces)

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

Desconectado maxluis

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 131
usart con pic 16f628 como esclavo
« en: 28 de Enero de 2004, 19:50:00 »
HOLA:
   A TODOS, LOS DEL FORO.

DESEO COMUNICARME EN FORMA SERIAL ENTRE DOS PIC UN 16F877(COMO MAESTRO) Y EL 16F628(COMO ESCLAVO),PUESTO QUE ESTE ULTIMO PERMITE ESTA COMUNICACION, HE LOGRADO COMUNICAR DOS PIC POR MEDIO DE I2C, PIC 16F877 Y 16F874,ME GUSTARIA VER UN EJEMPLO MAESTRO-ESCLAVO EN PBP,ESPERO QUE ALGUIEN DEL FORO PUEDA ORIENTARME,PARA LOGRAR ESTE DESAFIO.

CUALQUIER RESPUESTA EN ESTE SENTIDO DESDE YA SE LES AGRADECERA.

MAXLUIS

Desconectado lager

  • PIC18
  • ****
  • Mensajes: 258
RE: usart con pic 16f628 como esclavo
« Respuesta #1 en: 28 de Enero de 2004, 20:39:00 »
Hola Maxluis,
la verdad no e usado aun el Usart del 16f628, pero pienso que si ya lo tienes entre otros dos pics, solo debes de cmabiarlo para el f628, con los comandos serin y serout, puedes hacer la prueba leyendo un dato del maestro y gusrdandolo en la eeprom del esclavo.
Un saludo

Una razon asm para migrar a PBP PLUS!!

Desconectado lager

  • PIC18
  • ****
  • Mensajes: 258
RE: usart con pic 16f628 como esclavo
« Respuesta #2 en: 29 de Enero de 2004, 20:43:00 »
Que onda maxluis,
Si no has visto codigos, aqui te envo este, solo tienes que confirgurar el TXSTA para poner uno como MASTER (osc, interno ) y a ese codigo le incluyes un baud rate y al otro pic como esclavo, (oscilador del MAster)  y yap, los comandos se usan directitos como los muestro acontinuacion:
Device 16F877
XTAL = 4
Dim B1   as Byte
      
   
  SPBRG = 25                       "veloc, en 2400KB/s chekar tabla de DS
   RCSTA = %10000000  " Recepcion
   TXSTA = %10110000  "transmision aqui ya esta en Master
Loop:   Gosub GetChar       "espera de datos
        If B1 = 0 Then Loop     " si no hay sigue esperando
        Gosub PutChar           " si hay, lo envia de nuevo
        Goto Loop                  " al terminar vuelve a empezar
GetChar: B1 = 0                " limpia variable
        If PIR1.5 = 1 Then B1 = RCREG   " si hay dato (flag)en pin RX lo coloca en variable
       Return                     "Regresa de la llamada con el dato   

PutChar: If PIR1.4 = 0 Then PutChar  " espera flag
        TXREG = B1          " pone la variable en pin de salida TX
        Return                  "Regresa de la llamada
       

Para el esclavo solo cambia el TXSTA a esclavo y yap

Espero que te ayude en tu proyecto.
Saludos

Baygon

Una razon asm Para migrar a PBP PLUS!!

Desconectado lager

  • PIC18
  • ****
  • Mensajes: 258
RE: usart con pic 16f628 como esclavo
« Respuesta #3 en: 30 de Enero de 2004, 15:52:00 »
Hola maxluis,
Aqu te dejo mi codigo de MAESTRO a ESCLAVO como lo necesitas por si no lo tienes aun.

MAESTRO(TRANSMISOR)::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"AUTOR: LAGER                                                                  "
"MICRO: 16F877                                                                 "
"OSCILADOR: 4MHZ                                                               "
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
DEVICE=16F877
DECLARE XTAL  4
ADCON1 = 7
DIM VAR1[30]AS BYTE  "UN PAQUETE EN BLANCO DE PARADA PARA EL RECEPTOR ESCLAVO
DIM  C AS BYTE
DECLARE LCD_DTPIN PORTA.0
DECLARE LCD_ENPIN PORTB.3
DECLARE LCD_RSPIN PORTA.4
TRISB.1=1
SYMBOL BOTON=PORTB.1
PORTB_PULLUPS=TRUE
VAR1[0]="M":VAR1[1]="A":VAR1[2]="E":VAR1[3]="S":VAR1[4]="T":VAR1[5]="R"
VAR1[6]="O":VAR1[7]="=":VAR1[8]="1":VAR1[9]="6":VAR1[10]="F":VAR1[11]="8"
VAR1[12]="7":VAR1[13]="7":VAR1[14]="E":VAR1[15]="S":VAR1[16]="C":VAR1[17]="L"
VAR1[18]="A":VAR1[19]="V":VAR1[20]="O":VAR1[21]="=":VAR1[22]="1":VAR1[23]="6"
VAR1[24]="F":VAR1[25]="6":VAR1[26]="2":VAR1[27]="8"
SPBRG=103
PIE1.4=1
RCSTA=%10000000
TXSTA=%10110000

ESPERA:IF BOTON=1 THEN ESPERA
        FOR C=0 TO 29
        TXREG=VAR1[C]
ESPERA2:IF PIR1.4=0 THEN ESPERA2
        NEXT
      PRINT "     MENSAJE    "
        PRINT $FE, $C0, "     ENVIADO    "
      END

       

ESCLAVO(RECEPTOR):::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"AUTOR: LAGER                                                                  "
"MICRO: 16F628                                                                 "
"OSCILADOR: 4MHZ (reloj interno)                                                             "
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
DEVICE=16F628
CONFIG INTRC_OSC_NOCLKOUT,WDT_OFF,PWRTE_ON,CP_OFF,BODEN_OFF,LVP_OFF,MCLRE_OFF
CMCON = 7
PORTB_PULLUPS=TRUE
DECLARE LCD_DTPIN PORTA.0
DECLARE LCD_ENPIN PORTB.3
DECLARE LCD_RSPIN PORTA.4
DIM VAR2[28] AS BYTE
DIM A AS BYTE
CLEAR
PIE1.5=1
TXSTA = %00010000         
RCSTA = %10010000
ESPERA:IF PIR1.5=0 THEN ESPERA
   
        FOR A=0 TO 27
        VAR2[A]=RCREG
ESPERA2:IF PIR1.5=0 THEN ESPERA2
        NEXT
        CLS
      FOR A=0 TO 13
        PRINT VAR2[A]
        DELAYMS 200
        NEXT
      PRINT $FE, $C0
      FOR A=14 TO 27
        PRINT VAR2[A]
        DELAYMS 200
        NEXT
      END
Espero que te sriva de algo, si necesitas el Design de proteus para correrlo me dices y te lo envio.
Saludos pana      

Una razon asm para migrar a PBP PLUS!!