Jag har två pinnar på PORTB som växlande ska vara var hög resp låg under aktiva tiden i en PWM-period. Under den passiva tiden är TRIS=1 för aktuella pinnar. Innan jag går in i aktiva perioden (Sätter TRIS till 0) vill jag växla pinnarnas värden.
Jag tänkte använda koden: PORTB^=OutTOGGLE; för att få tänkt funktion. OutTOGGLE är en mask som har värdet 0 vid alla bitar utom de aktuella pinnarnas positioner. Det kommer dock inte att funka eftersom PORTB är ingångar som har pullup när TRIS=1;
Har in några tips på hur man kan göra detta snabbt?
Ja, det finns ju inte så mycket annat än att strax innan TRIS sätts till 1 får du läsa portens status o spara i en variabel. Då kan du återställa senare när TRIS sätts till 0.
> strax innan TRIS sätts till 1 får du läsa portens status o spara i en variabel.
Om du *alltid* gör ändringar på PORTB via ett "skugg-register", så finns
det ingen anledning att först *läsa* PORTB, skugg-registret är ju redan
"rätt".
Sen är det helt rätt, PIC18 (med sitt LATB (output-latch-B)) register gör
detta lite enklare, det kan alltid läsas och man får alltid tillbaka det
som skrev förra gången, oavsett hur pinnarna råkar "stå" just nu...