Pic12f675... ADCON
Pic12f675... ADCON
Har startat denna tråden redan en gång. Men jag kan banne mig inte hitta den.
Det är iaf problem med att jag inte får rätt på en krets. Om jag har en etta på input så är output ändå noll. Jag är dessvärre inte helt hundra på hur man stänger av A/D'n. Har bortkommenterat delay för att jag inledningvis bara vill få rätt ingångarna dvs Input=1 => Output=1.
#define Input GPIO.F1 //GPIO döps om för tydligare kod
#define Output GPIO.F2
#define Reset GPIO.F0 //Blir en ingång som nollar programmet
void main(){
ADCON0.F0 = 0x00; // A/D av
CMCON = 0x07; // Komparator av
TRISIO.F2 = 0; // utgång
TRISIO.F1 = 1; //IN
ANSEL.F2 = 0; // Digital
ANSEL.F1 = 0; // Digital
ANSEL.F0 = 0; // Digital
while(1){
Output = 0; //säkerställer att utgång alltid är noll
if (Input){
// delay_ms(6000); //vänta 6sek innan larm
Output = 1;
// delay_ms(10000); //larma i 10sek
}
}
}
Det är iaf problem med att jag inte får rätt på en krets. Om jag har en etta på input så är output ändå noll. Jag är dessvärre inte helt hundra på hur man stänger av A/D'n. Har bortkommenterat delay för att jag inledningvis bara vill få rätt ingångarna dvs Input=1 => Output=1.
#define Input GPIO.F1 //GPIO döps om för tydligare kod
#define Output GPIO.F2
#define Reset GPIO.F0 //Blir en ingång som nollar programmet
void main(){
ADCON0.F0 = 0x00; // A/D av
CMCON = 0x07; // Komparator av
TRISIO.F2 = 0; // utgång
TRISIO.F1 = 1; //IN
ANSEL.F2 = 0; // Digital
ANSEL.F1 = 0; // Digital
ANSEL.F0 = 0; // Digital
while(1){
Output = 0; //säkerställer att utgång alltid är noll
if (Input){
// delay_ms(6000); //vänta 6sek innan larm
Output = 1;
// delay_ms(10000); //larma i 10sek
}
}
}
Senast redigerad av newbadboy 29 december 2006, 10:32:25, redigerad totalt 1 gång.
- JimmyAndersson
- Inlägg: 26586
- Blev medlem: 6 augusti 2005, 21:23:33
- Ort: Oskarshamn (En bit utanför)
- Kontakt:
Att tråden försvann berodde på att vi nu ser forumet som ligger på den nya servern. Tyvärr är det en gammal backup som återställts, så därför saknas många trådar. Det står visserligen lite här och var att man inte skulle skriva något tills innan allt var klart.
Kul att det fungerar iallafall.
Men... kontaktfel? Är inte det en av de första grejjer man kollar när det är något som inte fungerar?
Kul att det fungerar iallafall.
Men... kontaktfel? Är inte det en av de första grejjer man kollar när det är något som inte fungerar?

Nästa fråga.
Jag vill internt koppla MCLR så jag slipper ett extra motstånd. Ser i databladet att en nolla ger detta. Men hur är syntaxen för detta har provat bla CONFIG.F5=0 men det gick inte bra.
samma har jag gällande den interan oscillatorn. Ser i databladet att man ska ange 100 men jag förstår inte riktigt hur man exakt skall skriva detta.
Jag vill internt koppla MCLR så jag slipper ett extra motstånd. Ser i databladet att en nolla ger detta. Men hur är syntaxen för detta har provat bla CONFIG.F5=0 men det gick inte bra.
samma har jag gällande den interan oscillatorn. Ser i databladet att man ska ange 100 men jag förstår inte riktigt hur man exakt skall skriva detta.
Internal MCLR (och mycket annat) styrs av CONFIG bitarna.
Kolla databladet tillsammans med dokumentationen för
verktyget du använder !!
Du kan *INTE* sätta CONFIG bitarna i din kod.
Antingen i någon meny i verktyget, eller med
ett direktiv.
Se också till att du är fullt medveten av konsekvenserna
av att disabla MCLR !!
Kolla databladet tillsammans med dokumentationen för
verktyget du använder !!
Du kan *INTE* sätta CONFIG bitarna i din kod.
Antingen i någon meny i verktyget, eller med
ett direktiv.
Se också till att du är fullt medveten av konsekvenserna
av att disabla MCLR !!
- JimmyAndersson
- Inlägg: 26586
- Blev medlem: 6 augusti 2005, 21:23:33
- Ort: Oskarshamn (En bit utanför)
- Kontakt:
"Se också till att du är fullt medveten av konsekvenserna
av att disabla MCLR !!"
Det tål att upprepas.
Själv kör jag *alltid* med extern MCLR.
När det gäller interna oscillatorn:
Gå in i menyn Projects -> Edit -> Device Flags och kryssa för "INTRC_OSC_NOCLKOUT".
MCLRE_ON ska vara ikryssad om du kör med *extern* MCLR. Det är lite dumt att MikroC/Basic använder den lösningen eftersom inställningarna kan försvinna om man har otur/är slarvig/har buggig mjukvara, men om man har koll på det (och särskillt då hur MCLRE är ställd) så fungerar det ganska bra. Personligen skulle jag visserligen hellre ha det i en fil som är lite mer synlig, men man kan inte få allt.
av att disabla MCLR !!"
Det tål att upprepas.

Själv kör jag *alltid* med extern MCLR.
När det gäller interna oscillatorn:
Gå in i menyn Projects -> Edit -> Device Flags och kryssa för "INTRC_OSC_NOCLKOUT".
MCLRE_ON ska vara ikryssad om du kör med *extern* MCLR. Det är lite dumt att MikroC/Basic använder den lösningen eftersom inställningarna kan försvinna om man har otur/är slarvig/har buggig mjukvara, men om man har koll på det (och särskillt då hur MCLRE är ställd) så fungerar det ganska bra. Personligen skulle jag visserligen hellre ha det i en fil som är lite mer synlig, men man kan inte få allt.

- JimmyAndersson
- Inlägg: 26586
- Blev medlem: 6 augusti 2005, 21:23:33
- Ort: Oskarshamn (En bit utanför)
- Kontakt:
Det finns tydligen:
(MikroC kör ju med samma "skal" så det är likadant där.)
"mikroBasic has several predefined flags for configuring hardware. These can be found in definition files (defs folder), specifying hardware settings for individual chips. SFR are sorted under categories: ___SFR (umbrella for all registers), ___CONFIG_OSC (oscillator), ___CONFIG_WDT (Watchdog timer), and ___CONFIG_BORPOR (brownout reset and powerontimer)."
Men det är allt som står om detta, åtminstone i hjälpfilen. Jag har inte fått det att fungera särskillt bra och har inte heller sett någon källkod som använder sig av detta. Läser man vidare i hjälpfilen så verkar det som att Mikroelektronika hellre pratar om ändringarna i menyn. Så, visst, möjligheten finns, men den verkar inte vara särskillt utvecklad. Frågan är även om det är inställningarna i källkoden eller i menyn som "gäller".
(MikroC kör ju med samma "skal" så det är likadant där.)
"mikroBasic has several predefined flags for configuring hardware. These can be found in definition files (defs folder), specifying hardware settings for individual chips. SFR are sorted under categories: ___SFR (umbrella for all registers), ___CONFIG_OSC (oscillator), ___CONFIG_WDT (Watchdog timer), and ___CONFIG_BORPOR (brownout reset and powerontimer)."
Men det är allt som står om detta, åtminstone i hjälpfilen. Jag har inte fått det att fungera särskillt bra och har inte heller sett någon källkod som använder sig av detta. Läser man vidare i hjälpfilen så verkar det som att Mikroelektronika hellre pratar om ändringarna i menyn. Så, visst, möjligheten finns, men den verkar inte vara särskillt utvecklad. Frågan är även om det är inställningarna i källkoden eller i menyn som "gäller".
> det var eg oscillatorn som jag helst ville köra intern i detta fallet.
Ja, det spar ju två pinnar som kan användas som I/O.
Det är nog absolut vanligast att man för 12F-serien med intosc
p.g.a av detta.
> Lugnar mig nog med intern mclr tills jag läst på lite mer.
Dessutom är det ju bara en pinne. Och som enbart kan vara ingång så
igentligen är det bara en halv pinne...
> När jag har MCLR och den andra ikryssad
OK. Vad står det där du har "kryssat" ?
Och vad är "den andra" ????
D.v.s vad är det *igentligen* du har valt ?
Ja, det spar ju två pinnar som kan användas som I/O.
Det är nog absolut vanligast att man för 12F-serien med intosc
p.g.a av detta.
> Lugnar mig nog med intern mclr tills jag läst på lite mer.
Dessutom är det ju bara en pinne. Och som enbart kan vara ingång så
igentligen är det bara en halv pinne...

> När jag har MCLR och den andra ikryssad
OK. Vad står det där du har "kryssat" ?
Och vad är "den andra" ????
D.v.s vad är det *igentligen* du har valt ?