www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

ATMega in HW SPI

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> AVR, LPC900, x51
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
xsyt
Član
Član



Pridružen-a: Sre 28 Maj 2008 22:19
Prispevkov: 1346
Aktiv.: 6.48
Kraj: Slov.Bistrica

PrispevekObjavljeno: Pet Dec 14, 2012 3:42 pm    Naslov sporočila:  ATMega in HW SPI Odgovori s citatom

Potrebujem pomoč pri komunikaciji na ATMega88PA in SPIju. Torej, komunikacija potuje le v eno smer in sicer na TLC5917, ki je 8 kanalni LED driver. Zatakne se mi pri sami ideji, kako bi izvedel zadevo s pomočjo HW SPI-ja. Samo pošiljanje in nastavitev SPIja ni problematično, ampak v tistih dveh dodatnih linij; LE (latch enable) in OE (output enable). Kako torej ti dve liniji usposobiti skupaj z clockom iz HW SPIja?

Koda:
   DDRB |= (1<<2)|(1<<3)|(1<<5);    //  SCK, MOSI and SS as outputs
   DDRB &= ~(1<<4);                 // MISO as input

   SPCR |= (1<<MSTR);               // Set as Master
   SPCR |= (1<<SPR0)|(1<<SPR1);     // divided clock by 128
   SPCR |= (1<<SPE);                // Enable SPI
   
   while(1){   
      SPDR = data;                 // send the data
      while(!(SPSR & (1<<SPIF)));  // wait until transmission is complete
....



Untitled2.png
 Opis:
Switching diagram
 Velikost datoteke:  13.3 KB
 Pogledana:  5510 krat

Untitled2.png



Untitled.png
 Opis:
Vezalni načrt
 Velikost datoteke:  20.33 KB
 Pogledana:  0 krat

Untitled.png



_________________
If you're in control, you aren't going fast enough
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
bpavsic
Član
Član



Pridružen-a: Pet 03 Apr 2009 20:45
Prispevkov: 354
Aktiv.: 1.79
Kraj: Maribor

PrispevekObjavljeno: Pet Dec 14, 2012 5:05 pm    Naslov sporočila:   Odgovori s citatom

LE in OE nimata "veze" z SPIjem. Sta le za prenos statusa LED diod iz shift-registra v nek notranji buffer ter za vklop izhodov.

Poskusi takole:

1. OE nastavi na 1, LE nastavi na 0
2. prenesi podatke preko SPIja (če imaš 1 čip, potem 8 bitov, če imaš več, pač Nx8 bitov - več jih lahko povežeš zaporedno SDO prejšnjega na SDI naslednjega).
3. pošlji impulz na LE (spremeni na 1 in nato nazaj na 0)
4. postavi OE na 0 (takrat se bodo LED diode prižgale tako, kot si poslal preko SPIja)

Poglej si timing diagram v datasheetu nad tem, ki si ga prilepil (Normal mode). Ta "Special mode" je za ugotavljanje ali lahko driver zagotavlja dovolj toka ter za fine nastavitve posameznih izhodov (balance).

p.s.: Če boš uporabljal več čipov, ne naredi iste napake, kot sem jo jaz (Problem s TLC5940) in na en izhod iz I/O kartice / uKontrolerja priklopi 25 podobnih driverjev Smile Po možnosti v skupni dolžini kabla 20m+.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
xsyt
Član
Član



Pridružen-a: Sre 28 Maj 2008 22:19
Prispevkov: 1346
Aktiv.: 6.48
Kraj: Slov.Bistrica

PrispevekObjavljeno: Pet Dec 14, 2012 10:26 pm    Naslov sporočila:   Odgovori s citatom

Koda:
In the Special Mode phase, the TLC5916/TLC5917 allows users to adjust the output current level by setting a
runtime-programmable Configuration Code. The code is sent into the TLC5916/TLC5917 via SDI. The positive
pulse of LE(ED1) latches the code in the shift register into a built-in 8-bit configuration latch, instead of the output
latch. The code affects the voltage at the terminal R-EXT and controls the output-current regulator. The output
current can be finely adjusted by a gain ranging from 1/12 to 127/128 in 256 steps. Therefore, the current skew
between ICs can be compensated within less than 1%. This feature is suitable for white balancing in LED color
display panels.

_________________
If you're in control, you aren't going fast enough
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
bpavsic
Član
Član



Pridružen-a: Pet 03 Apr 2009 20:45
Prispevkov: 354
Aktiv.: 1.79
Kraj: Maribor

PrispevekObjavljeno: Pet Dec 14, 2012 10:39 pm    Naslov sporočila:   Odgovori s citatom

Ja, saj znam prebrat v datasheetu. Ni pa mi povsem jasno, kaj tebi ne gre in sicer na splošno prižgat LEDik tako kot želiš ali pa jim fino nastavit maksimalni tok?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
xsyt
Član
Član



Pridružen-a: Sre 28 Maj 2008 22:19
Prispevkov: 1346
Aktiv.: 6.48
Kraj: Slov.Bistrica

PrispevekObjavljeno: Sob Dec 15, 2012 3:58 pm    Naslov sporočila:   Odgovori s citatom

Prižiganje samih posamičnih ledik ni problematično. TLC ne znam spraviti v ta special mode za nastavitev izhodnega toka.
_________________
If you're in control, you aren't going fast enough
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
bpavsic
Član
Član



Pridružen-a: Pet 03 Apr 2009 20:45
Prispevkov: 354
Aktiv.: 1.79
Kraj: Maribor

PrispevekObjavljeno: Sob Dec 15, 2012 5:29 pm    Naslov sporočila:   Odgovori s citatom

Glede na skico, ic bere vrednosti na vhodih na rising edgeu clocka. Za preklop v "special mode" moraš očitno najprej dat negativni pulz na OE (za 1 cikel postavit OE na 0), v naslednjem ciklu mora biti spet 1, še v naslednjem pa moraš aktivirat LE za en cikel, nato pa ga spet deaktiviraš.

V datasheetu (strani 20 zgoraj) ti piše, da ko ic detekta pulz OE (na 0) dolg točno 1 cikel ure, bo potem čakal 2 cikla v "mode switching" načinu. Če v tem času dobi pulz na LE (na 1), se bo preklopil v "special mode". Če ga ne dobi, se bo preklopil oz. ostal v "normal mode".

Ko si enkrat v special modeu, pošlješ 8 bitov (ali več, če imaš več icjev zaporedoma - najprej pošlješ za zadnji čip, nato za predzadnji itd..) in na koncu "potrdiš" s pulzom na LE (stran 21 spodaj).
Ko si to naredil, preklopiš nazaj v normal mode (torej pulz na OE in nato 2 cikla nič ne spreminjaš LEja).

Sem iskal pa nisem našel... Očitno lahko fino nastavljaš samo tok za celotni čip (pri TLC5940 lahko nastavljaš vsak izhod posebej - tam to imenujejo DOT correction in lahko zapišeš v register ali pa v EEPROM).
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> AVR, LPC900, x51 Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 493 dni


Powered by phpBB © 2001, 2005 phpBB Group