Vad ska man tänka på om man isolerar SPI genom optokopplare?
- 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
Jag tror att isolationsbiten är är avklarad. Köpte hem några ADUM1401:or och har allt uppkopplat. Det är bara programmeringen som antagligen kommer ta några veckor.
Ångrar dock inlägget ovan. Det var så dumt så hälften vore nog. Har suttit och grunnat på hur i hela friden ADC skickar potentialskillnaden digitalt och snöade in på det så djupt så det blev kortslutning.
Får se om det finns tid att fortsätta med koden ikväll.
Ångrar dock inlägget ovan. Det var så dumt så hälften vore nog. Har suttit och grunnat på hur i hela friden ADC skickar potentialskillnaden digitalt och snöade in på det så djupt så det blev kortslutning.
Får se om det finns tid att fortsätta med koden ikväll.
Re: Vad ska man tänka på om man isolerar SPI genom optokoppl
ISO1541
Nackdelen är strömförbrukningen på flera mA, men om du kan slå på den bara så du använder linan så hjälper det.
Nackdelen är strömförbrukningen på flera mA, men om du kan slå på den bara så du använder linan så hjälper det.
- 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
Tack för det AndersG. Ska läsa lite om den senare men tack för tipset!
EDIT: Ber om ursäkt men råkade posta fel inlägg här. Har flyttat det till den andra tråden under Programmering nu istället.
EDIT: Ber om ursäkt men råkade posta fel inlägg här. Har flyttat det till den andra tråden under Programmering nu istället.
- 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
Hmm, irriterande. Får inte isolatorn att lira riktigt.
Matar den med 5V på båda Vdd och 0V på båda Vss och skickar in en fin SPI-klocka på en ingång men inget kommer ut på motsvarande sida.
Får bli att läsa mera datablad och göra en femte obduktion på min "dead bug".
Är det någon som använt dessa innan och kanske har något tips om vad jag kan missat så här på småtimmarna så uppskattas det mycket.
EDIT: Ser att jag missat avkopplingen. Får testa detta imorrn.
Matar den med 5V på båda Vdd och 0V på båda Vss och skickar in en fin SPI-klocka på en ingång men inget kommer ut på motsvarande sida.
Får bli att läsa mera datablad och göra en femte obduktion på min "dead bug".
Är det någon som använt dessa innan och kanske har något tips om vad jag kan missat så här på småtimmarna så uppskattas det mycket.
EDIT: Ser att jag missat avkopplingen. Får testa detta imorrn.
Re: Vad ska man tänka på om man isolerar SPI genom optokoppl
Du har väl inte glömt Ve2 som är output enable?
Såg även att D-kanalen har omvänd riktning jämfört med övriga...
Såg även att D-kanalen har omvänd riktning jämfört med övriga...
- 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
Använder bara A,B och C-kanalerna med däremot Ve2 tolkade jag som att man kunde antingen dra hög eller lämna ej inkopplad för att slå på utgångarna.
Men jag tror du är på helt rätt spår ändå. Man ska nog alltid dra denna hög/låg, oavsett störiga miljöer eller inte. Ska testa ikväll men det måste nästan vara något sånt här.
Men jag tror du är på helt rätt spår ändå. Man ska nog alltid dra denna hög/låg, oavsett störiga miljöer eller inte. Ska testa ikväll men det måste nästan vara något sånt här.
Re: Vad ska man tänka på om man isolerar SPI genom optokoppl
Ja, det står iofs att man kan lämna Ve2 oansluten (förutom i väldigt brusiga miljöer) men helt klart värt att testa att sätta den hög.
- 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
Har tyvärr inte haft möjlighet att felsöka mer på det här för SPI-klockan har gett upp.
Det är mycket möjligt jag har ställt till med något mjukvarumässigt i mitt felsökande så nu har jag dragit ner koden till enbart initera SPI-modulen.
Tyvärr hoppar inte klockan igång ändå men jag har några frågor angående detta. Risken finns att det blir väldigt PIC-relaterade frågor.
EDIT: Tillägg. När jag drar igång controllern så går klock-utgången från låg till hög, men ingen klockpuls.
Det märkliga som sagt är att jag har sett en så fin klockpuls med skopet tidigare, men i felsökningssyfte har det ryckts i både tåtar och ändrats kod så nu måste jag börja om från början igen.
1. För att mäta klock-pulsen med skopet, är det ok att helt enkelt ha klock-utgången ej inkopplad till något annat och proba på pinnen?
Om det kräver någon slags pull-up eller att klockan matar mot någon, vad skule vara lämpligt?
(Jag har testat mot både ADC:n och okopplad utan framgång, men måste fråga för att få svart på vitt hur jag måste ha den kopplad)
2. Ni som satt upp SPI innan, behöver jag något mer än att konfigurera följande för att få modulen att hoppa igång:
- Klockan som utgång
- SDI som ingång
- SDO som utgång
- SS (Slave Select) som utgång
- Enabla SPI-modulen
- Sätta bitarna för om SPI ska vara Master eller Slave
- Sätta bitarna för klockhastighet
EDIT: Kan tillägga att det enda while-loopen gör nu är att rensa buffern så fort den flaggar för full. Annars inget annat. Detta var enda sättet att se något på skopet. Nu är det i alla fall några slags spikar som kan vara klockan...
EDIT2: Kan vara på väg att lösa det. Om jag ser till att mata buffern med nya värden hela tiden så får jag ut ett pulståg men ihop med en massa annat skit. Fortsätter jobba på det...
EDIT3: Pust. Skönt. Nu fungerar det igen. Tyvärr är det "bara" runt 20-30 sladdar som ska hitta sin position igen.
Lösningen hittade jag i databladet där det stod "When there is no more data to be transmitted, the master stops sending the clock signal and it deselects the slave.
Då jag bara försökte köra SPI:n utan att någon data laddades i buffern så startade inte klockan. Efter en liten interrupt som "fyller" buffern med 0:or när Skiftregistret flaggar så startade klockan.
Det är mycket möjligt jag har ställt till med något mjukvarumässigt i mitt felsökande så nu har jag dragit ner koden till enbart initera SPI-modulen.
Tyvärr hoppar inte klockan igång ändå men jag har några frågor angående detta. Risken finns att det blir väldigt PIC-relaterade frågor.
EDIT: Tillägg. När jag drar igång controllern så går klock-utgången från låg till hög, men ingen klockpuls.
Det märkliga som sagt är att jag har sett en så fin klockpuls med skopet tidigare, men i felsökningssyfte har det ryckts i både tåtar och ändrats kod så nu måste jag börja om från början igen.
1. För att mäta klock-pulsen med skopet, är det ok att helt enkelt ha klock-utgången ej inkopplad till något annat och proba på pinnen?
Om det kräver någon slags pull-up eller att klockan matar mot någon, vad skule vara lämpligt?
(Jag har testat mot både ADC:n och okopplad utan framgång, men måste fråga för att få svart på vitt hur jag måste ha den kopplad)
2. Ni som satt upp SPI innan, behöver jag något mer än att konfigurera följande för att få modulen att hoppa igång:
- Klockan som utgång
- SDI som ingång
- SDO som utgång
- SS (Slave Select) som utgång
- Enabla SPI-modulen
- Sätta bitarna för om SPI ska vara Master eller Slave
- Sätta bitarna för klockhastighet
EDIT: Kan tillägga att det enda while-loopen gör nu är att rensa buffern så fort den flaggar för full. Annars inget annat. Detta var enda sättet att se något på skopet. Nu är det i alla fall några slags spikar som kan vara klockan...
EDIT2: Kan vara på väg att lösa det. Om jag ser till att mata buffern med nya värden hela tiden så får jag ut ett pulståg men ihop med en massa annat skit. Fortsätter jobba på det...
EDIT3: Pust. Skönt. Nu fungerar det igen. Tyvärr är det "bara" runt 20-30 sladdar som ska hitta sin position igen.
Lösningen hittade jag i databladet där det stod "When there is no more data to be transmitted, the master stops sending the clock signal and it deselects the slave.
Då jag bara försökte köra SPI:n utan att någon data laddades i buffern så startade inte klockan. Efter en liten interrupt som "fyller" buffern med 0:or när Skiftregistret flaggar så startade klockan.
Re: Vad ska man tänka på om man isolerar SPI genom optokoppl
Betyder EDIT3 att allt funkar igen?
Re: Vad ska man tänka på om man isolerar SPI genom optokoppl
Det lättaste sättet att testa sådana här hårdvarugrejjor, är att köra ett litet program som bara klockar portarna med lämplig frekvens och kontrollera det med ett skop. Dvs, inte använda SPI-funktioner eller liknande.
Re: Vad ska man tänka på om man isolerar SPI genom optokoppl
Somjag förstårdet ja, eftersom SPI, till skillnad från SPI, drivs av en totempåle (I2C är open-drain)1. För att mäta klock-pulsen med skopet, är det ok att helt enkelt ha klock-utgången ej inkopplad till något annat och proba på pinnen?
- 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
@hanzibal: Japp, eller nja. PIC:en genererar en klocka som går igenom ADUM-isolatorn och sedan in ADC:n. Klockpulsen ser lite fulare ut när den kommer ut ur isolatorn men verkar ändå vara inom acceptabla nivåer för ADC:n.
ADC:n svarar sedan med ett värde som även det går igenom isolatorn och vidare till PIC:en.
Än så länge har jag bara en LED som indikerar att buffern fyllts på med data från ADC och sedan ytterligare en LED som indikerar att jag tagit emot 15-bitar.
Båda dessa LED:ar tänds men jag vet inte än exakt vad min variabel innehåller för värde. Orkade inte koppla in någon LCD eller konfigurera UART:en igår. Detta blir nästa steg.
Kommer även visa hur klocka och data-signalen ser ut in/ut genom isolatorn. Inte speciellt snyggt med tror det kan bero på att jag använder breadboard och lång kablar, kanske?
EDIT: Testade med Ve2 okopplad och mot plus och det funkade vilket som så det var säkert jag som hade rört till det i koden under felsökningen förra gången.
@TomasL: Lärde mig detta nu det hårda sättet. Tänkte också visa lite screenshots hur en vanlig I/O ser ut före/efter isolatorn.
@AndersG: Ah ok, det visste jag jag inte. Men mycket riktigt, det gick att mäta direkt på pinnen. Ville bara få detta svart på vitt så jag inte gjorde något mätfel.
ADC:n svarar sedan med ett värde som även det går igenom isolatorn och vidare till PIC:en.
Än så länge har jag bara en LED som indikerar att buffern fyllts på med data från ADC och sedan ytterligare en LED som indikerar att jag tagit emot 15-bitar.
Båda dessa LED:ar tänds men jag vet inte än exakt vad min variabel innehåller för värde. Orkade inte koppla in någon LCD eller konfigurera UART:en igår. Detta blir nästa steg.
Kommer även visa hur klocka och data-signalen ser ut in/ut genom isolatorn. Inte speciellt snyggt med tror det kan bero på att jag använder breadboard och lång kablar, kanske?
EDIT: Testade med Ve2 okopplad och mot plus och det funkade vilket som så det var säkert jag som hade rört till det i koden under felsökningen förra gången.
@TomasL: Lärde mig detta nu det hårda sättet. Tänkte också visa lite screenshots hur en vanlig I/O ser ut före/efter isolatorn.
@AndersG: Ah ok, det visste jag jag inte. Men mycket riktigt, det gick att mäta direkt på pinnen. Ville bara få detta svart på vitt så jag inte gjorde något mätfel.
- 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
Jo, och så lite screenshots.
Om jag förstår databladet rätt så är det märkligt att det ens fungerar så bra som det gör. Vad jag förstår så behöver isolatorn en "Minimum Pulse Width" på 1000ns till min ADUM1401ARWZ och men den hastigheten jag testar så går det liiiiiite fortare än så.
Slutsatsen är att det fungerar väldigt bra men jag har kört lite för snabbt för både isolatorn och ADC:n, 8 Mhz. Kommer lägga isolatorn åt sidan och nu fokusera på att behandlad ADC-datan.
Tack för hjälpen!
Klocka in (gul) och ut (blå). Observera den missade klockpulsen som jag tror beror på den för höga hastigheten.
Data in (blå) och ut (gul)
Klocka och data
Om jag förstår databladet rätt så är det märkligt att det ens fungerar så bra som det gör. Vad jag förstår så behöver isolatorn en "Minimum Pulse Width" på 1000ns till min ADUM1401ARWZ och men den hastigheten jag testar så går det liiiiiite fortare än så.
Slutsatsen är att det fungerar väldigt bra men jag har kört lite för snabbt för både isolatorn och ADC:n, 8 Mhz. Kommer lägga isolatorn åt sidan och nu fokusera på att behandlad ADC-datan.
Tack för hjälpen!
Klocka in (gul) och ut (blå). Observera den missade klockpulsen som jag tror beror på den för höga hastigheten.
Data in (blå) och ut (gul)
Klocka och data
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.