PIC 16 programmieren mit Hi-Tech C I/0

OP #1870559
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
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
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
Gast
Initialisiere mal den ganzen Port mit RC = 0; (am besten nach TRISC3 = 
0;), auch ein Eingangs-Pin muss erst mal mit einem Schreibvorgang 
initialisiert werden.
Gast
Bei PICs müssen die Ports initialisiert werden. Auch wenn Pins als Input 
geschaltet sind, muss erst mal der gesamte Port einmal beschrieben 
werden. Ist halt so. Warum: frag Microchip.
OP
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
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.
OP
Mir ist das auch ehr aufgefallen weil nebendran eine 230V Leitung liegt 
und wenn auf der Last ist wird mein Eingang high. Da habe ich dann auch 
die 0.01V gemessen. Aber normal wird das doch erst bei 2,5V oder sowas 
high?
Gast
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
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
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

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.