Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[LedMatrix]Aansluiting op microcontroller

Pagina: 1 2 Laatste
Acties:
  • 934 views sinds 30-01-2008
  • Reageer

  • Shuisman
  • Registratie: Maart 2004
  • Laatst online: 01-09 10:12
Daarnet de 25 kolommen aangesloten aan de uC, en de 4 datalijnen naar de BCD, (heb de 4 ingangen van de BCD 'geground' met 4.2 KOhm, en werkt perfect) Heb allereerst ff een progje in VB geschreven die voor mij C code produceert, om het leven wat makkelijker te maken:

Als testje dacht ik maar aan wat wiskundig:
√9=3 :-)
Heb ff een delayloop gemaakt waar je het aantal milliseconden op kan geven is wel handig ,anders krijg je van die hele grote getallen ;)

Die in de uC gezet, en uitgetest:
Afbeeldingslocatie: http://img183.imageshack.us/img183/3042/workingyz8.th.jpg
*Clickable
Doet het dus :*) De foto is niet al te best, maar als je flitst worden de foto's niet beter van, in gewoon licht is de display duidelijk te zien.

Voor de mensen die de achterkant willen zien:
Afbeeldingslocatie: http://img183.imageshack.us/img183/2687/finaldradenlv1.th.jpg
*Clickable
Nu komt het leukere deel: (alhoewel alles aanelkaar bakken ook wel 'cool' is) programmeren!
Dus ik zal allereerst mijn C kennis wat moeten verhogen, om o.a. interrupt timers te maken voor mijn clock. (Sample codes voor atmega32 uiteraard welkom)

EDIT:
100ste post in dit topic

[ Voor 23% gewijzigd door Shuisman op 27-08-2006 22:12 ]


  • kluyze
  • Registratie: Augustus 2004
  • Niet online
Hij zegt nochtans heel duidelijk:
SHuisman schreef op maandag 17 juli 2006 @ 12:30:
BCD chip net ff getest, hij werkt wel als ik de inputs 'ground' met een weerstand (4.2 KOhm genomen; had ik nog zootje van over :+ ), dus de 5-7.5 pF wordt nu 'weggezogen' en werkt oke :)
Voor het testen en zelf de ingangen te veranderen moet je niet gebruikte ingangen 'laag' maken (afhankelijk van: actief hoog, laag) omdat een ic nogal de nijging kan hebben om zwevende ingangen als 'hoog' te zien. Maar als het ic achter een µC of een andere schakeling hangt moet dit niet. Dan doet de schakeling dat wel.

Of was dat wat je bedoelde, in dat geval mijn excuses, maar ik heb net een paar uur chemie achter de kiezen. Niet bepaald het lievelingsvak van een industrieel electronica :r :?

edit:
Was nog reactie op MeMoRy, ik had niet gezien dat er al een 2de pagina was. Die was er ook niet, ik was nog aan het posten terwij hij op verzenden had gedrukt.

[ Voor 17% gewijzigd door kluyze op 18-07-2006 17:55 ]


  • MeMoRy
  • Registratie: Augustus 2004
  • Laatst online: 17-07 12:50
JEEY!!!!! _/-\o_

Gefeliciteerd! Veel programmeer plezier!! :D

U vraagt, wij antwoorden.


  • Shuisman
  • Registratie: Maart 2004
  • Laatst online: 01-09 10:12
MeMoRy schreef op dinsdag 18 juli 2006 @ 21:15:
[...]
JEEY!!!!! _/-\o_
Gefeliciteerd! Veel programmeer plezier!! :D
Bedankt :) , en ook bedankt voor alle transistorkeuze hulp etc.

  • Shuisman
  • Registratie: Maart 2004
  • Laatst online: 01-09 10:12
Heb daarnet de interrupt timer voor elkaar gekregen,
Hij draait op 16MHz, dat delen met een divider van 128, krijg je 8μs per tick, en dan timer compare interrupt op 125, zodat je per 1ms een interrupt krijgt!

Nu kom ik op 6-7 seconden afwijking per 15 minuut, meer mensen ervaring met zulke dingen ? Of denk ik verkeerd met de code ?

[ Voor 6% gewijzigd door Shuisman op 21-07-2006 15:17 ]


  • MeMoRy
  • Registratie: Augustus 2004
  • Laatst online: 17-07 12:50
misschien kost de interrupthandler een (paar) extra kloktik(ken)?

U vraagt, wij antwoorden.


  • Shuisman
  • Registratie: Maart 2004
  • Laatst online: 01-09 10:12
MeMoRy schreef op vrijdag 21 juli 2006 @ 15:39:
misschien kost de interrupthandler een (paar) extra kloktik(ken)?
Zover ik het begrijp;
Het frequentiesignaal wordt gekopieerd; gedeeld door jouw divider, dan opgeteld in je timer, en dan vergeleken met een waarde die je opgeeft (OCR2 in dit geval). En als de timer dan die waarde is gaat hij interupten.
16MHz met een divider van 128 => 125000Hz , met een timer compare interrupt van 125 => 1000Hz.

Ik probeer zo even 124 ipv 125 (OCR2)(in case hij anders werkt dan ik denk), en zien wat er dan gebeurt ;)

  • kluyze
  • Registratie: Augustus 2004
  • Niet online
Hmm, ik heb zo in der tijd ook iets moeten maken in asm c (het is niet asm, maar c, veel te lang geleden :X )
Ik heb die code wel nog ergens.
Maar dit is de code van de leerkracht in kwestie, is wel voor een stappenmotor, maar ik denk dat je dat deel wel eruit kan filteren. Het is ook wel voor een atmel 8535 besef ik nu juist :X maar op zich zal veel van de code bruikbaar zijn

Mocht je erin geinteresserd zijn natuurlijk :p

[ Voor 25% gewijzigd door kluyze op 21-07-2006 17:30 ]


  • Shuisman
  • Registratie: Maart 2004
  • Laatst online: 01-09 10:12
kluyze schreef op vrijdag 21 juli 2006 @ 16:48:
Hmm, ik heb zo in der tijd ook iets moeten maken in asm c (het is niet asm, maar c, veel te lang geleden :X )
Ik heb die code wel nog ergens.
Maar dit is de code van de leerkracht in kwestie, is wel voor een stappenmotor, maar ik denk dat je dat deel wel eruit kan filteren. Het is ook wel voor een atmel 8535 besef ik nu juist :X maar op zich zou veel van de code bruikbaar zijn

Mocht je erin geinteresserd zijn natuurlijk :p
iig bedankt, zal er zo ff naar kijken, heb snel ff de tijd erin gedaan; die tikt nu binair:
PORTA=sec
PORTB=min
PORTC=hour
Zal eens zien hoeveel hij nu afwijkt met OCR2=124 ipv 125 ;)

  • kluyze
  • Registratie: Augustus 2004
  • Niet online
No problem, ik zie trouwens juist dat je een Atmega32 gebruikt (ik dacht misschien een PIC) dan zal de code zeker bruikbaar zijn.

Laat je zo rap mogelijk je resultaten weten :p

Ik denk dat BCD over verschillende poorten het simpelste gaat worden ja.

[ Voor 18% gewijzigd door kluyze op 21-07-2006 17:31 ]


  • Atmoz
  • Registratie: Juli 2001
  • Laatst online: 21-11 14:23

Atmoz

Techno!!

SHuisman schreef op dinsdag 18 juli 2006 @ 17:47:
Daarnet de 25 kolommen aangesloten aan de uC, en de 4 datalijnen naar de BCD, (heb de 4 ingangen van de BCD 'geground' met 4.2 KOhm, en werkt perfect) Heb allereerst ff een progje in VB geschreven die voor mij C code produceert, om het leven wat makkelijker te maken:

Als testje dacht ik maar aan wat wiskundig:
√9=3 :-)
[afbeelding]
*Clickable
Zoals wellicht te zien is, doe ik per rij 1 milliseconde pauze, dus hij ververst het hele scherm ongeveer met 1/0.007 = ~143 Hz
Heb ff een delayloop gemaakt waar je het aantal milliseconden op kan geven is wel handig ,anders krijg je van die hele grote getallen ;)

Die in de uC gezet, en uitgetest:
[afbeelding]
*Clickable
Doet het dus :*) De foto is niet al te best, maar als je flitst worden de foto's niet beter van, in gewoon licht is de display duidelijk te zien.

Voor de mensen die de achterkant willen zien:
[afbeelding]
*Clickable
Nu komt het leukere deel: (alhoewel alles aanelkaar bakken ook wel 'cool' is) programmeren!
Dus ik zal allereerst mijn C kennis wat moeten verhogen, om o.a. interrupt timers te maken voor mijn clock. (Sample codes voor atmega32 uiteraard welkom)

EDIT:
100ste post in dit topic
Ziet er heel erg leuk uit!! 8)
Zet je op iedere print die je maakt zo'n dure IC houder met hefboom?
Of kun je die op een of andere manier weer hergebruiken?

  • Shuisman
  • Registratie: Maart 2004
  • Laatst online: 01-09 10:12
atmoz schreef op vrijdag 21 juli 2006 @ 18:02:
[...]
Ziet er heel erg leuk uit!! 8)
Zet je op iedere print die je maakt zo'n dure IC houder met hefboom?
Of kun je die op een of andere manier weer hergebruiken?
De reden voor een IC houder met hefboom is dat ik de chip telkens moet herprogrammeren; heb er namelijk geen ISP circuitje aanvast gemaakt ;) Ik haal de chip eruit, doe hem in mijn programmer, en weer terug erin. Als je een gewoon voetje zou doen, worden alle pootjes krom,krommer, en dan na een tijdje heel kort ;)

Verwijderd

SHuisman schreef op vrijdag 21 juli 2006 @ 15:04:
Nu kom ik op 6-7 seconden afwijking per 15 minuut, meer mensen ervaring met zulke dingen ? Of denk ik verkeerd met de code ?
Je kan de frequentie van het X-tal lichtjes tunen door 1 van de condensators die tussen het X-tal en GND staan te vervangen door een instelbaar type. Dit, voor het geval software-tweaking de afwijking niet 100% kan opheffen.
Voor de rest ben je goed bezig, zie ik. Ik ben benieuwd naar het eindresultaat!

  • Shuisman
  • Registratie: Maart 2004
  • Laatst online: 01-09 10:12
Verwijderd schreef op vrijdag 21 juli 2006 @ 21:23:
[...]
Je kan de frequentie van het X-tal lichtjes tunen door 1 van de condensators die tussen het X-tal en GND staan te vervangen door een instelbaar type. Dit, voor het geval software-tweaking de afwijking niet 100% kan opheffen.
Voor de rest ben je goed bezig, zie ik. Ik ben benieuwd naar het eindresultaat!
Ik denk er over na om het volgende te doen;
De divider op 128 houden; en de timer compare interrupt op 1, zo krijg 125000 interrupts per seconde.
Deze tel ik op in een variabele elke 125000 keer wordt er bij de 'secondewijzer' 1 opgeteld, blijkt na een dag 3 seconden te snel te gaan; dan kan ik hem hoger instellen op bijv. 125004, en zo kan ik een dag op 0.7 seconde precies krijgen, wat (opzich) wel aardig is denk ik! (4.5 minuten per jaar is dat dus)
Als dit niet wil voor wat voor reden dan ook, dan ga ik probably 50Hz signaal aftappen van het lichtnet en dat gebruiken, hopen dat dat stabiel genoeg is. Eventueel kan de divider ook naar beneden; zodat het nog precieser te corrigeren is. Je kan hem meende ik zelfs dividen met 1, ook al lijkt me dat vreemd want dat wordt hij bij elke 'frequentiepuls' geinterrupt(wat niet kan lijkt me)

Instelbare condensator is natuurlijk een optie, echter liever niet, want je kan hem toch niet precies krijgen zoals jij wilt, dan kan ik beter in de software iets schrijven dat hij elke week 1 seconde 's nachts om 4 uur ofzo weglaat :P

[ Voor 10% gewijzigd door Shuisman op 22-07-2006 01:15 ]


  • MeMoRy
  • Registratie: Augustus 2004
  • Laatst online: 17-07 12:50
dat tunen zal toch nog moeilijk worden... die 0.7sec/dag is zo fijn dat je het nauwelijks ziet...

U vraagt, wij antwoorden.


  • naftebakje
  • Registratie: Februari 2002
  • Laatst online: 19:33
Als je een nauwkeurig klokje wil, ben je het best uit met een RTC chipje. Hang er een lithium batterijtje aan, voeden met 5V en 2 draadjes om I2C te praten, en eenmaal ingesteld loopt ie jaren lang goed.
Als je het kan vertegenwoordigen om te samplen (je bent student elektronica, werkt in de elektronica, ...) kan je gewoon gratis een RTC samplen bij maxim, kristal zit ingebouwd en wordt automagisch bijgetuned volgens de temperatuur.

Als de boer zijn koeien kust, zijn ze jarig wees gerust. Varkens op een landingsbaan, leiden nooit een lang bestaan. Als de boer zich met stront wast, zijn zijn hersens aangetast. Als het hooi is in de schuur, zit het wijf bij den gebuur.


  • MeMoRy
  • Registratie: Augustus 2004
  • Laatst online: 17-07 12:50
Je kan het ook ff vragen aan Sprite... die heeft een topic waarin hij een klok bouwt parallel lopen met die van jou.

U vraagt, wij antwoorden.


  • Shuisman
  • Registratie: Maart 2004
  • Laatst online: 01-09 10:12
MeMoRy schreef op zaterdag 22 juli 2006 @ 11:08:
Je kan het ook ff vragen aan Sprite... die heeft een topic waarin hij een klok bouwt parallel lopen met die van jou.
Heb ik al :9

  • MeMoRy
  • Registratie: Augustus 2004
  • Laatst online: 17-07 12:50
:X

offtopic:
note to self: LEZEN 8)7

U vraagt, wij antwoorden.


  • Shuisman
  • Registratie: Maart 2004
  • Laatst online: 01-09 10:12
Heb de code aangepast, zowiezo moest OCR2 wel op 124 ipv 125 kwam ik achter, heb hem nu op 0, dus bij elke 16000000/128 gaat hij interrupten (elke 8 μS dus). Bij elke interrupt wordt een variabelen opgeteld, als deze 125000 is , dan hebben we 1 sec gehad. Ik heb hem om 11:15 ingesteld, en daar laten beginnen. Hij laat de seconden op regel1, de minuten op regel2, en de uren op regel3, de rest allen uit. Nu ga ik morgenvroeg om 11:15 weer ff checken (43200 seconden later) en check hoeveel hij afwijkt, en dan die 125000 aanpassen, ik zal ook nog ff dieper in mijn voeding kijken, met andere woorden is deze wel stabiel genoeg ?

EDIT:
Daarnet de tijd 'opgenomen' de tijd loopt 24 seconden voor na 43200 seconden, dus heb de 125000 iets verhoogt; naar 125069 om precies te zijn. Laat hem nu weer een dag aan staan en zien als ie nu klopt :) Daarna zal ik me bezig moeten houden met multidimensional arrays in C ;) .

[ Voor 19% gewijzigd door Shuisman op 23-07-2006 11:26 ]


Verwijderd

SHuisman schreef op zaterdag 22 juli 2006 @ 23:21:
k zal ook nog ff dieper in mijn voeding kijken, met andere woorden is deze wel stabiel genoeg ?
Als die voeding gestabiliseerd wordt met een 7805 of een LM317 valt er weinig aan te verbeteren, vrees ik. De temperatuur zal meer invloed uitoefenen op je kristal dat de afwijking van dergelijke spanningsregelaars.
Misschien valt een kristaloven te overwegen? ;-)

  • naftebakje
  • Registratie: Februari 2002
  • Laatst online: 19:33
Verwijderd schreef op maandag 24 juli 2006 @ 20:48:
[...]
Misschien valt een kristaloven te overwegen? ;-)
Een RTC is toch heel wat handiger hoor, en vooral tig keer goedkoper (zoveel zal de nauwkeurigheid niet schelen). Je RTC blijft ook gewoon lopen als de spanning afvalt met een simpel batterijtje (zoals in je PC). Je vraagt de tijd, en je krijgt em, met 1 chipje en 1 batterijtje, dat is pas luxe.

[ Voor 6% gewijzigd door naftebakje op 25-07-2006 01:34 ]

Als de boer zijn koeien kust, zijn ze jarig wees gerust. Varkens op een landingsbaan, leiden nooit een lang bestaan. Als de boer zich met stront wast, zijn zijn hersens aangetast. Als het hooi is in de schuur, zit het wijf bij den gebuur.


  • Shuisman
  • Registratie: Maart 2004
  • Laatst online: 01-09 10:12
Daarnet ff de grafische clock gemaakt, en getest; hij werkt, echter is de afwijking van die timerinterrupts nu wel te merken. Hij werkt niet zoals ik dacht; elke hz-puls van de kristal telt hij op, en deelt hem automatisch met de divider etc...Maar blijkbaar werkt het anders; heb namelijk nu veel meer code in het programma, maar nu is die interrupt-interval veel groter dan daarvoor (met korte code). Ik ga denk ik (waarschijnlijk) de 50 Hz van het lichtnet gebruiken voor het bijhouden van de tijd, of ik ga me verdiepen in die rtc chip (nog nooit mee gewerkt, geen idee hoe ze werken)

  • naftebakje
  • Registratie: Februari 2002
  • Laatst online: 19:33
SHuisman schreef op donderdag 27 juli 2006 @ 21:35:
..., of ik ga me verdiepen in die rtc chip (nog nooit mee gewerkt, geen idee hoe ze werken)
Gewoon via I2C (al noemen ze het in de datasheet geen I2C om geen licentiegelden te moeten betalen). Adres zenden, registernummer en data (seconden, minuten, uur, dag, maand, jaar of instellingen), en vanaf dan kan je gewoon alle tijdsinformatie opvragen via I2C. Er zit (bij de high precisions waar het kristal ingebouwd zit) een temperatuursensor in, die de afwijking van het kristal door de temperatuur compenseert, die kan je ook uitlezen (kan wel een leuke extra zijn).

Let wel op dat je clock stretching ondersteund in je µC, dat staat niet in de datasheet van die RTC's maar ze gebruiken het wel, clock stretching is een methode zodat de slave kan zeggen aan de master "ff wachten makker, ik ben nog niet klaar", daartoe trekt ie de kloklijn naar de massa. In hogere talen met I2C library zet je gewoon voor elke verzending een wachtlusje tot "I2C_Idle = true".

Als de boer zijn koeien kust, zijn ze jarig wees gerust. Varkens op een landingsbaan, leiden nooit een lang bestaan. Als de boer zich met stront wast, zijn zijn hersens aangetast. Als het hooi is in de schuur, zit het wijf bij den gebuur.

Pagina: 1 2 Laatste