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

Temas similares

10/12/2011 #1


Ayuda PWM y Control
Hey que tal, tengo una grand duda,, soy nuevo usando los PIC's actualmente trabajo con el 18F4550....
El proyecto que estoy intentado realizar lleva el uso de pwm y 4 switch que me activan las salidas D en unos al mandar a unos los switch,... Logro correr las 2 partes del programa por separado (PWM y la parde de los switch) pero al momento de tratar de unirlos no se me corre nada en el pic...qiza mi problema sea el uno de las sentencias,,,, Espero alguien pueda ayudarme,... el programa es mas o menos como el que sigue.....

program CONTROL_L293__PWM
dim adc1 as word
dim adc2 as word

main:

ADCON1=$00 'Configura el valor adc y el de Vref
TRISA=$FF 'Puerto A es entrada
TRISB=$FF 'Puertos B de 0:3 Como Entradas
TRISD=$00 'Fuertos D de 0:3 como salidas
TRISC=$FF ' Initialize PORTC
Pwm1_Init(4000) ' Initialize PWM module, freq = 5kHz.
Pwm2_Init(4000)

while true
adc1=Adc_read(0) 'Le el valor de referencia en pin A0
Pwm1_Change_Duty(adc1) ' Muestra el valor de salida relacion adc

adc2=Adc_read(1) 'Le el valor de referencia en pin A0
Pwm2_Change_Duty(adc2) ' Muestra el valor de salida relacion adc
wend

if portb.0=1 then
portd.0=1
else
portd.0=0
end if
end.

if portb.1=1 then
portd.1=1
else
portd.1=0
end if
end.

if portb.2=1 then
portd.2=1
else
portd.2=0
end if
end.

if portb.3=1 then
portd.3=1
else
portd.3=0
end if
end.



al compilar todo corre bien pero el fisicamente no funciona...
10/12/2011 #2

Avatar de Randy

while TRUE es un ciclo infinito...
osea que lo que esta abajo de wend, jamas se ejecuta.
Es decir, solo lee los analogicos y lo pone en los PWM
Despierta !!! jejeje
y mucha suerte con el proyecto
11/12/2011 #3


Gracias de hecho provee con varias modificaciones al programa entre ellas hacer un ciclo do while que abarcara hasta antes de el "end." tambien un do para el pwm cerrando con loop until true,,, y un while para el las de if.....
PEro ninguno me funciono... de hecho he optado por eliminar el pwm...ademasd de que no comprendo al 100% este y el ADCON1 me queda algo confuso....

y pues lo que intento es seguir experiementando...Gracias
13/12/2011 #4

Avatar de Randy

TRISA=$FF 'Puerto A es entrada
TRISB=$FF 'Puertos B de 0:3 Como Entradas
TRISD=$00 'Fuertos D de 0:3 como salidas
TRISC=$FF ' Initialize PORTC

Pwm1_Init(4000) ' Initialize PWM module, freq = 5kHz.
Pwm2_Init(4000)

while true
adc1=Adc_read(0) 'Le el valor de referencia en pin A0
Pwm1_Change_Duty(adc1) ' Muestra el valor de salida relacion adc

adc2=Adc_read(1) 'Le el valor de referencia en pin A0
Pwm2_Change_Duty(adc2) ' Muestra el valor de salida relacion adc


if portb.0=1 then
portd.0=1
else
portd.0=0
end if
end.

if portb.1=1 then
portd.1=1
else
portd.1=0
end if
end.

if portb.2=1 then
portd.2=1
else
portd.2=0
end if
end.

if portb.3=1 then
portd.3=1
else
portd.3=0
end if
wend
end.
Asi debe funcionar...

Saludos
13/12/2011 #5


Aqui no tienes que agregar el ADCON1 o algo asi,,, para laactivacion del programa?
18/12/2011 #6

Avatar de Randy

he revisado un ejemplo con el 2550 y al momento de configurar el ADC tiene lo siguiente:

ADCON1 = ADCON1 or 0x0F

Auque en un programa que hice recientemente omiti la instruccion y funciona a la perfeccion.

Saludos
18/12/2011 #7


Claro que funcionara lo que no me queda muy claro es la funcion ADCON1.

De todas manera no he detenido el proyecto donde necesitaba el mismo, ahora me desidido a intentar hacer un contador de rounds jajajajaja Gracias
Respuesta
¿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 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.