eagle987
Eerst waren het atomen, dan waren het protonen, neutronen, elektronen, nog later waren het quarks en nu blijken het snaren te zijn...
Dag iedereen,
m'n klok is af, dus is het tijd voor een nieuw project 
ik had het idee om een lichtkrant te maken die beschikt over 10 karakters. Ik ben van plan om dot matrixen te kopen bij velleman HE RED en 100mm groot.
Alsook wil ik alles met een microcontroller programmeren en aan de hand van schuifregisters alles aansturen.
Alleen zit ik zowat vast bij de schuifregisters. Als ik het goed voorheb dan zijn het IC's waarin je enkele bits "schuift" en die bits sturen de uitgangen van het schuifregister. Kunnen deze rechtstreeks de leds van de dot matrixen aansturen of moet er nog een uln tussen?
en hoe programmeer je zoiets in proton IDE? Moet je om het schuifregister gewoon poorten hoog en laag maken en worden deze dan gewoon ontvangen? en hoe kan je meerdere schuifregisters gebruiken? is er hier een overflow pin voor?
Het zijn veel vragen ineens, maar ik kon de antwoorden niet direct vinden met de zoekfunctie
bij voorbaat dank 
sjors007
...
ik zou hier ook graag iets meer over willen weten:D ik werk ook in Proton in wil ook graag een lichtkrant maken;)
Technojunk
Printje geëtst hebben? mail me! | Even the invisible must be perfect | Ook een Meetsnoeren ophangrekje
Is je zoekmachine stuk?
Werking van schuifregisters staat gewoon in de datasheet. Max uitgangsstroom, "overflow pin" , aansturing etc staan er allemaal in.
Picbasic heeft een er een command voor. Serout oid. Data en klokpin opgeven, msb/lsb en low/high opgeven en klaar.
Frits Kieftenbelt
Ohm sweet Ohm | www.picbasic.nl
Ligt eraan welk type schuifregister.
Vaak zijn ze SPI gestuurd, dan aansturen met PICBasic instructie SHOUT (= SHift OUT).
eagle987
Eerst waren het atomen, dan waren het protonen, neutronen, elektronen, nog later waren het quarks en nu blijken het snaren te zijn...
Na wat opzoekingswerk ben ik tot het volgende gekomen:
Een schuifregister heeft 3 ingangen Data, Latch en Ser. CLK
Op de data ingangen komen de 1'en en 0'en te staan die gestuurd worden door de microcontroller en die vervolgens de toestand van de uitgang van het schuifregister bepalen. De data poort wordt telkens uitgelezen als er een klokpuls komt op Ser. CLK, indien alle bits in het schuifregister zitten dan kan je de opdracht geven aan je schuifregister om de uitgangen de benodigde waarde te geven (ook 1 of 0) Deze opdracht wordt gegeven door op de Latch ingang een klokpuls te geven.
Om schuifregisters in cascade te zetten gebruik je de QH' pin en verbind je deze door met de Data poort van het andere schuifregister.
klopt dit? Indien ja dan snap ik de werking van de schuifregisters en kan ik verdergaan met het aansturen ervan 
eagle987
Eerst waren het atomen, dan waren het protonen, neutronen, elektronen, nog later waren het quarks en nu blijken het snaren te zijn...
nu de aansturing 
dit is wat ik totnutoe (hoop te) snappen:
de shout instructie zorgt ervoor dat er bits verzonden worden naar het schuifregister
SHOUT DTA , CLK , MSBFIRST , [ 250 ]dit staat in de help topics van proton, dus de dta (daar vul je een poort van je microcontroller in) daar zet hij z'n 1'en en 0'en klaar, die verzend hij door een puls op CLK te zetten (op de plaats van CLK vul je ook een poort in) en de 250 is de waarde die hij verzend maar dan in 1'en en 0'en. MSBFIRST dus de hoogste bit zal hij eerst verzenden, 250 binair is:
11111010 Hier stellen de enen en nullen de waarden voor die hij via data verzend? (dit is mijn grootste twijfelpunt)
en wat als ik daar 32768 zet (16 bits) verzend hij dan ook 16 bits of moet ik daar iets speciaal voor doen?
alvast bedankt
euh, ik hoop dat je hier nog aan verder werkt.
Je kan je alvast baseren op dit schema
http://josepino.com/pic_projects/?matrix_display.jpc
Lijkt me een leuk project.
eagle987
Eerst waren het atomen, dan waren het protonen, neutronen, elektronen, nog later waren het quarks en nu blijken het snaren te zijn...
bedankt 
blijkbaar kan je ook gewoon 0'en en 1'en invoeren in dat veld
is dit in picbasic geprogrammeerd of in een andere taal?
Het is vrij duidelijk te zien dat dat niet in proton picbasic geschreven is.
variable type byte ipv dim xx as byte
while endloop ipv while wend
picsels
Volgend project: 7-seg gaming displays; dan dec-1982 labvoeding afmaken, dan funcgen met ad9833 afmaken, dan...
eagle987
Eerst waren het atomen, dan waren het protonen, neutronen, elektronen, nog later waren het quarks en nu blijken het snaren te zijn...
Door tijdgebrek ligt het project momenteel een klein beetje stil, maar zou het zo kunnen werken:
voor iedere rij maak ik een variabele, die variabele laat ik elke XXX ms optellen, doordat deze variabele opgeteld wordt kan ik de tekst van links naar rechts laten lopen
om de letters te maken laat ik de microcontroller voor elke letter naar een lookup table gaan waarna hij die bits in de shuifregisters schuift.
Door te spelen met de eerder genoemde variabele en de lookup table kan ik een tekst maken en laten scrollen over het scherm
dat is de theorie, de praktijk zal wellicht moeilijker worden 
Bij led-techniek, lichtkranten is de TPIC6B595 een veel gebruikt IC. Deze heeft de mogelijkheid om een Output Enable te sturen, zo kan je de lichtkrant dimmen. De IC kan tot 150mA sinken.
eagle987
Eerst waren het atomen, dan waren het protonen, neutronen, elektronen, nog later waren het quarks en nu blijken het snaren te zijn...
ik denk toch dat ik van de gewone microcontroller met schuifregisters ga gebruikmaken, maar nu loop ik tegen een probleem aan:
ik programmeer met proton IDE en daar gebruik ik 2 verschillende variabelen. Maar op een gegeven moment wil ik dat de waarde van die 2 variabelen aan elkaar gelijk gesteld wordt, is er hiervoor een simpel commandootje of moet ik het zo doen?
if variabele1 = 1 then variabele2 = 1
.....
Als ik variabele1 = variabele2 doe blijkt dit echter niet te werken...
picsels
Volgend project: 7-seg gaming displays; dan dec-1982 labvoeding afmaken, dan funcgen met ad9833 afmaken, dan...
"Er zijn 10 verschillende mensen in de wereld, zij die PICBasic begrijpen en zij die het niet begrijpen ..."
Ga er maar van uit dat
variabele1 = variabele2werkt zoals verwacht.
Je probeem zit elders. De vraag is dus:
Wat wil je precies bereiken?
eagle987
Eerst waren het atomen, dan waren het protonen, neutronen, elektronen, nog later waren het quarks en nu blijken het snaren te zijn...
ik wil als test een kleine chrono programmeren met lap-time functie, dus dat het beeld blijft stilstaan maar dat de chrono zelf op de achtergrond blijft verderlopen. Hiervoor gebruik ik 2 variabelen die ik de ene keer aan elkaar gelijkstel en de andere keer niet, jammer genoeg bleek variabele1 = variabele2 niet te werken maar de andere methode wel
Frits Kieftenbelt
Ohm sweet Ohm | www.picbasic.nl
Variabele1 = Variabele2
Dit moet gewoon werken.
Zoals picsels al schreef, je fout zal ergens anders moeten zitten.
Denk er wel aan dat je bijvoorbeeld geen WORD waarde in een BYTE variabele kunt stoppen:
WordVariabele = 1000
ByteVariabele = WordVariabele
Bovenstaande kan dus niet.
picsels
Volgend project: 7-seg gaming displays; dan dec-1982 labvoeding afmaken, dan funcgen met ad9833 afmaken, dan...
Om nog maar een beetje mee te denken:
Op 8 juni 2009 19:14:05 schreef eagle987:
if variabele1 = 1 then variabele2 = 1
.....
Waarom vergelijk je variabele1 met '1'?
En waarom zou dan variabele2 = variabele1 niet werken?
Ik zie nu trouwens ook ineens dat je zegt dat
variabele1 = variabele2niet werkt.
Haal je niet variabele1 en variabele2 door elkaar?
Reden te meer om variabelen betekenisvolle namen te geven!
eagle987
Eerst waren het atomen, dan waren het protonen, neutronen, elektronen, nog later waren het quarks en nu blijken het snaren te zijn...
in het echte programma gebruik ik millisecond1 en millisecond2 (ik heb ze niet door elkaar gehaald
)
vreemd genoeg lijkt het op de andere manier wel te werken maar niet millisecond1 = millisecond2
weet er iemand hoe je in assembler 2 variabelen gelijkstelt aan elkaar anders kan ik het zo programmeren
picsels
Volgend project: 7-seg gaming displays; dan dec-1982 labvoeding afmaken, dan funcgen met ad9833 afmaken, dan...
Dit begint naar trollen te neigen 
Waarom kijk je niet in de assembler listing van de Proton compiler?
; VARIABELE1 = VARIABELE2
MOVF VARIABELE2,W
MOVWF VARIABELE1
Of denk je dat dit óók niet gaat werken?
eagle987
Eerst waren het atomen, dan waren het protonen, neutronen, elektronen, nog later waren het quarks en nu blijken het snaren te zijn...