Sida 1 av 2
MAX7219 + ATtiny2313
Postat: 13 november 2005, 23:43:11
av speakman
Någon som fått igång en MAX7219 nångång?
Har kopplat upp en på mitt kopplingsdäck.
Har försökt AVR:ens egna SPI-stöd, men har slutligen övergått till ordinär bit-bangen för att vara på den säkra sidan.
Har numer kopplat in scopemetern och vad jag ser så är signalerna helsjysst enligt specen i databladet.
Klockar även "tillbaka" bitarna genom att rycka i klockpinnen ytterligare 16 ggr, och precis det jag skickar in får jag tillbaka - okej så långt.
Men några siffror el. dyl. vill inte dyka upp på min 4x7-segmentsdisplay!
Börjar nästan klura på om drivern (7219) är trasig?
Någon som har erfarenhet av den?
Mvh
speakman
Postat: 14 november 2005, 10:05:23
av vfr
Det finns inte någon "driver enable" eller liknande signal som måste aktiveras för att tända upp ?
Bara en tanke, vet inget om kretsen i sig.
Postat: 14 november 2005, 16:47:34
av speakman
Njae, den har ju Slave Select för adressering, men inget annat.
I startläget är den "nollställd" i registren, vilket innebär att den är i Shutdown Mode, och måste sättas till Normal Operation Mode via uC:n.
Men min lyser, dock på samtliga segment på samtliga siffror (har 4st inkopplade).
Den blinkar i samband med initieringen (har lagt ett par ms fördröjning mellan varje), så den verkar ju reagera. Men inte på det vis jag vill!
Får t.ex. aldrig annat än alla segment att lysa.
Mvh
speakman
Postat: 14 november 2005, 18:39:29
av vfr
speakman skrev:Njae, den har ju Slave Select för adressering
Antar att det är CS (chip select) som du menar. Hur hanterar du den då?
Eftersom den (CS) även heter LOAD i databladet så skall den förmodligen pulsas efter att du shiftat in datan i shiftregistret. Gör du det?
Postat: 14 november 2005, 19:43:10
av speakman
Ja, Chip Select. Enligt databladet ska shiftregistret läsas in när LOAD/CS går hög, alltså LOAD = 1.
Tror du den ska pulsas ytterligare en gång på något vis?
Mvh
speakman
Postat: 14 november 2005, 19:49:19
av Icecap
Om den heter så bör den rent logisk dras låg, datan skickas och sedan ska den skifta till hög. Sen om fler data ska skiftas in är det en upprepning som gäller.
Postat: 14 november 2005, 20:03:50
av vfr
Precis. Låg medan du shiftar in data i shiftregistret. Efter att du shiftat in så skall den gå hög så att shiftregistrets data laddas över i latcharna. Sedan måste den ju tillbaka till låg någon gång...
Postat: 14 november 2005, 23:12:03
av Pjoms
Nja, det räcker att ge en puls (0-1-0) på LOAD för att ladda upp shiftregistret till displayerna. Vad jag fattar så finns det en annan variant på kretsen där samma signal heter CS och funktionen är inverterad...
Ingen extra väntetid behövs så länge du håller dig under kretsens maxfrekvens på 10MHz (= min 0.1us i pulstid).
Har du initierat kretsen rätt?
Börjar du klocka ut MSB?
Har du stängt av DisplayTest?
Jag lekte en del med Max7219 för snart ett år se'n, så mycket har man säkert glömt... Men jag kollar gärna efter i min kod om det är nå't du undrar över.
Postat: 15 november 2005, 07:53:50
av speakman
Okej, det är jag som e kass på å förklara.

Om man kollar ett par sidor ner i databladet så ser man precis hur pinnarna ska "ryckas"...
När jag ska skriva till kretsen, så sänker jag LOAD/
CS, sätter värdet på datapinnen (MSB först), pulsar klockan (kretsen läser in på stigande flank). Detta görs 16 ggr = 16 bitar.
Efter avslutad sekvens ska LOAD/
CS återigen gå hög, och shiftregistret i kretsen läses då in.
Vad det gäller initieringen så sätter jag samtliga register till lämpligt värde, bara för att vara på säkra sidan. Har även en längre delay mellan varje register jag sätter, så man ska se skillnad på displayen.
Men den beter sig helt ologiskt. T.ex. sätter jag Shutdown Register till Normal Operation först, och redan då tänds alla segment på alla siffror.
Har mätt upp signalerna med scopemeter, och dom ser tokfina ut!
Helt förbryllad... Ny 7219 är på gång, så jag får avskriva den tesen.
Mvh
speakman
Postat: 15 november 2005, 08:59:22
av Pjoms
Har du avkopplingkondensator på kretsen? Jag fick mycket lustiga fenomen när jag "glömde" 100n vid test...
Postat: 15 november 2005, 16:53:28
av speakman
Har konstruerat såsom "Typical"-exemplet, och inget mer.
Var menar du att man skulle koppla av?
Dom rekommenderar att ha en 1uF (eller var det 10?) nära VCC för att slippa flipp på matningen, men om någon 100nF har jag missat.
Mvh
speakman
Postat: 15 november 2005, 23:04:51
av Pjoms
Den ska sitta mellan +5V och jord, nära kretsen.
Saxat från sid 10 i databladet:
To minimize power-supply ripple due to the peak digit
driver currents, connect a 10μF electrolytic and a 0.1μF
ceramic capacitor between V+ and GND as close to
the device as possible.
Utan denna 100nF konding spårade min krets ur totalt när man började tända upp displayerna.
Postat: 15 november 2005, 23:30:24
av speakman
Ah, hur kunde jag missa?! Fick iaf med ena kondingen!
Men hade ingen 0,1uF hemma, får leta fram en under morgondagen!
Tack så länge!
Mvh
speakman
Postat: 18 november 2005, 07:54:57
av speakman
Nu har jag samtliga kondingar på plats, även lite mellanvärden för säkerhetsskull. Fortfarande samma...
Dock har jag konstaterat att registerskrivningarna verkar fungera. Fadear nu intensiteten, och det ser bra ut.
Problemet är nu att det helt enkelt inte dyker upp några siffror på displayen!
Antingen lyser alla segment, eller så lyser bara punkterna. Dock lyser det exakt lika på alla siffroir! Får det inte till att bli olika mönster på olika siffror, oavsett vad jag skriver till de olika sifferregistren.
Om man sätter Decode On på siffror 1-4 så är det väl bara å skriva 1 för en 1:a, 2 för en 2:a o.s.v.?
Hade någon kod man fick titta på å se om jag tänkt rätt?
Mvh
speakman
Postat: 18 november 2005, 15:57:42
av Pjoms
Jag använde ett antal MAX7219 till en DotMatrix skylt så jag använde DecodeMode=0, fri styrning av alla segment. Har aldrig testat nå't annat DecodeMode.
Jag har programmet i PicBasic Pro, så det är kanske inte så lika din applikation, men jag kan plocka fram nå't om du vill.