PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Einlesen eines Tasters...



Spritey
27.01.2005, 18:47
Hallo Leute,
ich verwende einen PIC 16F630.

Ich verzweifle gerade an einem Problem. Ich habe einen Taster an PORTC.3 angeschlossen - einfach zwischen VDD und dem Pin.

Jetzt habe ich folgendes Programm geschrieben und mit CC5X komipliert:


#include <E:\CC5x\16F630.h> // Prozessor-Typ definieren


void main (void) // Start des Hauptprogramms
{
PORTC = 0;
PORTA = 0;
TRISA = 0b.000000;
TRISC = 0b.001000;



Sprungmarke:


if(PORTC.3 == 1)
PORTA.2 = 1;
else
PORTA.2 = 0;





goto Sprungmarke;

}


Die LED an PortA.2 ist irgendwie die ganze Zeit an und geht ab und zu mal aus und wieder an. Der Taster ist machtlos...

Ich versteh das nicht. Sprut hat genau so auch einen PIC geschaltet...
PS. Mit einem ASm-Code funktioniert es genauso wenig.

Kann mir jemand helfen?! Vielen Dank

PicNick
27.01.2005, 19:26
Da fehlt ein Pulldown am Pin, dadurch sieht er vor lauter Einsen den Nuller nicht. mfg robert

Goblin
28.01.2005, 08:53
genau!
*klugscheiss-modus ein*
der pulldown-widerstand (oder auch pullup, je nach belieben, macht nur im code nen unterschied) sorgt dafür, dass immer eine genau definierte flanke existiert, also high oder low.

das ganze sieht dann so aus:

http://wwwhomes.uni-bielefeld.de/szehe/pulluppulldown.JPG

der rote ist nen pullup und der grüne nen pulldown. ich hab mal nicht alle pinne des µcs drangepinselt.

ich denke damit sollte die sache klar sein!
*klugscheissmodus aus*

ich hab am anfang auch gerätselt, warum der taster nicht das macht, was ich will! ;)

gast: spritey
28.01.2005, 11:17
Ah.
Leider hat der PIC Pull-Up Modi nur am PORTA.
Gut werde das mal programmieren.
Vielen Dank für eure schnelle Hilfe!!!

greets

Fritzli
28.01.2005, 12:25
Hallo

Leider hat der PIC Pull-Up Modi nur am PORTA.

Die Meinung ist eigentlich einen externen Widerstand zu verwenden. Ok die internen gehen auch, aber meistens kann man die nur alle zusammen ein-/ausschalten.
So 10k sollten ok sein

Gruess
Felix