Läsa av ingång

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Bola
Inlägg: 133
Blev medlem: 16 november 2009, 10:28:41
Ort: Göteborg

Re: Läsa av ingång

Inlägg av Bola »

Jo tack det var en bra beskrivning, sökte på Pull-up/down-motstånd och fick fram att det man använder är en resistor och kondensator och om jag förstått din text rätt så är det alltså detta som finns inbygt i picen (man måste aktivera det såklart). Har inte testat detta än men det kändes som jag förstod, jag återkommer om det blir några fler frågor tack så länge iallfall =)
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: Läsa av ingång

Inlägg av jesse »

för nu när man tar lite med fingret på RA2 benet (ska ju vara en knapp där såklart) så blinkar led lampan till (antar att man ger ut lite spänning ..
Ja, fingret kan ge ut en spänning på vad som helst mellan -2000 och 2000 volt ungefär... Så det är rena turen om ingången inte förstörs om du gör så. Pinnen är inte känsligt för magnetfält, däremot spänningar.

En "spänning" på en digital ingång skall aldrig vara annat än ansluten till gnd ( = "nolla", ca 0 volt) eller +vcc ( = etta, vanligtvis +5 volt).

När den är oansluten (det är det som kallas svävande) så finns det ingen definierad spänning på pinnen. När du pillar på pinnen kanske du lägger på 15 volt. När du släpper så betyder det inte att du lägger på 0 volt. Det kan alltså fortfarande finnas spänning på ingången på grund av bl.a. kapacitans. Det är därför den inte alltid slocknar med en gång.

Om du ska koppla på en knapp som ger "etta" när du trycker på den måste också ansluta ett motstånd mellan ingången och gnd (t.ex 10 kiloohm). Detta motstånd ser då till att du verkligen får noll volt när knappen inte är nedtryckt.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Läsa av ingång

Inlägg av sodjan »

> Jo tack det var en bra beskrivning, sökte på Pull-up/down-motstånd och fick fram att det
> man använder är en resistor och kondensator och om jag förstått din text rätt så är
> det alltså detta som finns inbygt i picen...

Nej. Ingen kondensator. Pull-up har inget med någon kondensator att göra, den
(kondensatorn) används till annat och fanns den där så är det av andra orsaker.

Googla lite efter "open cmos inputs" så hittar du en hel del om varför man
aldrig ska ha öppna CMOS-ingångar. Och detta gäller helt generellt oavsett
om det råkar vara en PIC eller något annat. Det gäller *ALLA* CMOS-kretsar.
Det betyder också att du t.ex aldrig ska lämna oanvända pinnar på en PIC
som oanslutna ingångar. Antingen (enklast) programmerar man dom som utgångar
eller så får man koppla något till dom (t.ex pull-ups).

> Vad gör den svårläst?

Indenteringen (eller igentligen bristen på). Rent formellt är den sannolikt korrekt
och kompilatorn kan säkert läsa den, men nu var det ju *jag* som klagade... :-)

Sen kan man ju alltid ha synpunkter på vad en kommentar som denna tillför:
INTF=0; //Nollställer flaggan
Det är ju ganska uppenbart att INTF flaggan nollställs, eller hur ? :-)

Och detta :
TRISA=0x04; //Sätter RA2 till ingång
blir tydligare och mer lättläst om du skriver :
TRISA=b'00000100'; //Sätter RA2 till ingång

Om jag skulle "städa upp" din kod lite så skulle det bli något sådant här :

Kod: Markera allt

#define _XTAL_FREQ 4000000
#include <htc.h>

void interrupt blinka(void);
int a=0;

void main(){
   TRISA=b'00000100';    //Sätter RA2 till ingång
   TRISC=b'00000000';    //Sätter C portar till utgångar
   INTEDG=1;             //Interrupt on rising edge of RA2/INT pin
   GIE=1;                //Enablar Global interrupt
   INTE=1;               //Tillåter Interrupt på RA2/INT
   INTF=0;               //Nollställer flaggan
   RC0=a;                //Släckt så länge ingen interrupt har verkat (a=1 om det någongång skett en interrupt)
   while(1);
}

void interrupt blinka(void){
   a=1;                  //interrupt sätter a=1
   INTF=0;               //Nollställer flaggan
}
Notera indenteringen och att alla kommenterar är på samma "nivå".
Jag har även rättat ett par stavfel ("blinka" rest "bilnka", spelade det ingen roll ??).
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: Läsa av ingång

Inlägg av jesse »

Sen kan man ju alltid ha synpunkter på vad en kommentar som denna tillför:
INTF=0; //Nollställer flaggan
Det är ju ganska uppenbart att INTF flaggan nollställs, eller hur ? :-)
Vi tänker kanske på olika sätt... Alla kan ju se att du tilldelar en nolla till något. Men vad och varför. "Nollställer flaggan" förklarar den saken på ett utmärkt sätt, anser jag. Att det är fråga om en flagga, och att den återställs. Men detta kanske är uppenbart för alla er som redan känner till INTF.
sneaky
Inlägg: 1621
Blev medlem: 22 juni 2009, 18:38:42

Re: Läsa av ingång

Inlägg av sneaky »

Ang b'00000100' så kommer det nog inte fungera i Bolas fall då det ser ut som att han använder Hi-Tech C. 0b00000100 får det bli istället.
Skriv svar