PIC 16 programmieren mit Hi-Tech C I/0

OP #1870559
Lesenswert?

Hallo,

ich habe einen PIC16F688 und möchte da eigentlich nur lesen ob ein Pin 
High oder Low ist. Kann ja theoretisch nicht so schwer sein aber ich 
stehe ziemlich auf dem Schlauch, ich habe keine Ahnung was ich noch 
anderes machen könnte.
Hier der Versuch der mir am Besten scheint:
1
void main(void)
2
{ 
3
 
4
  CMCON0 = 7;
5
  ANSEL = 0;
6

7
  TRISC5 = 1;
8
  TRISC3 = 0;
9
   
10
  while(1)
11
  {
12
    RC3 = RC5;
13
  }     
14
}

An RC3 hängt eine LED die funktioniert und an RC5 hängt ein schalter der 
geht.
Vielleicht kann mir bitte jemand kurz helfen.

MfG
OP #1871197
Lesenswert?

Es passiert nix wenn ich auf den Schalter drücke. Das ist das Problem. 
Habe ich vielleicht irgendwie nicht so deutlich geschrieben.

Aber ich vermute mal es müsste theoretisch gehen? Also einen neuen PIC 
habe ich auch mal genommen, kaputt kann der also auch nicht sein.

Aber ich nehme dann mal an es stimmt, dass man RCx lesen und auch 
schreiben kann?
Gast #1871208
Lesenswert?

Hallo, hatt ähnliche Probleme beim 18F4580.
Versuch mal zuerst den Eingangspin auf eine Varriable zu lesen und dann 
um zweiten Schritt auf das Ausgangsbit zu schreiben.


 while(1)
  {
    unsigned char test;

    test = RC5;
    RC3 = test;
}

Gruß Dirk
OP #1871556
Lesenswert?

Ich hätte da noch ein weiteres kleines Problem das jetzt aufgetaucht 
ist.

Der Eingang wird schon vom dranlangen High. Also von ca 0.01V Man kann 
ja irgendwo einstellen was die Reference Voltage sein soll? Aber wenn 
man nix eingestellt hat müsste er doch die +5V nehmen?
Gast #1871589
Lesenswert?

Eee E. schrieb:
> Der Eingang wird schon vom dranlangen High.
Ist bei CMOS normal.


> Also von ca 0.01V Man

Du hast so ca. zwischen +/- 1000 Volt an den Fingern je nach Luftfeuchte 
ob du Wolle oder Leinen trägst Neonlampen in der Nähe sind usw.

> kann
> ja irgendwo einstellen was die Reference Voltage sein soll?

Ja, z.B. indem du die einen Masseanschluss zu deiner Haut machst und 
selbige Flächendeckend mit Salzwassser einsprühst ;-).

> Aber wenn
> man nix eingestellt hat müsste er doch die +5V nehmen?


Das ist bei TTL der Fall nicht bei CMOS.
Gast #1871619
Lesenswert?

Hallo, wie hast Du denn den Taster angeschlossen ?
Gegen Masso oder gegen +5V ?
Vergess auf keinen Fall den Pull-Up oder Pull-down Wiederstand.
Sonst hat der Pin bei offenen Schalter einen undefinierten Zustand.
Beim PortB kann man interne Pullups aktivieren.
Gruß Dirk
OP #1871625
Lesenswert?

Der Widerstand ist da, allerdings hat er 30k. Das reicht wenn auf meiner 
230V Leitung keine Last ist, wenn ich ihn weglasse wird der Pin dann 
auch schon high. So wird er nur high wenn Last drauf ist.
Ich kann den aber nicht kleiner machen weil von meinem Schalter so wenig 
Strom kommt dass dann alles abfließt und er wird garnichtmehr high.
Gast #1871634
Lesenswert?

Eee E. schrieb:
> Der Widerstand ist da, allerdings hat er 30k. Das reicht wenn auf meiner
> 230V Leitung keine Last ist,

Liegt das direkt nebeneinander?

> wenn ich ihn weglasse wird der Pin dann
> auch schon high.

Das ist normal

Eee E. schrieb:
> Da habe ich dann auch
> die 0.01V gemessen

Was nichts besagt da dein Messgerät
a.)eine anderen Eingangswiderstand hat
b.) das ganze eine Wechselspannung sein wird
    die dir nur als "high" erscheint

Eee E. schrieb:
> Ich kann den aber nicht kleiner machen weil von meinem Schalter so wenig
> Strom kommt dass dann alles abfließt und er wird garnichtmehr high.

"Zauberworte" sind dann  Schirmung und verdrillte Leitungen

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