PIC18F14K50 Pin-INT0 immer 0, obwohl 5V anliegen.

OP #2763389
Lesenswert?
• ▲
▼
*PIC18F14K50 - MPLAB v8.86*
1
void main (void)
2
{
3
  TRISA = 0b11111111;  //Alles als Eingang.
4
  LATA = 0b00000000;
5
  PORTA = 0b00000000;
6
  WPUA = 0b00000000;   //Pull-UP => OFF.
7

8
  TRISB = 0b11111111;  //Alles als Eingang.
9
  LATB = 0b00000000;
10
  PORTB = 0b00000000;
11
  WPUB = 0b00000000;   //Pull-UP => OFF.
12

13
  TRISC = 0b11101111;  //LED (RC4) als Treiber.
14
  LATC = 0b00000000;
15
  PORTC = 0b00000000;
16

17
  ANSEL  = '00000000'; //ADC => Digital.
18
  ANSELH = '00000000'; //ADC => Digital.
19

20
  while (1) {
21
  if (PORTCbits.RC0 == 0) {
22
    LATCbits.LATC4 = 1;         //LCD-Backlight => ON
23
  } else {LATCbits.LATC4 = 0; } //LCD-Backlight => OFF
24
  }
25
}

Mein Backlight-LCD leuchtet, obwohl direkt am PIN 16 
(RC0/INT0/AN4/C12IN+/Vref+) 4,8 Volt gemessen werden.
Also, nicht am Lötpad, sondern direkt am Gehäuse PIN.
Die 4,8 Volt sind mit einem 22k Pull-Up Widerstand angelegt. Vorher 
hatte ich einen 100k, aber die Änderung => 22k hat keine Änderung 
gebracht.

Alles andere funktioniert in meinem Programm, bis auf diesen PIN. Das 
obige Progrämmelchen ist nur ein kleines Testprogramm, welches auch so 
auf dem PIC laufen gelassen wurde. Ich habe den Prozessor auch schon 
ausgetauscht, aber er war nicht defekt. Es sei denn, dass beide defekt 
wären. Ich hatte aber noch nie einen defekten PIC gehabt, die sind 
scheinbar sehr robust.

Als ich vor ein paar Tagen anfing das Programm zu schreiben wollte MPLAB 
ein Update machen von 8.85 => 8.86, was ich zulies. Ich lasse ihn aber 
immer über das alte Programm updaten. Eine komplette Neuinstallation von 
MPLAB incl. C18 wäre noch die letzte Idee die ich dazu hätte. Bin noch 
davor zurückgeschreckt, weil das nicht unkompliziert war mit den ganzen 
versteckten Einstellungen.

Ich programmiere die PIC's seit etlichen Jahren, auch die INT-PIN's, 
aber so ein Problem hatte ich noch nie.

Bin am Ende meiner Weisheit, was kann das sein ?

Wahrscheinlich habe ich schon ein Brett vor dem Kopf und sehe das 
Problem nicht mehr.

Danke
OP #2763405
Lesenswert?
• ▲
▼
Ich glaube es nicht, 1 Minute nachdem ich dieses Topic abgesendet habe 
sah ich den Fehler:
1
  ANSEL  = '00000000'; //ADC => Digital.
2
  ANSELH = '00000000'; //ADC => Digital.

Das muss so aussehen:
1
  ANSEL  = 0b00000000; //ADC => Digital.
2
  ANSELH = 0b00000000; //ADC => Digital.

Jetzt funktioniert alles.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.