Läsa av ingång
Re: Läsa av ingång
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 =)
Re: Läsa av ingång
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.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 ..
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.
Re: Läsa av ingång
> 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 :
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 ??).
> 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
}
Jag har även rättat ett par stavfel ("blinka" rest "bilnka", spelade det ingen roll ??).
Re: Läsa av ingång
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.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 ?
Re: Läsa av ingång
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.