Jag har ett litet problem. Jag hade tänkt lära mig multiplexa och jag hittade MAX7219 multiplexer som jag tänkte använda. Tyvärr så vad det ingen MAX720 så jag kunde inte använda SPI med MAX7219. Dock finns det ett smidigt bibliotek som jag tänker använda. Biblioteket heter LedControl.
Jag är säker på att jag har kopplat rätt mellan displayen och multiplexern. Jag har även dubbelkollat men jag får det ändå inte att fungera. Däremot när jag bränner sketchen till AVR:en så blinkar ena 7-segmenten till. Så den verkar leva i alla fall. Men jag kan inte veta vad det är för fel. Jag tror att det kanske har med min kod att göra eller så är det kopplingen mellan multiplexern och AVR. Vad tror ni?
Jag har kopplat exakt som det ser ut här
Mellan V+ och iSet så är det ett motstånd på ca 10 kOhm, ca 9.8 kOhm enligt min multimeter.
10 ANODE A till SEG A 14
9 ANODE B till SEG B 16
8 ANODE C till SEG C 20
7 ANODE DP hoppar över
6 COMMON CATHODE hoppar över
5 ANODE D till SEG D 23
4 ANODE E till SEG E 21
3 ANODE G till SEG G 17
2 ANODE F till SEG F 14
1 COMMON CATHODE till DIG 0
// till AVR
DIN 1 till pin 9
LOAD 12 till pin 11
CLK 13 till pin 13
GND 4 och GND 9 till GND
V+ till VCC
Händer det något på DIN och CLK pinnarna?
Verkar LOAD hanteras korrekt? (Har du oscilloskop?)
Kanske testa med någon annan pinne än 9 (PB6, XTAL1/TOSC1).
Den lär vara beroende på fuses o.s.v.
Re: Hur startar man MAX7219 ? 7-segment
Postat: 26 oktober 2014, 16:59:05
av Al_Bundy
Vad ska det hända?
Nej. tyvärr jag har inget skåp
Jag flyttade SCK till pin 10 -> komplimerar -> hänger inget.
Men när jag komplimerar så lyser hela segmenten så det blir en 8:a
Jag flyttar 9:an till 8:an-> komplimerar-> händer inget.
Jag ska testa byta processor!
Re: Hur startar man MAX7219 ? 7-segment
Postat: 26 oktober 2014, 17:16:57
av sodjan
> Vad ska det hända?
På DIN, CLK o.s.v.? Tja, det bör ju vara något som
stämmer överens med databladet. Utan någon möjlighet
att "titta" på signalerna så blir det mest gissningar. Om du
inte har någon instrument så kan en LED och ett motstånd
fungera som indikering att det händer *något* i alla fall.
Jag vet inte vad komplimerar är så det är svårt att kommentera det.
Kompilera? Men det borde vara programladdningen som påverkar
kretsen, inte kompileringen i sig...
> Jag ska testa byta processor!
Nu så vet jag inte vilkan "histora" just det exempel som du använder
har, men generellt så är inte processorn i sig det första man misstänker.
Re: Hur startar man MAX7219 ? 7-segment
Postat: 26 oktober 2014, 17:20:30
av Al_Bundy
Nu har jag kopplat in
DIN -> pin 11 MOSI
CLK -> pin 13 SCK
LOAD -> pin 8 ICP1
Jag använder mig av en ATmega328P-PU
Jag tog bort GND från AVR till kopplingsdäcket och nu kan jag se en liten svag 1:a. Det verkar som SCK fungerar som jord? Men varför den lyser så svagt har jag faktiskt ingen aning om. Jag har ställt upp styrkan till max.
Orsak:
1. Min ATmega8 var inte helt friskt. Jag får titta närmare på den angående fuses senare
2. Jag hade kopplat GND från min ATmega till MAX7219.
Den lyser, men dock svagt.
Re: Hur startar man MAX7219 ? 7-segment
Postat: 26 oktober 2014, 17:28:45
av jesse
>Vad ska det hända?
Kommunikationen mellan AVR och MAX7219 är ett SPI-interface. Det som ska hända då är tre saker:
1) på CS pinnen (LOAD) ska det vara 'etta' ut hela tiden, utom när du skickar data till displayen, då ska det vara 'nolla'
2) på SCK ska det komma en skur med pulser när data skickas.
3) på DIN/MOSI ska det komma data - höga eller låga bitar beroende på vad som sänds.
Processorn är antagligen inget fel på om du kan programmera den.
Att det blinkar till beror antagligen på att LOAD-pinnen under programmering antar en odefinierad nivå. Du bör ha ett pull-up motstånd mellan LOAD och VCC. (mellan 10k - 100k passar bra). Det hjälper dock inte mot problemet du har.
Felet är här:
mydisplay.setIntensity(chip, intensity);
Du har bara ett chip, och det heter 0. alltså ska det vara:
// inputs: DIN pin, CLK pin, LOAD pin. number of chips
LedControl mydisplay = LedControl(11, 13, 8 , 1);
Men det har du antagligen eftersom du kunde se en svag etta.
Re: Hur startar man MAX7219 ? 7-segment
Postat: 26 oktober 2014, 17:34:44
av sodjan
AVR'en och MAX kretsen måste självklart ha gemensam jord/GND.
Jag är inte helt säker på vad du beskriver att du gjorde, men det
spelar ingen roll, gemensam jord/GND mst det vara i alla fall.
En sådan hä krets kan ha ganska hög toppströmförbrukning,
och förbrukningen kan variera väldigt kraftigt också. Har du
avkopplat med ordentligt med elektrolyt? Databladet säger
minst 10 uF men allt över det fungerar. Hur har du gjort?
Sen så har ju Jesse hittat något "intressant" också.
Har du inte kollat att koden var OK först?
> Allt satt i att jag hade kopplat min programmerare tillsammans med
> SCK, MOSI, MISO, men nu är dessa självständiga!
Du kanske skulle ha testad det innan du postade från början.
Sen så såg du ju 1'an (svagt) redan innan den ändringen, eller?
Var det egentligen något annat en felskrivningen i setIntensity?
Re: Hur startar man MAX7219 ? 7-segment
Postat: 26 oktober 2014, 17:38:58
av jesse
Jag brukar kunna ha programmeraren ansluten till samma pinnar när jag använder SPI-bussen. Har aldrig stört på något vis. Så länge programmeraren är passiv är det hög impedans på alla pinnar. Så det borde inte vara det felet.
Re: Hur startar man MAX7219 ? 7-segment
Postat: 26 oktober 2014, 17:39:26
av Al_Bundy
Hej!
Ja!
Jag har inte uppdaterat inför er.
Här är min kod:
Så mitt svar till dessa som har problem med samma som jag hade så får inte GND från processorn kopplas ihop med multiplexern's GND + att programmeraren ska ha fria pinnar.
1) på CS pinnen (LOAD) ska det vara 'etta' ut hela tiden, utom när du skickar data till displayen, då ska det vara 'nolla'
2) på SCK ska det komma en skur med pulser när data skickas.
3) på DIN/MOSI ska det komma data - höga eller låga bitar beroende på vad som sänds.
Så denna etta kan ses som 5 volts signal i ett skop?
Och SCK så är det blandat mellan 0:a och 1:a hela tiden i ett tidsintervall?
Jag har dålig koll på bitar. Jag vet att en bit är antingen sant eller falskt och 8 bitar är en bytes. Mer än så kan jag inte. Dock så kommer det en bok på Måndag som förklarar dessa saker.
Re: Hur startar man MAX7219 ? 7-segment
Postat: 26 oktober 2014, 17:47:16
av sodjan
> ...så får inte GND från processorn kopplas ihop med multiplexern's GND
Hur menar du? Självklart måste processorn och MAX kretsen ha gemensam GND!
> + att programmeraren ska ha fria pinnar.
Fick du inte en 1'a på displayen redan innan du bytte pinnar?
Det är svårt att säga vad som är orsak ock verkan (även för sig)
när man ändrar många olika sakar samtidigt.
Re: Hur startar man MAX7219 ? 7-segment
Postat: 26 oktober 2014, 17:51:37
av jesse
>Så denna etta kan ses som 5 volts signal i ett skop?
Ja, troligtvis. Men jag var inte säker på om din AVR går på 5V eller 3.3V, därför angav jag ingen spänning.
Oscilloskopet ställer man vanligtvis in så att det triggar på en förändring. T.ex när etta går till nolla (=negativ flank). Då kan man se på scopet vad som händer efter det (att det är nolla en kort stund och sedan återgår till etta).
Nedan ett exempel: Det röda strecket är SCK, D2 eller D3 är CS och D1 är data.
Re: Hur startar man MAX7219 ? 7-segment
Postat: 26 oktober 2014, 17:56:17
av jesse
Har man inget oscilloskop kan man använda andra knep för att hitta korta digitala pulser.
En vanlig lysdiod i serie med ett 1k motstånd t.ex.
Är det en negativ puls som ska detekteras kopplar man lysdioden mellan VCC och pinnen som ska testas. Är det en positiv puls kopplar man den mellan GND och pinnen.
Ett annat sätt att detektera datasignaler som jag ofta använder är att ha ett piezo-element, alltså en 'summer' (inte en sån som piper när man kopplar på ström, utan en som behöver ha tonen genererad av processorn). Då låter som ett kort knäpp när det kommer en puls, och som ett litet brus varje gång det kommer data. Man kan också lyssna på PWM-frekvenser och annat kul.
Re: Hur startar man MAX7219 ? 7-segment
Postat: 26 oktober 2014, 17:59:39
av Al_Bundy
jesse skrev:Jag brukar kunna ha programmeraren ansluten till samma pinnar när jag använder SPI-bussen. Har aldrig stört på något vis. Så länge programmeraren är passiv är det hög impedans på alla pinnar. Så det borde inte vara det felet.