"Best-practice" för koppling mellan digitala kretsar?
- Klas-Kenny
- Inlägg: 11988
- Blev medlem: 17 maj 2010, 19:06:14
- Ort: Växjö/Alvesta
"Best-practice" för koppling mellan digitala kretsar?
Sitter och ritar på ett schema som innehåller bland annat en PIC och några logikkretsar. I mitt ritande slog mig en tanke, hur gör man egentligen på bästa sätt för att koppla emellan dessa?
Tänker främst på att undvika störningskänslighet (ska sitta borstade motorer mm. i närheten) och minska felrisker?
Tänkte mig Pull-down på utgångarna ifrån PIC'en för att vara säker på att inte få flytande ingångar innan PIC'en hunnit initiera utgångar och så, men vad mer bör man göra?
De signaler det handlar om är främst PWM på några kHz och sen några lågfrekventa signaler (max 10Hz eller så). Bör man montera några kondensatorer på signalledningarna? Kanske något seriemotstånd?
Tänker främst på att undvika störningskänslighet (ska sitta borstade motorer mm. i närheten) och minska felrisker?
Tänkte mig Pull-down på utgångarna ifrån PIC'en för att vara säker på att inte få flytande ingångar innan PIC'en hunnit initiera utgångar och så, men vad mer bör man göra?
De signaler det handlar om är främst PWM på några kHz och sen några lågfrekventa signaler (max 10Hz eller så). Bör man montera några kondensatorer på signalledningarna? Kanske något seriemotstånd?
Re: "Best-practice" för koppling mellan digitala kretsar?
Frågan är litet för bred för att man skall kunna ge ett egentligt svar. Låt sunda förnuftet råda...
- Klas-Kenny
- Inlägg: 11988
- Blev medlem: 17 maj 2010, 19:06:14
- Ort: Växjö/Alvesta
Re: "Best-practice" för koppling mellan digitala kretsar?
Jo, jag tänkte mest på lite allmänna tips, vad man bör tänka på, tumregler osv. 
Några specifika svar som "En sådan där, och en sådan där så blir det perfekt!" hade jag inte riktigt räknat med
Några specifika svar som "En sådan där, och en sådan där så blir det perfekt!" hade jag inte riktigt räknat med
Re: "Best-practice" för koppling mellan digitala kretsar?
Det beror som sagt vad på.... Om du tex skall mäta en långsamt varierande likspänning är en RC-filtrering inte helt fel tex.
- Klas-Kenny
- Inlägg: 11988
- Blev medlem: 17 maj 2010, 19:06:14
- Ort: Växjö/Alvesta
Re: "Best-practice" för koppling mellan digitala kretsar?
Fast nu handlade det inte om några analoga signaler, utan enbart digitalt mellan µC och logikkretsar...
Och de flesta känner ju mycket väl till att dessa ingångar (CMOS) är väldigt känsliga och kan reagera på det mesta, det vill jag undvika så mycket som möjligt.
Och de flesta känner ju mycket väl till att dessa ingångar (CMOS) är väldigt känsliga och kan reagera på det mesta, det vill jag undvika så mycket som möjligt.
Re: "Best-practice" för koppling mellan digitala kretsar?
Undvik parallella ledningar, avkoppla alla kretsars elförsörjning, jordplan, ev kan man tillgripa filtrering om signalens frekvensinnehåll är känt.
Re: "Best-practice" för koppling mellan digitala kretsar?
Eventuell känslighet hos CMOS kommer väl mest utav den höga inimpedansen om en ingång är oansluten. Har du en lågimpediv drivare (PIC-utgångar) som driver ingångarna så får du inte den effekten. Fast de kanske är känsliga på andra sätt än det också?
Vill du ha riktigt säkert mot störningar kanske det kan vara bra att köra på ett fyralagerskort så att du får ordentliga matningsplan?
Vill du ha riktigt säkert mot störningar kanske det kan vara bra att köra på ett fyralagerskort så att du får ordentliga matningsplan?
- Klas-Kenny
- Inlägg: 11988
- Blev medlem: 17 maj 2010, 19:06:14
- Ort: Växjö/Alvesta
Re: "Best-practice" för koppling mellan digitala kretsar?
Nu börjar det likna något 
Argtomte: Så höga krav att 4lagerskort med matningsplan krävs har jag absolut inte. Men bra tips ändå
Argtomte: Så höga krav att 4lagerskort med matningsplan krävs har jag absolut inte. Men bra tips ändå
Re: "Best-practice" för koppling mellan digitala kretsar?
Obruten jordplan!, obruten jordplan!! - upprepar igen - obruten jordplan!!!.
Detta innebär extra möda då du måste designa som om det vore enkelsidigt kort förutom att alla jordpunkter går mot jordplanet om du caddar för endast 2 lager.
Köper du korttillverkningen så är det minst 3-lagers med så få isolerade vior-hål som möjligt genom jordplanet och inte lagda så tätt att det blir isolerade linjer i jordplanet.
På så sätt får man en kontrollerad återledare på varje dataledare (som virtuellt skapas under varje dataledare i jordplanet mha. statisk och magnetisk koppling) vilket gör att kopplingen mot grannledarna är mindre med mindre överhörning då det annars utan återledare (eller åteledare gör en stor omväg) så försöker respektive ledare magnetiskt och statisk göra sina grannledare till återledare så gott det nu går och man får överhörning.
det är också därför man aldrig får göra en skåra i jordplanet där dataledare går över.
Alla in och utgångar bör ha någon form av lågpassfilter, helst LC-filter även om RC-filter är bättre än inget för att dämpa dom höga frekvenskomponenterna som snabba flanker alltid genererar inne i processorn och driverkretsarna utåt så att man inte får ut dessa på anslutande kabel och det strålar RF och man får bekymmer med dom senare EMC-testerna. Med 'alla' utgångar så inkluderar det också strömförsörjning, test och kommunikationsanslutningar så fort det dras på kabel utanför kortet eller har höga uppstick på kretskortet som agerar som antenner. Man får inte missa en enda sladdstump.
LP-filter på ledarna är också viktigt för att RF-strålning utifrån från tex mobiltelefon inte skall gå in och störa även om signalen i sig inte bär på några RF-störningar inneifrån. prutt-ljudet i billiga datorförstärkaren och högtalaren från GMSK-moduleringen från nallen är ju ganska välbekant och beror just på att det inte finns lågpass filtrering på ingångar utan signal utifrån når någon punkt där det LF-detekteras via någon diod och det förstärks och går ut som ljud i högtalaren.
Detta innebär extra möda då du måste designa som om det vore enkelsidigt kort förutom att alla jordpunkter går mot jordplanet om du caddar för endast 2 lager.
Köper du korttillverkningen så är det minst 3-lagers med så få isolerade vior-hål som möjligt genom jordplanet och inte lagda så tätt att det blir isolerade linjer i jordplanet.
På så sätt får man en kontrollerad återledare på varje dataledare (som virtuellt skapas under varje dataledare i jordplanet mha. statisk och magnetisk koppling) vilket gör att kopplingen mot grannledarna är mindre med mindre överhörning då det annars utan återledare (eller åteledare gör en stor omväg) så försöker respektive ledare magnetiskt och statisk göra sina grannledare till återledare så gott det nu går och man får överhörning.
det är också därför man aldrig får göra en skåra i jordplanet där dataledare går över.
Alla in och utgångar bör ha någon form av lågpassfilter, helst LC-filter även om RC-filter är bättre än inget för att dämpa dom höga frekvenskomponenterna som snabba flanker alltid genererar inne i processorn och driverkretsarna utåt så att man inte får ut dessa på anslutande kabel och det strålar RF och man får bekymmer med dom senare EMC-testerna. Med 'alla' utgångar så inkluderar det också strömförsörjning, test och kommunikationsanslutningar så fort det dras på kabel utanför kortet eller har höga uppstick på kretskortet som agerar som antenner. Man får inte missa en enda sladdstump.
LP-filter på ledarna är också viktigt för att RF-strålning utifrån från tex mobiltelefon inte skall gå in och störa även om signalen i sig inte bär på några RF-störningar inneifrån. prutt-ljudet i billiga datorförstärkaren och högtalaren från GMSK-moduleringen från nallen är ju ganska välbekant och beror just på att det inte finns lågpass filtrering på ingångar utan signal utifrån når någon punkt där det LF-detekteras via någon diod och det förstärks och går ut som ljud i högtalaren.
Senast redigerad av xxargs 15 januari 2012, 18:59:49, redigerad totalt 1 gång.
Re: "Best-practice" för koppling mellan digitala kretsar?
> Tänkte mig Pull-down på utgångarna ifrån PIC'en för att vara säker på att inte
> få flytande ingångar innan PIC'en hunnit initiera utgångar och så,
Det finns två problem som du undviker med det. Det ena är att PIC'en inte får
flytande/öppna ingånger. Det andra (och ofta värre) är att inte några externa
drivkretsar får odefinierade signaler. Det kan t.ex vara drivkretsar till motorer,
relän eller liknande som man inte vill att de ska gå "on" utan kontroll.
D.v.s, för att generallisera, vad händer med *resten* av kretsen när processorn
befinner sig i "reset" ? Och samma fråga under tiden som processorn befinner sig
under ICSP, men vill ju inte att programmeringssignalerna ställer till något.
På samma sätt är det (eller kan vara) viktigt att man sätter PORTx registren
*först* och sedan sätter pinnar till utgångar via TRISx registren för att
undvika "glitches" på pinnarna som kan störa inkopplad elektronik. D.v.s så
att alla prylar är "off" innan de faktiskt ska användas.
> få flytande ingångar innan PIC'en hunnit initiera utgångar och så,
Det finns två problem som du undviker med det. Det ena är att PIC'en inte får
flytande/öppna ingånger. Det andra (och ofta värre) är att inte några externa
drivkretsar får odefinierade signaler. Det kan t.ex vara drivkretsar till motorer,
relän eller liknande som man inte vill att de ska gå "on" utan kontroll.
D.v.s, för att generallisera, vad händer med *resten* av kretsen när processorn
befinner sig i "reset" ? Och samma fråga under tiden som processorn befinner sig
under ICSP, men vill ju inte att programmeringssignalerna ställer till något.
På samma sätt är det (eller kan vara) viktigt att man sätter PORTx registren
*först* och sedan sätter pinnar till utgångar via TRISx registren för att
undvika "glitches" på pinnarna som kan störa inkopplad elektronik. D.v.s så
att alla prylar är "off" innan de faktiskt ska användas.
- Klas-Kenny
- Inlägg: 11988
- Blev medlem: 17 maj 2010, 19:06:14
- Ort: Växjö/Alvesta
Re: "Best-practice" för koppling mellan digitala kretsar?
"Det andra (och ofta värre) är att inte några externa
drivkretsar får odefinierade signaler. Det kan t.ex vara drivkretsar till motorer,
relän eller liknande som man inte vill att de ska gå "on" utan kontroll."
Det är det som var den största tanken i mitt fall. Har några olika logik-kopplingar ut ifrån PIC'en, var av två är motorstyrning.
Finns ingen anledning att gömma mig, det som byggs är en "mini-sumo-robot". Och med tanke på att de ska stå stilla de första sekunderna ifrån start så vore det ju himla tråkigt om några konstigheter får den att susa iväg med en gång
Programmering bör inte vara några större problem, jag har gott om I/O på processorn i fråga så jag låter programmeringspinnarna användas enbart till programmering för att slippa risk för problem där.
Förresten, under tiden man programmerar en PIC, hur beter sig egentligen övriga I/O då?
Jag tycker mig ha sett diverse flimrande saker under tiden jag programmerat processorer med ICSP på olika konstruktioner...
Att sätta PORTx innan TRISx var ett väldigt bra tips, det har jag aldrig tänkt på förut!
drivkretsar får odefinierade signaler. Det kan t.ex vara drivkretsar till motorer,
relän eller liknande som man inte vill att de ska gå "on" utan kontroll."
Det är det som var den största tanken i mitt fall. Har några olika logik-kopplingar ut ifrån PIC'en, var av två är motorstyrning.
Finns ingen anledning att gömma mig, det som byggs är en "mini-sumo-robot". Och med tanke på att de ska stå stilla de första sekunderna ifrån start så vore det ju himla tråkigt om några konstigheter får den att susa iväg med en gång
Programmering bör inte vara några större problem, jag har gott om I/O på processorn i fråga så jag låter programmeringspinnarna användas enbart till programmering för att slippa risk för problem där.
Förresten, under tiden man programmerar en PIC, hur beter sig egentligen övriga I/O då?
Jag tycker mig ha sett diverse flimrande saker under tiden jag programmerat processorer med ICSP på olika konstruktioner...
Att sätta PORTx innan TRISx var ett väldigt bra tips, det har jag aldrig tänkt på förut!
Re: "Best-practice" för koppling mellan digitala kretsar?
Jag ser inte problemet i det hela. Om det är kretsar på samma mönsterkort och det inte är monsterstort är det bara att koppla ihop dom. Är det så att det finns störningar som kan utlösas av dessa signaler ska man analysera dom och se om det finns ett sätt att isolera dom från styrningen.
Jag har t.ex. just designad ett system som ska matas med fordons-el och som har kraftutgångar med transistorer. Där har jag gjort en "direkt" matning till kraftstegen (via en säkring bara) medan mikroprocessordelen drivs med en switch-regulator som pallar upp till 100V in. Det finns drossel mellan + in och + till regulatorn liksom det finns en mellan GND in och GND till processorn, det finns kondensatorer till att avkoppla och mönsterkortet är uppdelat i två sektioner med var sin groundplane.
Sedan är det en del pillande med att dra ledare rätt så att det finns ett "styvt" GP men vid frekvenser på ett par kHz är det ju inte så sjukt svårt att få det skapligt direkt.
En mycket viktig sak är att ha pull-down/pull-up på utgångar så att de är inaktiva under reset, grejen med att skriva portens värde först och sedan sätta den till utgång har jag använd en hel del år, just för att undvika roliga situationer.
Det är ganska sällan att medium-hastighet signaler som skickas mellan kretsar ställer till det, det är oftast för att man blandar in kraftelektronik nära dessa signaler som det går fel. Alltså är det knappast några standard sätt att göra det hela på - men det finns "standard" sätt att säkra mot störningar så att de inte ger problem på samma mönsterkort.
Ska man upp på mer än två lager på mönsterkortet måste det vara kännbart höga frekvenser eller känsliga signaler (kanske µC med låg driftspänning) eller att det blir så kompakt att man inte får plats annars. Jag har aldrig varit över två lager och har likaväl klarat alla EMC-tester i första försök, iaf. med den delen jag har ritat. En gång blev det fel pga. en inköpt nätdel som störde ut på inkommande 230Vac...
Jag har t.ex. just designad ett system som ska matas med fordons-el och som har kraftutgångar med transistorer. Där har jag gjort en "direkt" matning till kraftstegen (via en säkring bara) medan mikroprocessordelen drivs med en switch-regulator som pallar upp till 100V in. Det finns drossel mellan + in och + till regulatorn liksom det finns en mellan GND in och GND till processorn, det finns kondensatorer till att avkoppla och mönsterkortet är uppdelat i två sektioner med var sin groundplane.
Sedan är det en del pillande med att dra ledare rätt så att det finns ett "styvt" GP men vid frekvenser på ett par kHz är det ju inte så sjukt svårt att få det skapligt direkt.
En mycket viktig sak är att ha pull-down/pull-up på utgångar så att de är inaktiva under reset, grejen med att skriva portens värde först och sedan sätta den till utgång har jag använd en hel del år, just för att undvika roliga situationer.
Det är ganska sällan att medium-hastighet signaler som skickas mellan kretsar ställer till det, det är oftast för att man blandar in kraftelektronik nära dessa signaler som det går fel. Alltså är det knappast några standard sätt att göra det hela på - men det finns "standard" sätt att säkra mot störningar så att de inte ger problem på samma mönsterkort.
Ska man upp på mer än två lager på mönsterkortet måste det vara kännbart höga frekvenser eller känsliga signaler (kanske µC med låg driftspänning) eller att det blir så kompakt att man inte får plats annars. Jag har aldrig varit över två lager och har likaväl klarat alla EMC-tester i första försök, iaf. med den delen jag har ritat. En gång blev det fel pga. en inköpt nätdel som störde ut på inkommande 230Vac...
Re: "Best-practice" för koppling mellan digitala kretsar?
Tillverkarna brukar ha bra info.
Beror på vilken logik du ska koppla in dig på hur du ska designa.
http://www.elektronicaforum.nl/download.php?id=4787
http://www.fairchildsemi.com/an/AN/AN-314.pdf
Beror på vilken logik du ska koppla in dig på hur du ska designa.
http://www.elektronicaforum.nl/download.php?id=4787
http://www.fairchildsemi.com/an/AN/AN-314.pdf
Re: "Best-practice" för koppling mellan digitala kretsar?
Precis, därför är det litat svårt att svara generellt, annat än jordplan etc. Alla logikfamiljer har sina egenheter tex.Beror på vilken logik du ska koppla in dig på hur du ska designa.
Ett tips till OP är att lägga upp schemat och layouten här så kan vi kommentera.
- Klas-Kenny
- Inlägg: 11988
- Blev medlem: 17 maj 2010, 19:06:14
- Ort: Växjö/Alvesta
Re: "Best-practice" för koppling mellan digitala kretsar?
Nu tror jag mig fått klart den delen av schemat tråden främst handlar om så jag kan visa upp...
Om någon undrar, och inte orkar klura ut vad logiken är för, så är det till för att med enbart en PWM-utgång och en styr-utgång ifrån PIC'en kunna styra Si9986 till att köra motorn åt båda håll. Så logiken får alltså PWM'en att gå till antingen IN(a) eller IN(b) på Si9986, beroende på styrsignalen
Vad tror ni, någonting dumt, eller som kan/bör förbättras?
Förutom att schemat är något rörigt ritat på sina ställen, orkar inte fixa till det just nu
Exakt tillverkare/modell på logikkretsarna har jag inte bestämt, några rekommendationer?
Det enda jag funderar på är efter optokopplarna, är det tillräckligt att driva på detta viset? Två utav signalerna är PWM på några kHz (exakt frekvens har jag inte bestämt ännu) och de andra två kommer vara max säg 10Hz (väldigt sällan ens så mycket, tror jag).
Borde man kanske sätta en schmitt-trigger emellan, för att driva Si9986'orna lite bättre?
Och jag ska montera RC-snubbers över motorerna, de är bara inte inritade i schemat för att jag inte vill ha med dem i layouten sen..
Tillägg: Och JA, där är avkoppling på PIC'en, men kondensatorerna (en 100nF på varje ingång) är ritade vid Vss så de syns inte på bilden..
Om någon undrar, och inte orkar klura ut vad logiken är för, så är det till för att med enbart en PWM-utgång och en styr-utgång ifrån PIC'en kunna styra Si9986 till att köra motorn åt båda håll. Så logiken får alltså PWM'en att gå till antingen IN(a) eller IN(b) på Si9986, beroende på styrsignalen
Vad tror ni, någonting dumt, eller som kan/bör förbättras?
Förutom att schemat är något rörigt ritat på sina ställen, orkar inte fixa till det just nu
Exakt tillverkare/modell på logikkretsarna har jag inte bestämt, några rekommendationer?
Det enda jag funderar på är efter optokopplarna, är det tillräckligt att driva på detta viset? Två utav signalerna är PWM på några kHz (exakt frekvens har jag inte bestämt ännu) och de andra två kommer vara max säg 10Hz (väldigt sällan ens så mycket, tror jag).
Borde man kanske sätta en schmitt-trigger emellan, för att driva Si9986'orna lite bättre?
Och jag ska montera RC-snubbers över motorerna, de är bara inte inritade i schemat för att jag inte vill ha med dem i layouten sen..
Tillägg: Och JA, där är avkoppling på PIC'en, men kondensatorerna (en 100nF på varje ingång) är ritade vid Vss så de syns inte på bilden..
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
