PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 18f6520 adc rückw. , digitalpinns sprechen nicht an adc pins die umgeschaltet sind



pointhi
29.02.2012, 14:39
Hy, ich arbeite gerade an meinem roboter. Der verwendete controller ist ein PIC18F6520. Das problem ist das der ADC sich selber immer beeinflusst. Wartezeit sollte eigentlich nicht wenig zu sein.


for(int i=0;i<=10000;i++);

die Initialisierung (hab den code von ein paar init-funktionen auch herauskopiert:


// PORT-Konfiguration

TRISA = 0b11111111; // 1...Eingang
TRISB = 0b11111101; // 0...Ausgang
TRISC = 0b11111001;
TRISD = 0b11111111;
TRISE = 0b11100001;
TRISF = 0b11111111;
TRISG = 0b11100000;

// PORT-Reset

PORTA = 0x00;
PORTB = 0x00;
PORTC = 0x00;
PORTD = 0x00;
PORTE = 0x00;
PORTF = 0x00;
PORTG = 0x00;

// ADC

ADCON0 = 0b00000001; // AD-Enable
ADCON1 = 0b00000000; // alle enable
ADCON2 = 0b10000110; // Rechtsbündig, FOSC/64

// PWM

Engine1Stop(); // Sorge dafür dass die Motoren nicht anlaufen
Engine2Stop();
Engine3Stop();
PR4 = 0xFF; // PWM-Periode // 2441.4Hz
T4CON = 0b00000111; // Prescaler 1:16, Timer 2 Enable
Engine1PWM(0xFF); // Setze die PWM-Ports auf "Vollgas"
Engine2PWM(0xFF);
Engine3PWM(0xFF);
CCP3CON = 0b00111100; // PWM Enable // Duty zykle 1 0
CCP4CON = 0b00111100; // PWM Enable // Duty zykle 1 0
CCP5CON = 0b00111100; // PWM Enable // Duty zykle 1 0

PR2 = 0b11111001;
T2CON = 0b00000111;
CCPR2L = 0b01111100;
CCP2CON = 0b00111100;

// USART

TXSTA = 0b00100100; // BRGH=1
RCSTA = 0b10010000;
SPBRG = baudrate; // Baudrate


Das problem ist dass einerseits, dass alle ADC von AD9 beeinflusst werden (an AD9 ist ein Sharp-Sensor, die anderen AD sind noch nicht alle connectet.

Und anderseits, wenn ich ADCON1 nur bis AD9 einstelle, ich die Digitalwerte von RF5 und RF6 trotzdem nicht lesen kann. Es liegt aber ein korrektes signal an.

hab keinen plan mehr deswegen, brauche aber die pins. RF5 kann ich analog einlesen, aber das signal wird dann von AD9 zu stark verändert. Alle ADC eingänge sind mit mindestens 270R angeschlossen, teilweise aber mit mehreren K (bis 100K). Könnte das das problem sein?

mfg. pointhi