Vad ska man tänka på om man isolerar SPI genom optokopplare?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Vad ska man tänka på om man isolerar SPI genom optokoppl

Inlägg av sodjan »

> Då kommer den att gå '1' -> '0' -> '1' vilket kan vara olämpligt,

Man kan undvika det om man väljer OR för "set" och AND för "clear".

För att sätta en bit (bit 3 i detta fall):

PORTA |= 0b00001000;

För att "cleara" samma bit:

PORTA &= 0b11110111;

Här används konstanter. Om aktull bit ska vara dynamisk för man skapa
rätt bitmönster i ett register först och sedan anda/ora mot det.
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Re: Vad ska man tänka på om man isolerar SPI genom optokoppl

Inlägg av Magnus_K »

@Icecap:
Tack för det förtydligandet!

@sodjan:
Ahaaa, har även sett detta i annans kod innan men inte förstått anledningen eller funktionen. Känns som att man bara går från klarhet till klarhet.

På något sätt känns det som att det här var en nyckel till att kunna hantera/behandla/modifera registren på ett otroligt flexibelt och användbart sätt. Det har redan löst flera frågor jag har i mitt block om hur jag ska läsa ur vissa värden ur register och slå samman med andra etc.
Ja, väldigt tacksam är jag.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Vad ska man tänka på om man isolerar SPI genom optokoppl

Inlägg av sodjan »

Avslutningsvis så vill jag bara notera att om prestanda har en större
betydelse i det aktuella fallet, så kan det vara bra att kolla ASM
listningen från kompilatorn. Det som ser kompakt och "smart" ut
i C-koden kan generera mer kod än vad lite mer C-kod hade gjort.
Det är ju det som är själva meningen med kompilatorer, att skriva
lite egen kod och få mycket maskinkod tillbaka... :-)
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Re: Vad ska man tänka på om man isolerar SPI genom optokoppl

Inlägg av Magnus_K »

Hur osannolikt det än låter så hade den tanken redan slagit mig!
Det måste ju vara ett utmärkt sätt att kolla hur effektiv koden blir för att tex, som i mitt fall, få bra prestanda i en interrupt-rutin.

Får leveransen imorrn och ska knåpa med detta i helgen. Återkommer!
Användarvisningsbild
hanzibal
EF Sponsor
Inlägg: 2499
Blev medlem: 7 september 2010, 20:54:58
Ort: Malmö/Lund

Re: Vad ska man tänka på om man isolerar SPI genom optokoppl

Inlägg av hanzibal »

sodjan skrev:> Då kommer den att gå '1' -> '0' -> '1' vilket kan vara olämpligt,

Man kan undvika det om man väljer OR för "set" och AND för "clear".

För att sätta en bit (bit 3 i detta fall):

PORTA |= 0b00001000;

För att "cleara" samma bit:

PORTA &= 0b11110111;

Här används konstanter. Om aktull bit ska vara dynamisk för man skapa
rätt bitmönster i ett register först och sedan anda/ora mot det.
Det finns fall där inte heller detta ger önskat resultat beroende på typ av uC och hur porten är konfigurerad (t.ex. vid open drain eller liknande). Då funkar det bara genom att ha ett globalt skuggregister i RAM som man alltid först manipulerar och sen skriver till porten. Denna lärdom blev mig en gång mycket dyrköpt :D
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Vad ska man tänka på om man isolerar SPI genom optokoppl

Inlägg av sodjan »

OK... :-)

För att sätta en bit (bit 3 i detta fall):

LATA |= 0b00001000;

För att "cleara" samma bit:

LATA &= 0b11110111;
Användarvisningsbild
hanzibal
EF Sponsor
Inlägg: 2499
Blev medlem: 7 september 2010, 20:54:58
Ort: Malmö/Lund

Re: Vad ska man tänka på om man isolerar SPI genom optokoppl

Inlägg av hanzibal »

Antar att de där är portlatcharna *på PIC* och då existerar ju inte problemet.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Vad ska man tänka på om man isolerar SPI genom optokoppl

Inlägg av sodjan »

Ja, jag kan inte hålla reda på vad var och en kör.
Jag tror inte det har framgått i denna tråd...
Användarvisningsbild
Icecap
Inlägg: 26647
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Vad ska man tänka på om man isolerar SPI genom optokoppl

Inlägg av Icecap »

Det finns lite olika sätt att lösa det på, vilket sätt som passar bäst får avgöras från situation till situation. TS verkar iaf. ha sett ljuset och det är det viktiga!
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Re: Vad ska man tänka på om man isolerar SPI genom optokoppl

Inlägg av Magnus_K »

Nu kommer vi antagligen tillbaka till att jag inte kan det digitala men ytterligare en sak jag inte förstår:

A/D-convertern jag köpt är som sagt en MCP3201.
Jag ska mata denna med Vdd, Vss, Vref, IN+ och IN-. Ut ska jag sedan få spänningen digitalt över SPI.

Ett exempel. Matar med:
  • Vdd = 5V
    Vss = 0V
    Vref = 5V
    IN+ = 3V
    IN- = 0V
Enligt denna formeln
Formel.JPG
så ska ovan data generera en "Digital output code" på "2457,6".
Det är detta jag inte förstår. Hur skrivs 2457,6 binärt? Eller snarare, vad är det för värde som kommer ut?

Har säkert läst detta i databladet men inte förstått.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
Andax
Inlägg: 4379
Blev medlem: 4 juli 2005, 23:27:38
Ort: Jönköping

Re: Vad ska man tänka på om man isolerar SPI genom optokoppl

Inlägg av Andax »

Du får ut ett heltal. AD har inga decimaler. Har du en 12-bitars AD så får du ut ett tal mellan 0 och 4095 där 0 är vid 0V in och 4095 är vid Vref in.
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Re: Vad ska man tänka på om man isolerar SPI genom optokoppl

Inlägg av Magnus_K »

:doh:
Tack Andax.
Nu ska jag gå och dra något gammalt över mig.
Användarvisningsbild
AndersG
EF Sponsor
Inlägg: 9115
Blev medlem: 25 februari 2008, 17:10:58
Ort: Mariehamn
Kontakt:

Re: Vad ska man tänka på om man isolerar SPI genom optokoppl

Inlägg av AndersG »

Orkade inte läsa igenom alla inlägg, men jag har en konstruktion någonstans med isolerad SPI/I2C, skall kolla vad jag använde där...
Användarvisningsbild
Icecap
Inlägg: 26647
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Vad ska man tänka på om man isolerar SPI genom optokoppl

Inlägg av Icecap »

Magnus_K: detta är just problemet med AD-omvandling. Man kan bara få heltal varför man tappar värden som ligger mitt emellan. Man kan delvist lösa detta vid att ha en AD men fler bit men dessa kostar, tar tid för en omvandling och har andra problem.

Så "bäst möjlig" kan ha få bit men vara satans snabb - eller ha många bit och vara långsam. Har man riktigt bra med pengar kan man köpa snabba omvandlare med många bit.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46974
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Vad ska man tänka på om man isolerar SPI genom optokoppl

Inlägg av TomasL »

Du kan ju också köra det hela genom en isolerad RS232 eller RS485-krets utan problem.
Skriv svar