Página 1 de 1

PWM-PORCENTAGEM

MensagemEnviado: 11 Dez 2009 13:47
por roquetti
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
}

MensagemEnviado: 11 Dez 2009 15:01
por ze
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...

MensagemEnviado: 11 Dez 2009 15:23
por roquetti
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);

MensagemEnviado: 11 Dez 2009 16:09
por Djalma Toledo Rodrigues
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

MensagemEnviado: 11 Dez 2009 16:09
por ze
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

MensagemEnviado: 14 Dez 2009 17:17
por roquetti
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.

MensagemEnviado: 14 Dez 2009 17:19
por roquetti
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.