PIC10F202 GP2 Input Problem

Gast #3638625
Lesenswert?
• ▲
▼
Hi,

Ich möchte die Pins GP0 und GP1 als Ausgänge, und die Pins GP2 und GP3 
eines PIC10F202 als Eingänge schalten. Die Eingänge habe ich noch 
zusätzlich mit 2 PullUp Widerständen beschalten. Komisch ist, dass sich 
der IC mit dem Taster an GP3 perfekt schalten lässt, ich bei GP2 aber 
einen Kurzschluss erhalte :/

Im Datenblatt habe ich natürlich schon gelesen, dass GP2 auch noch 
mehrere andere Funktionen hat, welche auch das TRIS-Register 
überschreiben, die habe ich soweit allerdings deaktiviert. Oder nicht?

Ich verwende MPLABX 2.00 und den XC8 Compiler.
Vielen Dank für eure Hilfe! :)

LG Markus
1
/* 
2
 * File:   main.c
3
 * Author: Markus
4
 *
5
 * Created on 26. April 2014, 00:08
6
 */
7
#include <pic10f202.h>
8
#include <plib.h>
9
#include <stdlib.h>
10
#include <xc.h>
11

12
#pragma config OSC = IntRC, MCLRE = OFF, WDTE = OFF, CP = OFF
13

14

15
//Flags
16
unsigned char rowOn = 1;
17
unsigned char stopLightOn = 1;
18
unsigned char stopLightBlinking = 0;
19

20
unsigned int ms = 0;
21
unsigned char ms2 = 0;
22

23
unsigned char buttonOld = 0;
24
unsigned char button = 0;
25
unsigned char pressed = 0;
26

27
void main(void)
28
{
29
    OSCCAL = 0b01111110; //max frequency;GP2/T0CKI/COUT applied to GP2
30
    OPTION = 0b11000101; //WakeUp on PinChange OFF; WeakPullUps OFF; TMR0 internal CLK; undefined; PS to TMR0; PS 1:64
31
    TMR0 = 131; //8ms to OF
32
    TRISGPIO = 0b00001100;
33
    GP0 = 0;
34
    GP1 = 1;
35

36
    while(1)
37
    {
38
        
39
        if(TMR0 < 131) //Overflow detected
40
        {
41
            ms2 = ms2 + 8;
42
            
43
            buttonOld = button;
44
            button = GP3; //0 wenn pressed
45

46
            if((buttonOld != 0) && (button == 0)) //started pressing button
47
            {
48
                ms = 0;
49
                pressed = 1;
50
            }
51
            else if((buttonOld == 0) && (button == 0)) //continue pressing
52
            {
53
                ms = ms+8;
54
            }
55
            else if((buttonOld == 0) && (button != 0) && (pressed == 1)) // stopped pressing
56
            {
57
                
58
                if(ms < 3000)
59
                {
60
                    if(rowOn == 1)
61
                        rowOn = 0;
62
                    else
63
                        rowOn = 1;
64
                }
65
                else if(ms < 6000)
66
                {
67
                    if(stopLightOn == 1)
68
                        stopLightOn = 0;
69
                    else
70
                        stopLightOn = 1;
71
                    
72
                    stopLightBlinking = 0;
73
                }
74
                else
75
                {
76
                    stopLightBlinking = 1;
77
                }
78

79
                pressed = 0;
80

81

82
            }
83

84
            TMR0 = 131;
85
        }
86

87
        if(rowOn != 0) //middle LED row
88
        {
89
            GP1 = 1;
90
        }
91
        else
92
        {
93
            GP1 = 0;
94
        }
95

96
        if(stopLightOn != 0) //break light
97
        {
98
            if(GP2 == 0) //BREAK
99
            {
100
                if(stopLightBlinking == 1)
101
                {
102
                    if(ms2 > 200)
103
                    {
104
                        if(GP0 == 1)
105
                            GP0 = 0;
106
                        else
107
                            GP0 = 1;
108

109
                        ms2 = 0;
110
                    }
111
                }
112
                else
113
                {
114
                    GP0 = 1;
115
                }
116
            }
117
            
118
        }
119
        else
120
        {
121
            GP0 = 0;
122
        }
123
    }
124
}
Angehängte Dateien:
Gast #3638789
Lesenswert?
• ▲
▼
Hi Max,

GP2&3 werden auch als Eingänge verwendet :) GP3 funktioniert auch 
problemlos, nur bei GP2 bekomme ich einen Kurzschluss. Ich programmiere 
den IC und steck in dann ohne programmer zu Schaltung (bereits prof. 
geätzt) dazu, der hat also keinen Einfluss auf die Funktion des ICs.
Programmiergerät ist ein PICkit 2.
Danke für deine Hilfe! :) konntest mir letztens auch schon helfen.

Lg Markus
Gast #3638814
Lesenswert?
• ▲
▼
Unter Kurzschluß vermute ich einmal eine Verbindung zwischen VCC und 
GND.

Da gibt es eigentlich nur zwei Möglichkeiten:
 Lötbrücke an R7 (Überbrückt den Widerstand)
 Lötbrücke am PIC und verbindet Pin2 mit Pin3.
#3638819
Lesenswert?
• ▲
▼
Markus schrieb:
> GP3 funktioniert auch
> problemlos, nur bei GP2 bekomme
Sry, ich habe irgendwie die ganze Zeit an GP3 gedacht.
Ich sehe im PIC nur Gründe, wieso der GP2 Output sein könnte: TRSBIT 
gelöscht, als FOSC/4 out konfiguriert. Die hast du beide richtig 
eingestellt. Comparator output hat nur der PIC10F204/206. Man könnte ja 
nur mal zur Sicherheit das CMCON0bits.COUTEN setzen.
Ist es sicher kein Hardware Fehler? Miss mal im Spannungslosen zustand 
den Widerstand zwischen GP2 und Vcc.
Gast #3639298
Lesenswert?
• ▲
▼
hagi schrieb:
> Unter Kurzschluß vermute ich einmal eine Verbindung zwischen VCC
> und
> GND.
>
> Da gibt es eigentlich nur zwei Möglichkeiten:
>  Lötbrücke an R7 (Überbrückt den Widerstand)
>  Lötbrücke am PIC und verbindet Pin2 mit Pin3.

Hab beides nochmal überprüft und das ist es offenbar nicht :/

Max H. schrieb:
> Comparator output hat nur der PIC10F204/206. Man könnte ja
> nur mal zur Sicherheit das CMCON0bits.COUTEN setzen.

Fehler: undefined identifier, geht leider nicht.
in der PIC10F202.h findet man zu einem Comparator auch keine einzige 
Zeile.

Max H. schrieb:
> Miss mal im Spannungslosen zustand
> den Widerstand zwischen GP2 und Vcc

da messe ich 6kOhm? Was sagt das aus?

Vielen Dank!
LG Markus

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.