PWM-PORCENTAGEM

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

PWM-PORCENTAGEM

Mensagempor roquetti » 11 Dez 2009 13:47

Srs,
Boa tarde,
Estou tentando escrever no LCD a porcentagem do PWM e ainda não consegui, estou usando MIKROC, segue código fonte que não está completo, se alguém puder me ajudar agradeço.


/*
*
*/

unsigned short current_duty,i,j;


void acionando() {
PWM1_Init(5000);
PWM1_Change_Duty(current_duty);
PWM1_Start();
}

void InitMain() {
PORTB = 0; // set PORTB to 0
TRISB = 0B111100;

PORTD = 0b00001100; // set PORTB to 0
TRISD = 0; // designate PORTB pins as output

ADCON1 = 7; // all ADC pins to digital I/O
PORTA = 255;
TRISA = 255; // configure PORTA pins as input

PORTC = 0; // set PORTC to 0
TRISC = 0; // designate PORTC pins as output

lcd_init(&portd);
lcd_config(&portd,0,1,1,7,6,5,4); // Initialize PWM1 module at 5KHz
lcd_cmd(lcd_cursor_off);
lcd_out(1,1,"Paulo Roquetti");
PWM1_Init(5000);
}

void main() {
initMain();

current_duty=1; // start PWM1

while (1) { // endless loop
if (Button(&PORTB, 2,10,0)){ // button on RA0 pressed
current_duty++ ;
i++;
delay_ms(100);
acionando();
lcd_out(2,1,(........));
if (current_duty>=254)current_duty=254;
} // increment current_duty
delay_ms(100);
acionando();
lcd_out(2,1,(..........));
if (current_duty<=1)current_duty=1
if (Button(&PORTB, 4,10,0)) { // button on RA1 pressed
current_duty-- ;;

} // decrement current_duty

// and display on PORTD
}
Delay_ms(50); // slow down change pace a little
}
roquetti
Byte
 
Mensagens: 183
Registrado em: 27 Dez 2008 23:07
Localização: Jaguariúna - SP

Mensagempor ze » 11 Dez 2009 15:01

desculpe minha burrice mas
lcd_config(&portd,0,1,1,7,6,5,4); // Initialize PWM1 module at 5KHz
???
e onde está dentro do loop a rotina de escrita da %gem no disp? é a lcdout()? que parâmetro ela aceita no lugar de (.....)?
Código: Selecionar todos
off topic:
selecione apenas seu código e clique em "Code" 5º botão acima. Não antes de clicar em "edit"

bfds...
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Mensagempor roquetti » 11 Dez 2009 15:23

lellis escreveu:desculpe minha burrice mas
lcd_config(&portd,0,1,1,7,6,5,4); // Initialize PWM1 module at 5KHz
???
e onde está dentro do loop a rotina de escrita da %gem no disp? é a lcdout()? que parâmetro ela aceita no lugar de (.....)?
Código: Selecionar todos
off topic:
selecione apenas seu código e clique em "Code" 5º botão acima. Não antes de clicar em "edit"

bfds...

Não se preocupe com estes comentários, pois os comentarios não estão corretos, eu inicializei o pwm com 5kHz e estou tentando fazer uma formula, segue:

while (1) { // endless loop
if (Button(&PORTB, 2,10,0)){ // button on RA0 pressed
current_duty++ ;
acionando();
j=((CCPR1L*100)/255)+48;
lcd_out(2,1,&j);
if (current_duty>=254)current_duty=254;
Delay_ms(100);
} // increment current_duty

if (Button(&PORTB, 4,10,0)) { // button on RA1 pressed
current_duty-- ;;
acionando();
j=((CCPR1L*100)/255)+48;
lcd_out(2,1,&j);
if (current_duty<=1)current_duty=1;
Delay_ms(100);
roquetti
Byte
 
Mensagens: 183
Registrado em: 27 Dez 2008 23:07
Localização: Jaguariúna - SP

Mensagempor Djalma Toledo Rodrigues » 11 Dez 2009 16:09

Sugestão faça uma abordagem inversa

Escolha a Porcentagem do Duty Cycle que pretende

Envia para o Display

Calcule o Valor do Duty a ser Colocado CCP correspondete a essa Porcentagem

Simples Regra de 3

DJ
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Mensagempor ze » 11 Dez 2009 16:09

tudo bem...
uma rápida leitura no help do mkc e vi que o 3º parâmetro que lcdout() aceita é do tipo string. portanto converta antes
char txt[4];
//...
IntToStr(j, txt); //já que está usando os mastigados mesmo...
e faça
lcd_out(2,1,txt);
pra ver que merdadá
permita-me: if (Button(&PORTB, 2,10,0)) no lugar de if (!RB0) machuca um pouco meus olhos e gasta muito mais... teclado também. parece ccs.
abç e bfds de novo
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Mensagempor roquetti » 14 Dez 2009 17:17

lellis escreveu:tudo bem...
uma rápida leitura no help do mkc e vi que o 3º parâmetro que lcdout() aceita é do tipo string. portanto converta antes
char txt[4];
//...
IntToStr(j, txt); //já que está usando os mastigados mesmo...
e faça
lcd_out(2,1,txt);
pra ver que merdadá
permita-me: if (Button(&PORTB, 2,10,0)) no lugar de if (!RB0) machuca um pouco meus olhos e gasta muito mais... teclado também. parece ccs.
abç e bfds de novo


É que este if (Button(&PORTB, 2,10,0)) é usado para 10ms de debouce, eu também não gosto de usar este, obrigado.
roquetti
Byte
 
Mensagens: 183
Registrado em: 27 Dez 2008 23:07
Localização: Jaguariúna - SP

Mensagempor roquetti » 14 Dez 2009 17:19

Djalma Toledo Rodrigues escreveu:Sugestão faça uma abordagem inversa

Escolha a Porcentagem do Duty Cycle que pretende

Envia para o Display

Calcule o Valor do Duty a ser Colocado CCP correspondete a essa Porcentagem

Simples Regra de 3

DJ


Oi Djalma, tô fazendo uma regra de 3, obrigado, acho que vou descartar o MikroC e usar o C18, estou começando a estudá-lo.
Abração.
roquetti
Byte
 
Mensagens: 183
Registrado em: 27 Dez 2008 23:07
Localização: Jaguariúna - SP


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x