Underligt fel med utgångarna på PIC16F871

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Chrille
Inlägg: 523
Blev medlem: 24 september 2003, 23:54:12
Ort: Torekov
Kontakt:

Underligt fel med utgångarna på PIC16F871

Inlägg av Chrille »

Jag använder en PIC16F871 tillsammans med PicBasic Pro och det är något underlig fel med utgångarna A och E.
Om jag sätter alla utgångarna runt hela kapseln höga med följande kod så blir sista utgången av A hög men inte någon utav dom andra, alltså bara PORTA.5 blir hög. Det samma händer med utgångarna för E, här blir bara PORTE.2 hög.

High PORTA.0
High PORTA.1
High PORTA.2
High PORTA.3
High PORTA.4
High PORTA.5

High PORTE.0
High PORTE.1
High PORTE.2

Om jag vänder lite på ordningen av koden så det står så här så blir PORTA.0 och PORTE.0 höga och dom andra låga. Det verkar som att den utgång som sist i koden sätts hög blir det och dom andra blir det inte, just för A och E utgångarna bara.

High PORTA.5
High PORTA.1
High PORTA.2
High PORTA.3
High PORTA.4
High PORTA.0

High PORTE.2
High PORTE.1
High PORTE.0


Alla andra utgångar på PICen fungerar som dom ska och jag har provat med två olika PICar så det borde inte vara något fel på den.
Är det någon annan som också råkat ut för detta eller vet vad som är fel?
Användarvisningsbild
Icecap
Inlägg: 26645
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Det måste vara program-quirk!

Jag antar att det är någon form av BASIC och att den inte håller måtten!
Chrille
Inlägg: 523
Blev medlem: 24 september 2003, 23:54:12
Ort: Torekov
Kontakt:

Inlägg av Chrille »

Jag har också funderat lite på om det kan vara något lurt i PicBasic.

Någon som har PicBasic Pro och en PIC16F871 kanske har lust att testa och se om samma sak inträffar?
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Inlägg av cyr »

Hur är inställningen för analoga pinnar?

Är inte helt 100 på att det stämmer med dessa pinnar, men jag tror det har att göra med att pinnar som är inställda som analoga läses ut som noll - och att sätta en pinne hög är en "read-modify-write" operation.

Så om du gör en sån operation på en PORT med pinnar som är confade som analoga ingångar kommer de pinnarna att sättas till noll.
Användarvisningsbild
Icecap
Inlägg: 26645
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Just det.

Kod: Markera allt

	ADCON1 = 6
	ADCON0 = 0
Utför dessa två kommandon, sen skulle det fungera tror jag.
Chrille
Inlägg: 523
Blev medlem: 24 september 2003, 23:54:12
Ort: Torekov
Kontakt:

Inlägg av Chrille »

Ja nu fungerar det men vad betyder dom där två raderna med kod förutom att dom gör utgångarna digitala?
Är det ADCON0 för PORTA och ADCON1 för PORTE? Varför 0 och 6?
Grip
EF Sponsor
Inlägg: 159
Blev medlem: 16 oktober 2004, 15:44:09

Inlägg av Grip »

kolla i databoken för pic:en.
Står förklarat där.
Men det har med inställningarna på A/D omvandlaren att göra..
Användarvisningsbild
Icecap
Inlägg: 26645
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

ADCON1 = 6 stänger av A/D omvandlaren.
ADCON0 = 0 kopplar om porten till normalt läge.
Plockat rakt ur minnet men som tidigare: kolla databladet, det står där, jag har själv sett det!
Chrille
Inlägg: 523
Blev medlem: 24 september 2003, 23:54:12
Ort: Torekov
Kontakt:

Inlägg av Chrille »

Hittade det på sidan 79-80 i databladetmen är det inte tvärt om att ADCON1=6 ändrar portarna till digitala I/O och ADCON0=0 stänger av AD-omvandlaren?
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Inlägg av cyr »

Jo...
Användarvisningsbild
Icecap
Inlägg: 26645
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Nåja, OK....häng mig då :wink:

Jag plockade bara från minnet och en gammal fil.
Skriv svar