Underligt fel med utgångarna på PIC16F871
Underligt fel med utgångarna på PIC16F871
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?
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?
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.
Ä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.
Just det.
Utför dessa två kommandon, sen skulle det fungera tror jag.
Kod: Markera allt
ADCON1 = 6
ADCON0 = 0
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?