Bästa 5-18-dekodern?
Postat: 10 september 2013, 12:09:37
Bakgrunden till frågan är att jag hackar mig in i ett tangentbord som logiskt sett består av en massa strömbrytare med varsin diod, typ såhär
Trassligt nog har de designat 18 rader och 8 kolumner. Med ursprungskontrollern är det inget problem eftersom den har nog med IO-pinnar. Jag ska använda någon AVR-processor, helst så liten som möjligt. En AT90USB1286 (som på Teensy++) har pinnar nog, men är på tok för stor och onödigt kraftfull. Varken ATmega32u4 (Teensy) eller ATmega32u2 har tillräckligt med pinnar men de är mindre. Lika bra att använda den minsta, 32u2.
Så på något sätt behöver jag expandera antalet utgångar. Hittills har jag gjort det på två olika sätt. Först genom en 3-8-dekoder (HC238) som driver en kolumn hög i taget. Då var jag tvungen att använda externa pull-downmotstånd på alla 18 rader, det var jobbigt att löda.. Så jag kom på att jag kunde använda två stycken 4-10-dekodrar (HC42) istället. Då kan jag driva matrisen ät "rätt" håll och använda de inbyggda pull-upmotstånden, mycket smidigare.
Nu vill jag kunna miniatyrisera mera och tänkte använda olika QFN-paket. Det verkar inte finnas några 4-10-dekodrar som QFN. Så jag sitter och funderar på andra lösningar. Det finns 4-16-dekodrar, och jag skulle kunna driva 2 av raderna direkt från mikrokontrollern, men då går det plötsligt åt 7 pinnar (4 för att välja utgång på dekodern, 1 för att aktivera dekodern och 2 för de extra raderna). Med tre stycken 3-8-dekodrar klarar jag att driva 24 utgångar med bara 5 pinnar. Tre komponenter istället för två (eller en) är inte hela världen med det vore intressant att veta om det gick att göra "smartare".
Med ett par shift-register kan jag såklart minska antalet kontrollerpinnar till ett minimum, men jag tycker om enkelheten och den absoluta kontrollen med dekodrar.
Så vad jag egentligen vill fråga om är det smartaste sättet ni kommer på att driva 18 parvis uteslutande signaler (aktiv låg).
Trassligt nog har de designat 18 rader och 8 kolumner. Med ursprungskontrollern är det inget problem eftersom den har nog med IO-pinnar. Jag ska använda någon AVR-processor, helst så liten som möjligt. En AT90USB1286 (som på Teensy++) har pinnar nog, men är på tok för stor och onödigt kraftfull. Varken ATmega32u4 (Teensy) eller ATmega32u2 har tillräckligt med pinnar men de är mindre. Lika bra att använda den minsta, 32u2.
Så på något sätt behöver jag expandera antalet utgångar. Hittills har jag gjort det på två olika sätt. Först genom en 3-8-dekoder (HC238) som driver en kolumn hög i taget. Då var jag tvungen att använda externa pull-downmotstånd på alla 18 rader, det var jobbigt att löda.. Så jag kom på att jag kunde använda två stycken 4-10-dekodrar (HC42) istället. Då kan jag driva matrisen ät "rätt" håll och använda de inbyggda pull-upmotstånden, mycket smidigare.
Nu vill jag kunna miniatyrisera mera och tänkte använda olika QFN-paket. Det verkar inte finnas några 4-10-dekodrar som QFN. Så jag sitter och funderar på andra lösningar. Det finns 4-16-dekodrar, och jag skulle kunna driva 2 av raderna direkt från mikrokontrollern, men då går det plötsligt åt 7 pinnar (4 för att välja utgång på dekodern, 1 för att aktivera dekodern och 2 för de extra raderna). Med tre stycken 3-8-dekodrar klarar jag att driva 24 utgångar med bara 5 pinnar. Tre komponenter istället för två (eller en) är inte hela världen med det vore intressant att veta om det gick att göra "smartare".
Med ett par shift-register kan jag såklart minska antalet kontrollerpinnar till ett minimum, men jag tycker om enkelheten och den absoluta kontrollen med dekodrar.
Så vad jag egentligen vill fråga om är det smartaste sättet ni kommer på att driva 18 parvis uteslutande signaler (aktiv låg).