Seltsames Problem mit PIC

Gast #329850
Lesenswert?

Ich habe eine Platine mit dem Mikrocontroller PIC18F452 aufgebaut.
Die Ports RE0 - RE2 sind als Eingänge definiert, an den Ports RD4 - RD6
sind 3 LEDs angeschlossen.
Das Problem:
Die LEDs gehen aus, wenn RE0 mit +5V verbunden wird. Wenn ich aber RE1
oder RE2 mit +5V verbinde, bleiben Sie weiter an.
Warum gehen die LEDs aus, wenn ich RE0 auf +5V lege?

P.S.: Die Eingänge sind jeweils mit einem 100k-Ohm Widerstand auf Masse
gezogen.
Gast #329852
Lesenswert?

Ich benutze den C18-Compiler.
Hier der Sourcecode:

void wait_zyklus(int d){ // Einfach eine bestimmte Zeit abwarten
  while(d) d--;
}

void main(void){
  ADCON1=0b00000111;
  TRISA=TRISB=TRISC=TRISD=TRISE=0;
  wait_zyklus(4);
  PORTA=PORTB=PORTC=PORTD=PORTE=0;
  wait_zyklus(4);
  TRISA=TRISB=TRISC=TRISD=TRISE=0;
  wait_zyklus(4);
  TRISD = 255-(16+32+64); // LEDs als Ausgänge
  PORTD = 16+32+64; // LEDs: an

  while(1); // Endlos-Schleife

  .. ganz viel anderer Code, aber wegen Endlosschleife überflüssig ..

}
Gast #329853
Lesenswert?

Ich sehe hier aber nirgend wo das du den Port E als Eingang definierst.


>>TRISD = 255-(16+32+64); // LEDs als Ausgänge
>>PORTD = 16+32+64; // LEDs: an
Ich würde das nicht so programmieren, denn damit verbrauchst du unnütz
Ressourcen. Schreibe es in Bit-Darstellung, dann kennt man sich auch
noch sehr gut aus und du sparst drotzdem Ressourcen.

>>wait_zyklus(4);
>> TRISA=TRISB=TRISC=TRISD=TRISE=0;
Die sollte eigentlich auch eher für den Hugo sein. Ausser du willst
Zeit verbratten.

Und wenn man einen Schreibzugriff auf die Ports bei den PIC18 macht,
sollte man auf die LAT-Register schreiben.
Gast #329863
Lesenswert?

Ich habe eine Elektronik in der Firma meines vaters, die die
Kälteanlagen und das ganze drumherum kontolliert. In der Firma gibt es
56 solcher Anlagen, an denen jewils 10 digitale Eingänge liegen. Weil
diese Elektronik allerdings nichts anzeigt (nur ne graue Box), sollte
an jeder Anlage ein kl. Display (1x16 Zeichen) angebracht werden.
Zusätzlich sollen die PICs dann noch über ein einfaches Bussystem mit
einem PIC in der Leistelle mit einem Grafikdisplay kommunizieren. Es
funktioniert auch alles wunderbar, nur das bei einer Störung auf Kanal
1 die LEDs ausgehen, was bei der Vorführung ziemlich negativ wäre, und
sich ja irgendwie lösen lassen muss.

LVP: aus
PORTA: mit 6poligen Dip-Schaltern für Adresse verbunden, entweder über
100k an Masse oder direkt an +5V

PORTB:
0 - 3: offen
4: 100k an Masse, oder 5V
5-6: offen
7: Widerstand 120 Ohm - LED - Masse

PORTC:
0-2 + 6: 100k an Masse, oder 5V
3+4: offen, werden extern auf Masse, oder +5V gezogen (für den
Datenverkehr)
5+7: offen

PORTD:
0-3 + 7: 100k an Masse, oder 5V
4-6: Widerstand 120 Ohm - LED - Masse

PORTE:
0+1: 100k an Masse, oder 5V
2: offen

P.S.:
Ich habe gerade gesehen, dass zwar die LEDs an PORTC (4-6) ausgehen,
aber die LED an PORTB (7) nicht !!!
Gast #329864
Lesenswert?

Die Configuration-Bits:

Oscillator: EC-OSC2 as clock out (habe Quarzoszillator mit 4. MHz zum
Test dran)
Osc. Switch Enable: Disabled
Power Up Timer: Enabled
Brown Out Detect: Disabled
Brown Out Voltage: 2,5V
Watchdog Timer: Disabled-Controlled by SWDTEN bit
Watchdog Postscaler: 1:128
CCP2 Mux: RB3
Stack Overflow Programm: Disabled
Low Voltage Programm: Disabled
Code Protect: alles Disabled
Gast #329865
Lesenswert?

In meinem Datenblatt zu dem PIC hat der PortE.0 noch eine Funktion in
Bezug zum "Parallel Slave Port", den Du aktiviert hast (TRISE.4).
Sieh mal im Datenblatt nach, da steht die Funktion von jedem Pin
aufgeführt und so ein 18F452 hat richtig viele Funktionsgruppen drin.
Gast #329866
Lesenswert?

In dem Datenblatt zum PIC18F452 steht für die Pins drin:

RE0: Parallel Read Control  IO  AN5
RD5: Parallel Slave Port Data / IO
RD6: Parallel Slave Port Data / IO
RD7: Parallel Slave Port Data / IO

>>In meinem Datenblatt zu dem PIC hat der PortE.0 noch eine Funktion in
Bezug zum "Parallel Slave Port", den Du aktiviert hast (TRISE.4).

Wo habe ich den aktiviert  ist der von vorherein aktiviert  wie
deaktiviere ich den?

(Würde ja sinn ergeben.. Am Read Control liegt +5V an und somit wird
RD0-7 auf Input geschaltet)
Gast #329868
Lesenswert?

Hm.. ich muss sagen... ich habe keine andere Idee... Aber die Lösung
würd mich dann aber auch interessieren ;-).

Frag doch bitte bei Fernando Heitor im Forum nach.
www.fernando-heitor.de dort wird dein PRoblem eher gelöst werden.

mfg SChoasch

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren