Gast
#2019612
Nabend zusammen,
Ich möchte auf PORTB eines p18f2620 auf jedem Pin als Test ein
Rechtecksignal ausgeben. Für alle Pins außer RB6,RB7 funktioniert das
auch wunderbar. Die Pins RB6,RB7 sind mit angeschlossenem ICD2 dauerhaft
0 ohne angeschlossenem ICD2 dauerhaft 1 (siehe Screenshot DB6,DB7).
Das Programm sieht wie folgt aus:
counter = 0;
while(1) {
counter++;
if (counter == 0) LATB = 0xaa;
if (counter == 32768) LATB = 0x55;
}
Die Konfiguration ist u.A. wie folgt:
CONFIG_3H = _PBADEN_PORTB_4_0__CONFIGURED_AS_DIGITAL_I_O_ON_RESET_3H
CONFIG_4L = _DEBUG_OFF_4L & _LVP_OFF_4L;
Die Ports werden wie folgt initialisiert:
// Disable all analog inputs and set analog port to digital i/o
ADCON0=0x00;
ADCON1=0x0f;
// Configure port A output (1=input, 0=output)
CMCON=0x07;
TRISA=0x00;
PORTA=0x00;
// Configure port B output (1=input, 0=output)
TRISB=0x00;
PORTB=0x00;
// Configure port C output
TRISC=0x00;
PORTC=0x00;
Habe es mit und ohne angeschlossenem ICD2 probiert.
Mit angeschlossenem Debugger sehe ich das zwar TRISB auf z.B. 0x55 geht
PORTB aber nur auf 0x15 bzw. TRISB=0xaa und PORTB nur auf 0x2a. Die
oberen beiden Bits sind also immer 0. Dies könnte ich noch verstehen da
der ICD2 mit dran hängt.
Ohne ICD2 messe ich PORTB ohne jede zusätzliche Beschaltung direkt am
Pic.
An RB6,RB7 ist weder ein Pullup noch ein Pulldown noch sonst irgendein
Bauteil dran.
Alle bisher hier im Forum vorgeschlagenen Lösungen zu ähnlichen
Problemen haben leider keinen Erfolg gebracht.
Was mache ich falsch?
