Non riusciamo proprio a generare questo segnale, vi prego datemi una mano con il programma, ditemi se è sbagliato, e dove. magari c'è qualche buon anima che lo riscrive? Il mio livello di c++ è pari a zero, sto in 5 e mi serve come progetto di tdp se no mi mette il debito, a me al mio gruppo e al 95% della classe.
PWM freq. 10.000 duty 80
L'oscillatore è a 20mhz
Ho copiato questa istruzione dal professore:
Timer> timer 2 enable
other > ccp1 > PWM freq. 10.000 duty 80
timer 1 (t2_div_by_4,70,1)
set_pwm1_duty((int16)140)
setup timer 2
setup_ccp1
while_true{
delay_ms 2000
set_pwm1_duty((int16)99)
delay_ms 2000
set_pwm1_duty((int16)198)
delay_ms 2000
set_pwm1_duty((int16)297)
delay_ms 2000
set_pwm1_duty((int16)393)
E ho copiato il programma, ma non funziona! perché?
Datemi una mano grazie!
- Codice: Seleziona tutto
#include <main.h>
#include "na_lcd4x20_D2Free.c"
#define LED PIN_D3
#define BUZZER PIN_D2
float volt,val,T;
void Beep(void) {
output_high(BUZZER);
delay_ms(100);
output_low(BUZZER);
}
// --- End Beep Buzzer
// --- Prova led e beep di sistema
void led_buzz(void){
int j;
for(j=0; j<=4; j++) {
delay_ms(400);
output_high(LED);
Beep();
delay_ms(400);
output_low(LED);
}
}
// --- End Prova led e beep di sistema
// --- Presentazione progetto in avvio
void presentation(void){
lcd_putc("\f"); //Pulisco il display
lcd_gotoxy(2,1);
lcd_putc("PIC16F877A 20 MHz");
beep(); //Avviso start
delay_ms(500);
lcd_putc("\f");
lcd_gotoxy(1,1);
lcd_putc("R. C. D. M.");
delay_ms(500);
lcd_gotoxy(1,3);
lcd_putc("1 canale input ADC");
delay_ms(500);
lcd_gotoxy(3,4);
lcd_putc("canale AN0");
led_buzz(); //Avviso start
delay_ms(500);
}
void Testata(void){
lcd_putc("\f");
lcd_gotoxy(1,1);
lcd_putc("Val: volt:");
lcd_gotoxy(3,2);
lcd_putc("T:");
}
void main()
{
float volt,val,T;
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_CLOCK_DIV_2);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DIV_BY_4,124,1);
setup_ccp1(CCP_PWM);
set_pwm1_duty(512);
setup_comparator(NC_NC_NC_NC);
output_low(PIN_D2);
output_low(PIN_D3);
lcd_init();
delay_ms(100);
Presentation();
delay_ms(1000);
Testata();
delay_ms(50);
delay_ms(2000);
set_pwm1_duty((int16)99);
delay_ms(2000);
set_pwm1_duty((int16)198);
delay_ms(2000);
set_pwm1_duty((int16)297);
delay_ms(2000);
set_pwm1_duty((int16)393);
delay_ms(2000);
set_pwm1_duty((int16)99);
delay_ms(2000);
set_pwm1_duty((int16)198);
delay_ms(2000);
set_pwm1_duty((int16)297);
delay_ms(2000);
set_pwm1_duty((int16)393);
//ripete il ciclo infinite volte
while(true){
set_adc_channel(0); //seleziona il canale 0 dell'ADC(AN0)
delay_us(50);
val=read_adc();//leggo valori registrati
volt=(float)val*0.0048828;//ampiezza segnale di ingresso = valore ADC x risoluzione
T = (volt*100)/5;
lcd_gotoxy(5,1);
printf(lcd_putc,"%.2f ",val);
lcd_gotoxy(17,1);
printf(lcd_putc,"%.2f",volt);
lcd_gotoxy(5,2);
printf(lcd_putc,"%2.2f",T);
if(volt>4){
output_high(buzzer);
delay_ms(200);
output_low(buzzer);
}
}
}

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)



