Enviar datos de un pic a otro [PIC SIMULATOR IDE]

#21
Un detalle crees que este usando por las huevas los 3 16f628a y mejor le ponemos una eeprom mas...
Espero tu pronta respuesta
 
#24
Ahhhh... en eso tienes razon ya que el 16f877a es mas que capaz de soportar a Tengu, te lo iba a sugerir desde un principio pero como dijiste que era para aprender ya no lo hize.
 
#25
Si para aprender usare otra cosa, ya no lo hare asi pero entonces me topo con un problema grande no se como generar señales pwm con software no se!
 
#26
Ok, por suerte yo si se, para generar PWM por software se nesesitan 2 timers el primero dfine la frecuencia de trabajo y el segundo el ancho del pulso, para esto se entra a interrupcion por timer 1 (el que define la frecuencia de trabajo) se detiene el timer uno, cargas el timer 2 ( el que define el ancho de pulso)con el ancho del pulso deseado y lo inicias a la vez que pones en alto la salida y esperas a que se agote y pones en bajo la salida despue reinicias el timer 1 y vuelve a comenzar de nuevo. Basicamente es eso, el pic 16f887a tiene dos PWM por hard ¿cuantos mas nesesitas por soft?
 
#28
Osea que solo te hace falta un pwm???? Si es asi es mas facil todavia ya que solo se ocupa un timer... estos son un poco mas liosos de usar te voy a hacer un ejemplo para que veas como se hace.

PD: para saber de que estamos hablando, podrias compartir lo que llevas???
 
Última edición:
#29
Ok gracias amigo...



Lo que llevo son solo dibujos y bosquejos por que aun no tengo dinero :LOL: en cuanto pueda te enseño todo eso...



Que opinas de esto?

Código:
'***********************************************************
'Pruebas para inciarse en el control de iluminación led por PWM
'Tres PWM por software
'***********************************************************
'Configuración de fuses y reloj
Define CONF_WORD = 0x2f50
Define CLOCK_FREQUENCY = 4

'Configuración de módulos
AllDigital  'Los pin analogicos/digitales trabajaran como digitales
TRISA = 0  'Puerto A configurado como salidas, execto RA5 que solo trabaja como entrada
TRISB = 0  'Puero B configurado como salidas
PORTB = 0  'Puerto B puesto a cero todos sus pin
'Rutina principal
main:
	Dim cont As Word 'Contador incremento potencia de los PWMs
	Dim pwm0 As Byte 'Potencia PWM 0
	Dim pwm1 As Byte 'Potencia PWM 1
	Dim pwm2 As Byte 'Potencia PWM 2
	Const cont_s = 5 'Intervalo incremento Potencias
	Dim x As Bit 'Variable auxiliar
	pwm0 = 0 'Potencia inicial 0% PWM0
	pwm1 = 255 'Potencia inicial 100€ PWM1
	pwm2 = 127 'Potencia inicial 50% PWM2
	x = 0
 
	While x = 0  'Bucle principal
	
		Call _pwm_rb(pwm0, pwm1, pwm2) 'Controla y actualiza los PWMs
		If cont >= cont_s Then 'Intervalo del incremento de potencias
			pwm0 = pwm0 + 1
			pwm1 = pwm1 - 1
			cont = 0
		Endif
		cont = cont + 1
 
	Wend
 
End                                               
'Funcion para practicas con control de potencia con 3 PWM (software)
'Para control con positivo comun
'Pin utilizado RB0 a RB2 del puerto B
'Frecuencia aproximada 230Hz a 8Mhz de CLK.
'Tres valores de entrada mediante _pwm0 a _pwm2
'Con valores comprendidos entre 0 a 255 pasos de potencia
Proc _pwm_rb(_pwm0 As Byte, _pwm1 As Byte, _pwm2 As Byte)
	Const periodo = 255  'Periodo de la señal
	Dim ctrl As Byte  'Lleva el tiempo transcurrido del periodo
	If _pwm0 > 0 Then RB0 = 0  'Pin a OFF
	If _pwm1 > 0 Then RB1 = 0  'Pin a OFF
	If _pwm2 > 0 Then RB2 = 0  'Pin a OFF
	ctrl = 0  'Comienza ciclo
	While ctrl < periodo  'Mientras no se complete el periodo
		If ctrl >= _pwm0 Then RB0 = 1  'Pin a ON
		If ctrl >= _pwm1 Then RB1 = 1  'Pin a ON
		If ctrl >= _pwm2 Then RB2 = 1  'Pin a ON
		ctrl = ctrl + 1  'Tiempo transcurrido del periodo
	Wend
End Proc
 
Última edición:
#30
OK, tipico la plata siempre limita trabajos yo ando igual con mi CNC jajaja
Aun no te termino el ejmplo yo creo que mañana ya lo tendre ,mientras tanto vere tu codigo...
 
Última edición:
#33
Lamento haberme tardado amigo, pero me llego un trabajo urgente... te adjunto lo que te habia prometido.
Aun no checo el codigo que pusiste, apenas lo voy a ver y te comento.

Saludos,

PD: no puedo ver las imagenes
 

Adjuntos

Última edición:
#38
Si tendrá modo de reloj, pero hoy estuve pensando y me di cuenta que la matriz de 7 x 10 no alcanza para los 4 dígitos que tiene que tener estoy viendo como hacer...



PSDT: Gracias por el ejemplo esta muy interesante pero por que pin y puerto arroja la señal PWM?
 
Última edición:
#40
Este codigo esta bien?...
Código:
'===============================================================
'Codigo de ADC aplicado al pic 16f877a
'No tengo placa entrenadora solo mi proteus y mi protoboard
'No es codigo robado de nadie xD, por fin!
'===============================================================

'Defino parametros del microcontrolador
Define CONF_WORD = 0x3f71
Define CLOCK_FREQUENCY = 4

'Configuro puertos
TRISA = 0
TRISB = 0
TRISC = 0
TRISD = 0
ADCON1 = 0x0e

'Declaro una variable an0
Dim an0 As Word

'Programa:
'Analisa el valor del ADC
'Si cumple la condicion enciende un led
loop:
	Adcin 0, an0
	If an0 > 50 Then
	RB0 = 1
	Else
	RB0 = 0
	Endif
	If an0 > 100 Then
	RB1 = 1
	Else
	RB1 = 0
	Endif
	If an0 > 150 Then
	RB2 = 1
	Else
	RB2 = 0
	Endif
	If an0 > 200 Then
	RB3 = 1
	Else
	RB3 = 0
	Endif
Goto loop
End
 

Temas similares

Arriba