mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC 16 programmieren mit Hi-Tech C I/0


Autor: Eee E. (snake4)
Datum:

Bewertung
0 lesenswert
nicht 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:
void main(void)
{ 
 
  CMCON0 = 7;
  ANSEL = 0;

  TRISC5 = 1;
  TRISC3 = 0;
   
  while(1)
  {
    RC3 = RC5;
  }     
}

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

Autor: usuru (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welchen Oszillator nimmst Du? Intern, Quarz? Schwingt das Teil?

Wie sehen die config-bits aus?

Die LED hast Du sicher mit einem Vorwiderstand drangehängt.

Autor: Eee E. (snake4)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der PIC läuft, wenn ich RC3 = 1; mache geht die LED.

Wenn ich einen PIC18 mit dem MC18 programmiert dranhänge geht das ganze 
auch.

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und wo ist das Problem ???

Autor: Eee E. (snake4)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Dirk F (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Eee E. (snake4)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Davon hatte ich auch schon gelesen, hat aber nichts gebracht.

Also der PIC läuft, ich kann die LED blinken lassen. Der Schalter 
funktioniert an einem anderen PIC18 auch.

Muss ich vielleicht noch irgendwelche anderen Einstellung machen, damit 
das Ganze funktioniert?

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Eee E. (snake4)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab jetzt am Anfang ein RC5 = 0; eingebaut und jetzt gehts. Muss 
Mann das verstehen ??

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Eee E. (snake4)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: -GastXIV (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: PIC Nico (eigo) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du sollst ja auch nicht "dranlangen" =)

Autor: Eee E. (snake4)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Dirk F (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Eee E. (snake4)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: -GastXIV (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Eee E. (snake4)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
(-: Ein geschirmtes 230V Kabel habe ich erst einmal in meinem Leben 
gesehen. Aber mir scheint es gibt nicht direkt eine einfachere Lösung 
für das Problem.

Danke für eure ganzen Antworten.

MfG

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.