hallo iedereen,

ik heb een paar spullen in china besteld en zijn eindelijk binnen. nu heb ik wat led matrixjes besteld deze wil ik graag aansturen. ik maak gebruik van de pic16f690 (30 stuks gekregen :D) graag wil ik de schuifregister aansturen d.m.v. de spi , overal op internet gezocht maar kan geen goede source code vinden of uitleg. mischien moet ik een andere manier zoeken van de serieele verbinding maar deze leek mij het beste. weten jullie mischien een goede site? of heeft iemand goede uitleg, Daarmee maak je mijn dag weer goed:D ik programmeer in asm. alvast bedankt.

Apart, zat net wat op te zoeken over schuifregisters :P ik kwam deze tegen. Misschien heb je er wat aan?

bedankt voor je reactie,

het probleem is niet dat ik niet weet hoe het werkt. Het probleem is software matig de serieele verbinding werkend te krijgen. Normaal vraa ik geen source code ofzo, Maar wordt niet echt wijzer van de datasheet. ook omdat asm niet gemakelijk is(hobby). Maar bedankt voor je reactie ik wordt allicht wijzer:)

Een schuifreg is een simpel ding. Je zet een databit klaar, geeft een klokpuls, de data op de uitgangen schuift op en je nieuwe bit komt erbij.

Dus gewoon je data + clocklijn op het schuifregister aansluiten en dan gewoon data sturen.

Maar waarom spi en niet i2c?

bedankt voor je reactie,

helaas heb ik geen ervaring met communicatie protocollen dus weet ook niet hoe i2c werkt, maar als dat ook kan ga ik dat gelijk onderzoeken.
Ik om hier waarschijnlijk nog op terug ;)

ik heb informatie gezocht over het i2c protocol. Met dit protocol haal ik dan niet meer moielijkheden op me nek. Deze moet ingesteld worden op master/slave, adres geheugens enz.

[Bericht gewijzigd door rgbledje op (30%)]

Misschien dan kort iets over SPI.

http://www.the-foundation.be/images/info/spi/spi1.gif

SPI is een full duplex communicatie met 2 lijnen (MISO & MOSI). Een Slave Select lijn en een clock.
De clock wordt gestuurd door de master, die bepaalt dus wanneer er gecommuniceerd wordt.
Met de Slave Select lijn kan de master de slave wakker schudden maar je kan ook zonder deze lijn werken als je er voor zorgt dat de slave zowizo luistert door bvb de SS van de slave aan massa te hangen. (soms ook Chip Select genoemd)

Via de MISO (Master Input Slave Output) en MOSI lijnen worden 2 registers (1 van master en 1 van slave) "kop-staart" aan elkaar gehangen. Na 8 clock signalen die de master genereerd, zit nu de byte van de slave in het register van de master en omgekeerd. Wanneer een byte uitgewisseld is, wordt deze direct in een buffer geplaatst zodat er ook direct weer een byte kan uitgewisseld worden zonder dat de net onvangen byte verloren gaat. Je hebt dus steeds de tijd van 8 clock pulsen om de ontvangen byte uit de buffer te halen, doe je dit niet dan verlies je die doordat de nieuwe byte de oude overschrijft wanneer die in de buffer geplaatst wordt.

[Edit]
Gebruik je spi voor je 74HC595's aan te sturen, dan heb je de MISO en ss dus niet nodig. Het is maar dat je het principe door hebt van SPI.

als je je spi interface hebt geenabled en je sluit de data van je schuifregister aan op de MOSI en de clock op de SCK
dan kan je bij een AVR gewoon een byte in het UDR (spi register) schrijven en de AVR klokt het danrete snel in de 595.
moet je alleen de strobe nog handmatig toggelen volgens mij, of misschien kan die zelfs op de CS aansluiting

bedankt voor de goede uitleg hoe dit werkt,
dit is me nagenoeg duidelijk. De schuifregister luistert volgens mij altijd dus heb dit ook niet nodig. Bij de avr werkt dit zo maar is dat dan ook zo gemakkelijk bij de pic van microchip. het enige wat ik wil is eigenlijk een byte naar buiten sturen(en dus de clock). Daarnaast een pin om het schuifregister de waarde naar buiten te laten sturen. bedankt het wordt een stuk duidelijker.

ik heb van de week met een avr een schuifregistertje aangestuurd over spi, en dat is verrekte makkelijk :)

wat ik heb gedaan is de schuifregisters daisy-chainen (serial out van schuifregister naar data van volgend schuifregister, alleen de 1e hangt rechtstreeks aan de datapen van de microcontroller)

de SDO van je pic hang je aan de data pen van het schuifregister
de SCK van je pic hang je aan de klok van alle schuifregisters
een overige uitgang hang je aan de latch van alle schuifregisters.

output enable is active low bij de 595, dus die hang je aan de massa (of aan een uitgang van je pic als je wil schakelen / dimmen met pwm)

nu stuur je via spi een aantal bytes naar de schuifregisters toe, als je er 3 hebt aangesloten, stuur je eerst de byte voor de laatste in de ketting, want het is first in first out (1e binnengekomen byte wordt steeds doorgeschoven in de ketting, zodat de laatst binnengekomen byte altijd voorin blijft staan)

als alle data is verstuurt maak je de latch (ST_CP zo te zien in de datasheet)eventjes hoog, en dan weer laag, en als het goed is staat er nu data op de uitgangen van je schuifregisters :)

code voor de pic weet ik uiteraard niet, maar dat moet je wel kunnen vinden denk ik zo

bedankt:D ik heb nu al wat licht uit men matrix. Nu de seriele uitgang nog maken. ik houd jullie op de hoogte:D

groetjes

edit dubbel gepost

[Bericht gewijzigd door rgbledje op (80%)]