PORT vs LAT ?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45168
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: PORT vs LAT ?

Inlägg av TomasL »

Sorry, jo jag jobbar enbart med PIC32.
Erik M
Inlägg: 1380
Blev medlem: 23 februari 2012, 18:34:39
Ort: Göteborg

Re: PORT vs LAT ?

Inlägg av Erik M »

Tack Janne, du beskrev felen utmärkt.
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43148
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Re: PORT vs LAT ?

Inlägg av sodjan »

> jo jag jobbar enbart med PIC32.

Jo, jag vet det. :-) Och det är en helt annan arkitektur.
De flesta här använder olika varianter av 8-bitars PIC12/16
och till något mindre del PIC18.
Erik M
Inlägg: 1380
Blev medlem: 23 februari 2012, 18:34:39
Ort: Göteborg

Re: PORT vs LAT ?

Inlägg av Erik M »

Så, för att sammanfatta, det skiljer, rent praktiskt, inget mellan PORT och LAT.
Den skillnad som skulle kunna finnas försvinner in i att det hursomhelst inte skulle gå att fånga den, då dess förlopp sker, gott å väl, inom tiden för en instruktion.
Givetvis givet att trögheten ligger inom utstakat intervall - vilket det gör om man följer anvisningarna.

Tack för hjälpen. :tumupp:
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43148
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Re: PORT vs LAT ?

Inlägg av sodjan »

Ja, rent praktiskt är det inget problem i 99 av 100 fall.
Sen finns det några fall som du kanske inte har tänkt på.
T.ex. då man i en applikation switchar enskilda pinnar mellan
in och utgång och samtidigt ändrar andra pinnar. T.ex om man
emulerar I2C eller liknande där olika noder ska kunna driva linjen.
Då kan det vara bra att köra via LATx så att ut-pinnen inte plötsligt
får ett okänt läge just innan man slår över till att driva linjen...
Nerre
Inlägg: 26655
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: PORT vs LAT ?

Inlägg av Nerre »

Ja, sammanfattningen är väl att när man skriver spelar det ingen roll.

Läser man LAT får man det värde man senast skrev till porten (d.v.s. LAT fungerar som en minnesadress, skriver du nåt till den kommer du kunna läsa ut samma värde).

Läser man PORT får man värdet på stiften i kontakten, om ett stift är hårt lastat eller kortslutet så kommer PORT inte att ger samma värde som man sist skrev.

Så när man ska läsa för att ändra på en enstaka bit så bör man läsa LAT, ska man läsa för att se vad signalen är så bör man läsa PORT.

Genom att skriva en etta till LAT och sen läsa från PORT kan du se om utgången är kortsluten eller inte. Är den kortsluten får du en nolla till svar.
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43148
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Re: PORT vs LAT ?

Inlägg av sodjan »

> ... så kommer PORT inte att ger samma värde som man sist skrev...

Om man nu inte faktist skrev samma värde som det är kortslutet till, då får man så klart "rätt" värde tillbaka... ☺️

Och varför skulle man få just en nolla tillbaka vid kortslutning? Det gäller ju bara ett fall av kortslutning.
Nerre
Inlägg: 26655
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: PORT vs LAT ?

Inlägg av Nerre »

Ok, jag formulerar väl om det då:

PORT kommer inte säkert att ge samma värde, eftersom last eller extern spänning på utgången kan göra att den hamnar på en annan nivån än man räknat med.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45168
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: PORT vs LAT ?

Inlägg av TomasL »

Notera att processorn alltid läser porten innan den skrivs, skriver man enstaka bitar, så kan det bli fel.
Kort sagt Skriv alltid i alla lägen till LAT, läs från PORT, så blir det alltid rätt.
Skriv svar