Wie schnell ist dein Rechteck Signal?
maximal 1KHz.....
Wie sieht die Geschichte denn aus?
Der ADC ist doch Rechtecken total ungeeignet, besser wäre ein CCP.
Interessant wäre auch die Ausgangsimpedanz des OP bei der Frequenz.
Analoges eingangssignal, dann a/d-wandler, dies dann (da kommt noch ne Software zwischen) mithilfe der PWM wieder raus.
Und da war auch mein Fehler bei Eröffnung des Threads! Das ist nicht der A/D-Wandler sondern die PWM die Glitches auf mein Signal bringt, da ich ca. alle 40Khz (also genau die PWM-Wandlungs-zeit) immer zacken bekomm.Im datenblatt steht auch das das Doppelpuffern ganz wichtig für Glitchlose PWM verarbeitung ist, aber so ganz schlau werde ich aus der Verarbeitung nicht ganz.
Oder muss ich das dann latchen
Hier ist mal auch noch mein code:
int do_ad = true;
int no_timer = true;
#INT_AD
void AD_isr()
{
do_ad = false;
delay_us(35);
}
#INT_TIMER2
void timer2_isr()
{
no_timer = false;
}
void main(){
while (1){
ad_wandlung();
}
}
void ad_wandlung()
{
//setup_port_a(ALL_ANALOG);
//laut Microchip Datenblatt
// 1.A/D Modul konfigurieren
ADCON1 = 0x40;
ADCON0 = 0x89;
//2. A/D Interrupt konfigurieren
enable_interrupts(INT_TIMER2);
enable_interrupts(INT_AD);
enable_interrupts(GLOBAL);
ext_int_edge(L_TO_H);
// 3. aquisition time abwarten
delay_us(16);
// 4.start conversion
ADCON0=0x8d;
while(do_ad);
do_ad = true;
setup_CCP1(CCP_PWM); //setzt CCP1 Modul als PWM... CCP1 ist Timer 2 zugewiesen
setup_timer_2(T2_DIV_BY_1,255,1); // (Teiler,Periode,postscaler)
set_pwm1_duty( ADRESH );
while (no_timer);
no_timer = true;
}