Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?
31/01/2014 #2701

Avatar de LaElectronicaMeOdia

Hola compañeros.

estoy intentando establecer una comunicacion entre un pic18f2550 y un PC mediante USB, y estoy en el tipico error de que en proteus si funciona pero en la realidad no, el problema que presenta es que se conecta el circuito y se instala el controlador pero aparece un error y al volverlo a conectar el PC pone que no se recoconoce el dispositivo.

yo supongo que son los fuses no se si podrian echarle una miradita al codigo del Pic.

Código:
@ __config _CONFIG1L, _PLLDIV_5_1L & _CPUDIV_OSC1_PLL2_1L & _USBDIV_2_1L
@ __config _CONFIG1H, _FOSC_HSPLL_HS_1H & _FCMEN_OFF_1H & _IESO_OFF_1H
@ __config _CONFIG2L, _PWRT_OFF_2L & _BOR_OFF_2L & _BORV_3_2L & _VREGEN_ON_2L
@ __config _CONFIG2H, _WDT_OFF_2H & _WDTPS_1_2H
@ __config _CONFIG3H, _MCLRE_OFF_3H & _LPT1OSC_OFF_3H & _PBADEN_OFF_3H & _CCP2MX_OFF_3H
@ __config _CONFIG4L, _STVREN_OFF_4L & _LVP_OFF_4L & _ICPRT_OFF_4L &_XINST_OFF_4L & _DEBUG_OFF_4L
@ __config _CONFIG5L, _CP0_OFF_5L & _CP1_OFF_5L & _CP2_OFF_5L & _CP3_OFF_5L
@ __config _CONFIG5H, _CPB_OFF_5H & _CPD_OFF_5H
@ __config _CONFIG6L, _WRT0_OFF_6L & _WRT1_OFF_6L & _WRT2_OFF_6L & _WRT3_OFF_6L
@ __config _CONFIG6H, _WRTB_OFF_6H & _WRTC_OFF_6H & _WRTD_OFF_6H
@ __config _CONFIG7L, _EBTR0_OFF_7L & _EBTR1_OFF_7L & _EBTR2_OFF_7L & _EBTR3_OFF_7L
@ __config _CONFIG7H, _EBTRB_OFF_7H

DEFINE OSC 20          

USBBuffer        Var Byte[2] 
USBBufferCount   Var Byte 
Freq             var word 


usbinit 
main: 

 gosub DoUSBIn
 if usbbuffer[0]=1 then 
  toggle portb.0
  Freq=10130
  usbbuffer[0]=Freq.lowbyte
  usbbuffer[1]=Freq.highbyte
  gosub DoUSBOut
 endif

 freq=0
 
goto main

DoUSBIn:
   USBBufferCount = 2              
   USBService                                    
   USBIn 1, USBBuffer, USBBufferCount, DoUSBIn   
   return
    
DoUSBOut:
   USBBufferCount = 2              
   USBService                                   
   USBOut 1, USBBuffer, USBBufferCount, DoUSBOut 
   return
anexo simulacion de proteus, visual basic y PBP
31/01/2014 #2702

Avatar de COSMICO

si tienes razon amigo ByAxel
creo que me confundi, gracias, a ver sia hago la conversion
31/01/2014 #2703

Avatar de LaElectronicaMeOdia

Ya solucione mi problema con el 18f2550, los codigos estaban bien, el error estaba en que al parecer la pasta de soldadura hacia puente entre las pistas de los pines del cristal, la limpie y raspe con un cepillito. todo ok. gracias.

ahora surgió otro problema con el circuito para medir Inductancias pero ese ya es otro rollo. vere si lo soluciono por mi mismo
03/02/2014 #2704


Hola.
Me gustaria saber como ir sumando el valor de las teclas pulsadas en un teclado matricial, y luego me lo almacene en una variable y me lo muestre en eun LCD
Ejemplo. Si pulso en el teclado13579000 me almacene 13.579.000 y me lo muestre el LCD
03/02/2014 #2705

Avatar de LaElectronicaMeOdia

una manera es que utilices la suma y un contador, algo como esto:

c=1
do
resultado=(resultado*c)+tecla
c=c*10
loop
04/02/2014 #2706


Gracias.
Tenia la formula matematica, pero no sabia como pasarlo al basic.
04/02/2014 #2707


Saludos
Hola ReyVilla te agradesco por tu tiempo yo acabo de descargar el archivo lo pruebo y te comento pero desde ya muchas gracias por tu ayuda ya que ahora podre ver que es lo que me faltaba inmediatamente lo probare amigo gracias

---------- Actualizado después de 13 minutos ----------

Amigo funciona de maravillas te agradesco mucho a ti y a todos que siempre aportan sus conocimientos ahora tratare de ponerle un led que oscile tiempo de 2 seg para poder ver que este encendido la placa. muchas gracias amigo muchas gracias a todos
27/02/2014 #2708


¿Línea de código mal?
Saludos a todos compañeros.
Hoy les traigo 2 dudas que me han surgido de una guía practica de lenguaje basic para PICS.
La cuestión es la siguiente:
Nota: el PIC que estoy usando es un 16f84A.

Código:
1 Define    LCD_DREG    PORTB
2 Define    LCD_DBIT    0
3 Define    LCD_RSREG    PORTB
4 Define    LCD_RSBIT    4
5 Define    LCD_EREG    PORTB
6 Define    LCD_EBIT    5
7 trisb = 0
8 trisa = %00011
9 dato var byte
10 dato=25
11 lcdout $fe,1
12
13 inicio:
14 lcdout $fe,2,"P1 suma P2 resta" 
15 Lcdout $fe,$C0,"Dato: ",Dec Dato
16 if porta.0 = 0 and dato<50 then call suma
17 if porta.1 = 0 and dato>0 then call resta
18 goto inicio
19
20 suma:
21 dato = dato+1
22 pause 250
23 return
24
25 resta:
26 dato = dato-1
27 pause 250
28 return
29
30 END
Cómo ya saben, simplemente muestra en pantalla cuando sumo o resto, la duda es que en la guía me especifican que el comando de la linea 15 debe ser escrito así

15 Lcdout $fe,$C0,"Dato: ",Dec Dato," "

Con ese espacio entre comillas, realmente desconozco el porque de eso, y es que si no coloco cuando empiezo a restar llega un punto en que el mensaje del display pierde coherencia con lo que hago y en vez de restar de 1 en 1, salta de 10 en 10 :S.
Me gustaría saber si alguien sabe cual es la función de ese espacio. OJO en la guía no me dicen en ningún momento el porque de ese espacio.
Bueno la otra cuestión es mas sencilla. ¿En que se diferencía un pic16f84A de un 16f84 ? (sin la A)
27/02/2014 #2709
Moderador

Avatar de D@rkbytes

Sobre la primer pregunta:
Al utilizar Dec Dato, Si el resultado de Dato es de 3 dígitos (por ejemplo),
cuando el resultado sea de 2 ó 1 dígito, éste quedará a la izquierda de los dígitos anteriores y el resultado se verá confuso.
Para solucionar eso, debes utilizar DecX dónde X es la cantidad de dígitos a mostrar en el resultado.
Por ejemplo LCDOut $FE,$80,Dec4 Dato

Si el resultado es de 2 dígitos, se mostrará así: 0012

El espacio que se usó después de Dato," " debe servir para borrar algo a la derecha del resultado.

Sobre la otra consulta, lee las hojas de datos para que veas cual es la diferencia entre ambos.
27/02/2014 #2710


claro ! ya lo veo por eso es que la cuenta pierde coherencia
12
11
10
90
80
70
...
el espacio para quitar ese cero porque no se especifica el numero de dígitos, gracias por eso.
en cuanto a lo de la "A " ya tengo los datasheet a primera vista tiene que ver por como estan hecho (cmos)

Por cierto referente al código anterior hay algo que me tiene liado con todos los codigos, y es que por ejemplo cuando tengo que hacer las pausas no se por que PARA MI cuando simulo en Proteus tengo que escribir 250 en Microcode para que en la simulacion transcurra 1 s .. lo que pienso es que es una mala configuracion pero no se como arreglarlo
27/02/2014 #2711
Moderador

Avatar de D@rkbytes

marconikov dijo: Ver Mensaje
Por cierto, referente al código anterior, hay algo que me tiene liado con todos los códigos, y es que por ejemplo, cuando tengo que hacer las pausas, no sé porque PARA MI cuando simulo en Proteus tengo que escribir 250 en Microcode para que en la simulación transcurra 1 s.
Lo que pienso es que es una mala configuración pero no sé como arreglarlo.
Eso debe ser porque en proteus algunos PIC tienen por defecto como frecuencia de trabajo 1MHz y seguramente tu programa trabaja con 4MHz.

Cambia la frecuencia de trabajo del PIC en proteus de acuerdo a la frecuencia de trabajo de tu programa.
28/02/2014 #2712


si, gracias compañero la opcion se llama "processor clock frecuency" y esta dandole a las propiedades del microcontrolandor en el proteus, vienen con una configuración por defecto.
01/03/2014 #2713


Buenas, quisiera saber si alguien me pudiera orientar en la comunicacion 1wire, ya tengo algunos conocimientos es programacion, quiero usar el sensor parallax colorpal con el PIC 16f877A, actualmente programo con PIC BASIC PRO....
01/03/2014 #2714

Avatar de chaires

Hola compañero sabrás si es posible lo que intento?
Lo que pasa es que tengo una impresora epson TMU-220 y quiero enviarle unos comandos Esc/Pos desde un pic 16F628 que tiene un puerto USART la impresora tiene RX y tx POR se me hizo posible poder usar este pic la verdad nunca en mi vida me habia metido en lo de la programacion de pic ni mucho menos se como grabarlo jejeje espero y me puedas orientar lo que quiero enviar al pic desde el puerto USART a la impresora epson es una leyenda y saber que la comunicación en ella si esta funcionando, pongo un ejemplo del los comandos Esc/Pos Y espero me puedas orientar a saber como lo puedo meter en el pic o si no es posible desde este pic basico me ayudes a buscar el optimo tengo varios proyectos y espero podamos colaborar juntos jjeje saludos
______________________
Ejemplo Esc/Pos
PRINT #1, CHR$(&H1B);"@"; 'Initializes the printer (ESC @)
PRINT #1, CHR$(&H1B);"a";CHR$(1);'Specifies a centered printing position (ESC a)
PRINT #1, CHR$(&H1B);"!";CHR$(0); 'Specifies font A (ESC !)
PRINT #1, "January 14, 2002 15:00";
PRINT #1, CHR$(&H1B);"d";CHR$(3); 'Prints and 3 line feeding (ESC d)
PRINT #1, CHR$(&H1B);"a";CHR$(0); 'Selects the left print position (ESC a)
PRINT #1, CHR$(&H1B);"!";CHR$(1); 'Selects font B
PRINT #1, "TM-U210B $20.00";CHR$(&HA);
PRINT #1, "TM-U210D $21.00";CHR$(&HA);
PRINT #1, "PS-170 $17.00";CHR$(&HA);
PRINT #1, CHR$(&HA); 'Line feeding (LF)
PRINT #1, CHR$(&H1B);"!";CHR$(17); 'Selects double-height mode
PRINT #1, "TOTAL $58.00"; CHR$(&HA);
PRINT #1, CHR$(&H1B);"!";CHR$(0); 'Cancels double-height mode
PRINT #1, "------------------------------";CHR$(&HA);
PRINT #1, "PAID $60.00";CHR$(&HA);
PRINT #1, "CHANGE $ 2.00";CHR$(&HA);
PRINT #1, CHR$(&H1D);"V";CHR$(66);CHR$(0); 'Feeds paper & cut
’Drawer Kick (ESC p)
PRINT #1, CHR$(&H1B); CHR$(&H70); CHR$(&H0); CHR$(60); CHR$(120);
__________________________________________________ ______________-
La nota queda asi desde la impresora:


Aqui esta el manual esc/pos
y el datasheet del pic
http://content.epson.de/fileadmin/co...ads/escpos.pdf
http://ww1.microchip.com/downloads/e...Doc/40044F.pdf
saludos cordiales y gracias por cualquier ayuda brindada por adelantado
06/03/2014 #2715


Hola compeñeros de la comunidad
Como habrán notado soy nuevo en el foro, solicito sus comentarios y ayuda para terminar este proyecto con buen termino.
Estoy haciendo un contador en lcd, la idea es que graba la última cifra de la cuenta en la memoria interna hasta 65535, ya que le integro la memoria interna y solo me cuenta hasta 255 y se reinicia la cuenta de nuevo.
¿Alguien me puede ayudar por favor?
Anexo código en pbp. Saludos.
Código:
define osc 4 ; especifica que se va a utilizar uno de 4 Mhz 
' Define registros y bits del LCD
Define    LCD_DREG    PORTB
Define    LCD_DBIT    0
Define    LCD_RSREG    PORTB
Define    LCD_RSBIT    4
Define    LCD_EREG    PORTB
Define    LCD_EBIT    5

CMCON = 7
Cnt VAR Word    ' variables cont con capacitas de 8 bytescapacidad de 65535
                  
TRISB = 0         ' PORTB es salida
PAUSE 500        ' retardo para inicializar el LCD
Cnt = 0            ' limpia contador  y lo coloca a cero
LCDOUT $FE,1    ' limpia LCD 

inicio:                          ; rutina de conteo
    if porta.0=0 then        'pregunta
    cnt = cnt + 50           ' Incrementa contador 
    write 0,cnt                'graba mem.int.
    pause 10
    read 0,cnt 'CAJA 255     'lee mem. int.
    PAUSE 10       
    LCDOUT $FE,2             ' inicio del cursor LCD
    LCDOUT "CNT = ", DEC Cnt ' muestra en el display cnt y su conteo en decimal             
    PAUSE 300                ' espera un 0.3 seg.
    endif
    
    GOTO inicio              ' crea un bucle cerrado
    END                        ' fin del programa
07/03/2014 #2716

Avatar de LaElectronicaMeOdia

Tienes que ponerlo en dos partes
Para escribir :
Write 0,cnt.highbyte
Write 1,cnt.lowbyte
Para leer:
Read 0,cnt.highbyte
Read 1,cnt.lowbyte
07/03/2014 #2717


saludos
LaElectronicaMeOdia dijo: Ver Mensaje
Tienes que ponerlo en dos partes
Para escribir :
Write 0,cnt.highbyte
Write 1,cnt.lowbyte
Para leer:
Read 0,cnt.highbyte
Read 1,cnt.lowbyte
Gracìas funcionò de maravilla al ponener el codigo recomendado, lo pueden usar los compañeros de este foro, hay se los dejo, saludos,
09/03/2014 #2718


Nuevo Contador
Ahora si me permiten compañeros del foro, quiero preguntarles que añadidura tengo que hacer para que me cuente hasta el limite word, pero ahora con mem. exterior, por su ayuda gracias de antemano.
Anexo mi programa:

Código:
@ device xt_osc ; oscilador externo XT 
define osc 4 ; especifica que se va a utilizar uno de 4 Mhz 

' Define registros y bits del LCD
Define    LCD_DREG    PORTB
Define    LCD_DBIT    0
Define    LCD_RSREG    PORTB
Define    LCD_RSBIT    4
Define    LCD_EREG    PORTB
Define    LCD_EBIT    5

CMCON = 7
TRISA=%11111100
TRISB=%0

Symbol SDA = PORTA.1 ' Alias para RB0
Symbol SCL = PORTA.0 ' Alias para RB1
      I VAR Byte     ' Declaración de variable "I"
     A1 VAR Byte     ' Declaración de variable "A1"
Direc VAR Word       ' Declaración de variable "Direc"
Control VAR Byte     ' Declaración de variable "Control"
Dato VAR Byte        ' Declaración de variable "Dato"

Pause 200            ' Pausa de 200 milisegundos para la LCD
LCDOut $fe, 1        ' Limpia la LCD

      Control = %10100000 ' Dato de Control
      Direc = $00 ' Dirección en la memoria externa
      Dato = 0 ' Dato inicial a ser grabado
memoria1:
      IF PORTA.2=0 THEN  'pregunta
      Dato = Dato + 50     ' Suma 2 a la variable "Dato"
      pause 300
      I2Cwrite SDA, SCL, Control, Direc, [dato] ' Escribe la memoria
      Pause 10 ' Pausa de 10 milisegundos

      I2CREAD SDA, SCL, Control, Direc, [Dato]  ' Lectura de memoria
      LCDOUT $FE,1
     LCDOUT $fe, 2,"Dato ",#Dato                   ' Muestra el dato leido
      Pause 1000 ' Pausa de 1 segundo      
      ENDIF         'medio fin

GoTo memoria1 ' Salta a la etiqueta memoria a empezar nvo.
End
16/03/2014 #2719

Avatar de ferdy575

hola a todos yo otra vez por aquí preguntando bobadas a ver sí me pueden ayudar, quisiera saber sí es posible crear un programa en basic donde yo pueda escoger varias funciones y estas estén en asm, algo así:

IF PORTA.0 = 1 THEN
c1 equ h'0c'
org h'00'
reset
goto start
org h'04'
start
mov1w h'09'
movwf c1
loop
incfsz c1,F
goto loop
goto start
ENDIF
16/03/2014 #2720

Avatar de papirrin

si pero tienes que indicar cuando va a ser en ASM algo asi

ASM
bsf PORTA, 0 ; Set bit 0 on PORTA
bcf PORTB, 0 ; Clear bit 0 on PORTB
ENDASM
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.