Nieuws:

Nu in MSM 249 PRAKTIJK: Beladen van ouderwetse goederenwagens: buizen en langsliggers * Terminus: de baan, deel 4

Hoofdmenu

G.I.P: automatisch schaduwstation zonder wissels

Gestart door conducteur, 09 mei 2012, 21:33:26 PM

conducteur

Je brengt me toch even in verwarming eh verwarring Peter,
http://www.pctoytoy.be/jal/16f684/16f684_hello.pdf-->pin 5 moest toch naar de µC, volgens Patrick?
-->Bij jouw is D4-D7 aangesloten, wat is het nu? D0-D3 of D4-D7?


CiteerPinnetje 3 zet je best via een potmeter (variabele spanning voor het contrast van de LCD).  Dan kan je de intensiteit van het contrast van de LCD regelen, bij jou staat ie op 'vollen bak'.  Kijk naar pagina 8 voor de correcte aansluiting.

4-5-6, maakt inderdaad niet uit zolang het maar uitgangen zijn op je µC; PortA is goed genoeg, als je de ADC uitschakelt.

!!!! 7-14: juist wel nodig !!!! Dat zijn je data lijnen.  Als je in 4-bit werkt, heb je enkel DB0-DB3 nodig.  Als je in 8-bit werkt, allemaal (DB0-DB7).  8-bit is eenvoudiger om te programmeren en minstens 2x sneller.  Voor de meeste toepassingen is 4-bit echter meer dan voldoende.

Ik heb tussen pinnetje 15 (voeding van de backlight) en m'n 5V een weerstandje van 47 ohm gestoken, ik vond op mijn displays de backlight nogal sterk...
Rian 2-Rail DCC NMBS TPIII
Grote Modeltreinruilbeurs Blankenberge Pasen 2016
Zaal Forum

Sattrickske

Foutje van mij, 't moet inderdaad DB4-DB7... Sorry!

R/W kan je permanent op 0 zetten (dus steeds in write modus), maar dan kan je de LCD niet meer uitlezen.  Heb je niet altijd nodig (zie pagina 13 van de datasheet)

PeterC

Citaat van: Sattrickske op 10 november 2013, 14:41:39 PM
...R/W kan je permanent op 0 zetten (dus steeds in write modus), maar dan kan je de LCD niet meer uitlezen.  Heb je niet altijd nodig (zie pagina 13 van de datasheet)...

Dat lezen gebruik je alleen als je de interne registers van je LCD wil raadplegen (zet je instellingen ergens in je controller en dan heb je die van je LCD niet meer nodig) en om de busy-vlag te lezen.  Gebruik vertragingslussen in je code en dan hoef je die vlag ook niet te lezen (die LCD modules zijn 'vrij' traag).
De bibliotheken die ik ken zijn erop gebaseerd om enkel E, RS en de 4 datalijnen aan te sturen.  Welk signaal op welke poort komt, bepaal je vooraf en laat dat weten aan je bib.  Ik vermoed dat er in C ook dergelijke bibilotheken bestaan.

Groetjes, Peter


conducteur


Nieuwe motor voor het project: van 0,5Nm naar 2,5 Nm. Nu nog wachten op de CNC freesmachine om een nieuwe driver te kunnen maken voor deze motor.

-->het programmeren in C heb ik opgegeven voor dit project, terug naar flowcode. Wat primitiever, maar heb ondertussen al een programma dat volgens mij redelijk wat moet doen, maar kan het dus niet testen op dit ogenblik. Wat niet wilt zeggen dat ik het stop: een volgend projectje met µC is zo complex niet en zal ik terug proberen in C. Maar eerst GIP afwerken.
Rian 2-Rail DCC NMBS TPIII
Grote Modeltreinruilbeurs Blankenberge Pasen 2016
Zaal Forum

jakke

Ik vind het bewonderenswaardig dat je verder blijf werken aan dit project.
Het is knap.
Wisselstromer via computer ,met belangstelling voor Belgische modellen

conducteur

#380
Examens zijn bezig, maar toch kleine vooruitgang hier:
Het frezen van pcb'tjes lukt nog niet zo goed omdat de cnc niet voorzien is van een constante hoogteregeling, maar met dank aan David, zou daar binnenkort verandering in moeten komen.


In afwachting van heb ik het bedieningspaneel maar opgebouwd uit een restje gaatjesprint, het lcd gemonteerd en potentiometer voor het contrast, en de 8 drukknoppen, met elk hun eigen weerstandje gesoldeerd. 0 en 5 volt al overal doorverbonden.


Nu zit ik met een dilemma:


Ofwel plan ik het te doen zoals eerst het geval was, alles aansturen door de ene µC, ofwel plaats ik een extra µC op het paneeltje (er is nog plaats voor een 16f876) die dan het lcd aanstuurt en de knoppen inleest, en communiceert met de hoofdµC in het systeem via een of andere seriele bus.


De deadline voor dit project is ergens na Pasen, het is dan opendeurdag in mijn vorige school, en zou als ik ga graag kunnen zeggen dat het ding werkt na al die tijd. Moet ik daar aan beginnen met het risico dat het een extra element is dat niet werkt? En wel belangrijk is, zonder bedieningspaneel zal er weinig mee aan te vangen zijn....

Het zou me toelaten met dat ene bedieningspaneeltje nog andere dingen aan te sturen of te controleren die dan verbonden zijn met dezelfde bus... Het zou ook een deel bedrading besparen nu heb ik 5v+gnd & 8x drukknop + 6 draden als ik nog kan tellen nodig voor m'n lcd, dat zou dan kunnen vervangen worden door 5V+GND+paar draden voor de communicatiebus...

Ik moet dan wel die communicatie in orde krijgen, en zien dat de beide µC synchroon werken... Ze moeten beiden reageren als een knop wordt ingedrukt, of er info voor het lcd moet verzonden worden....
Doen of niet?
Rian 2-Rail DCC NMBS TPIII
Grote Modeltreinruilbeurs Blankenberge Pasen 2016
Zaal Forum

Sattrickske

Ik dacht dat je al een diepteregelaar had op je CNC, want zonder is het verrekte moeilijk.  Je moet print perfect vlak kunnen leggen, 1/10 van een mm ernaast en je freest niet diep genoeg of net te diep...  Ik ga bij mij volgende week eens een poging ondernemen om eens 2 baantjes op een afstand van 0.5mm van elkaar te frezen met elk van de baantjes met een breedte van bijna 0.3mm.  Heb daarvoor titanium-coated freesjes aangeschaft met een punt van 0.1mm.  Ben zelf benieuwd...  Als het lukt, kan ik TQFP chips met een pitch van 0.5mm op m'n printjes gebruiken.

Voor je paneel:
Als het paneel maar eenmaal moet dienen, zou ik geen aparte µC voorzien maar alles op één en dezelfde µC aansluiten.

Als je het wil herbruiken heb je 2 mogelijkheden:
- aansluiten via flatcable op één µC
- 2e µC inschakelen en communiceren over SPI

SPI met PICs is relatief eenvoudig als je PICs hierop voorzien zijn.  Voor de 16f876 is dat al geen probleem, welke is je andere µC alweer?
Je kan je bedieningspaneel dan aansluiten met 6 draden:
- 2 voor de voeding (GND en +5V)
- 4 voor de SPI (/CS, CLK, SDI en SDO)
Als er maar één device op je SPI bus zit, kan je de /CS laten vallen.

Je kan nog een stapje verder gaan en bv. 1-wire gaan gebruiken, dan heb je 2 of 3 draden nodig.  Maar deze communicatie is iets moeilijker om op te zetten.

Persoonlijk gebruik ik zoveel mogelijk SPI, is zeer snel en eenvoudig te implementeren. 1-wire gebruik ik ook, maar veel minder (temperatuursensoren bv.), deze is veel lastiger om te implementeren (lastige handshake).

conducteur

#382
De andere is het grotere 40 pins exemplaar, 16f887... Ik hoop dat de diepteregeling in orde komt, want 0,8mm breedte en evenveel tussenruimte lukt niet altijd even goed...
Rian 2-Rail DCC NMBS TPIII
Grote Modeltreinruilbeurs Blankenberge Pasen 2016
Zaal Forum

Gerolf

1Wire heb ik al veel gebruikt - voor eenvoudige communicatie (één richting, één master en één slave, en vast aantal bits)
=> geen handshaking nodig, slave kan via interrupt communiceren en "intussen" nog iets anders doen, ...
Groeten uit "Marche-en-Bières"   ** Modelspoor is plezant **   TPIII-H0-DC-Zelfbouw

conducteur

Ik denk dat ik het gewoon zal houden, en als het eenmaal werkt het even zo laten, en dan kan ik nog altijd dit veranderen...
Rian 2-Rail DCC NMBS TPIII
Grote Modeltreinruilbeurs Blankenberge Pasen 2016
Zaal Forum

Sattrickske

SPI tussen een 16F887 en een 16F876 is heel simpel te realizeren, beide chips zijn uitgerust met SPI.  Juist kwestie van effe in de datasheet welke pinnetjes je moet gebruiken en in je MPLab de juiste instellingen in te geven (bus mode en snelheid).  Daarna is het gewoon data lezen en schrijven via het SPI register.

Ik kan je aanraden om SPI te gebruiken, want in de µC wereld is dit wijd verspreid.  Ik gebruik SPI om kant-en-klare Ethernet modules, SD card readers, LCD displays ed. mee aan te spreken.  Die modules koop voor een prikje op eBay of AliExpress of elders.
Daarnaast gebruik ik het ook voor de communicatie tussen m'n µC.

1-wire gebruik ik alleen als het niet anders kan (sommige temp. sensoren of RFID toepassingen), want je zit met vervelende timings voor je reset puls, present puls, master read en master write. (Da's wat ik bedoelde met protocol in m'n vorige post).

SPI in C implementeren voor PIC bedraagt 10 lijnen code (polling of interrupt).  M'n 1-wire 'library' is meer dan 50 lijnen (moet effe checken, want is al een tijdje geleden).

conducteur

C heb ik voorlopig opgegeven, enkele details die ik nog niet weet doen het niet vooruitgaan, ik ga (voorlopig) terug naar ofwel flowcode (wellicht) of JAL als ik m'n boek tijdig krijg van de boekhandel. Hoe zit dat in JAL voor SPI?


Flowcode ondersteunt blijkbaar ook SPI en I²C, maar ik moet ook nog eens uitzoeken hoe het precies moet...
Hoe zit dat trouwens, want als je data verstuurt, moet die ook ontvangen worden, hoe weet je dat de data is toegekomen? Dat zit verwerkt in het protocol zeker, die dan de andere µC even doet 'stoppen'?
Rian 2-Rail DCC NMBS TPIII
Grote Modeltreinruilbeurs Blankenberge Pasen 2016
Zaal Forum

Sattrickske

Citaat van: conducteur op 17 januari 2014, 11:51:27 AM
C heb ik voorlopig opgegeven, enkele details die ik nog niet weet doen het niet vooruitgaan, ik ga (voorlopig) terug naar ofwel flowcode (wellicht) of JAL als ik m'n boek tijdig krijg van de boekhandel. Hoe zit dat in JAL voor SPI?


Flowcode ondersteunt blijkbaar ook SPI en I²C, maar ik moet ook nog eens uitzoeken hoe het precies moet...
Hoe zit dat trouwens, want als je data verstuurt, moet die ook ontvangen worden, hoe weet je dat de data is toegekomen? Dat zit verwerkt in het protocol zeker, die dan de andere µC even doet 'stoppen'?
SPI is een low-end hardware protocol, eerder een technologie.  Het uiteindelijke protocol bepaal je zelf.  Als je zeker wil zijn dat de data aan de andere zijde ontvangen is, kan je vragen om een ofwel een simpele ACK of een checksum van de ontvangen data terug te sturen.  Checksum is te verkiezen omdat je dan weet dat de ontvangen data correct is; met ACK weet je enkel 'hij heeft IETS ontvangen, maar wat?'

Wat noem je stoppen? SPI is razendsnel, als je via interrupts werkt (er is er eentje op de SPI input buffer: SPIF, die je enabled via SPIE) wordt je code idd even stilgelegd om de interrupt routine te bedienen.  Dus heel veel tijd zal er niet verloren gaan, als je de code in de interrupt routine kort houdt.  Met polling moet je meer uitkijken, omdat daarvoor meestal 'tijdrovende' loops gebruikt worden.

Met JAL kan ik je niet helpen, dat is helemaal niet mijn dada (of ding zoals ze Nl zeggen).  Google is your friend?

conducteur

Hoe zit dat eigenlijk met die kristallen, tot nu toe heb ik die paar PIC projectjes al altijd voorzien van een extern kristal. Heb ik die nodig voor de PIC op het bedieningspaneel, of bij seriele communicatie? Wanneer wel/niet?
Rian 2-Rail DCC NMBS TPIII
Grote Modeltreinruilbeurs Blankenberge Pasen 2016
Zaal Forum

Geert

Ik werk altijd met de interne oscillator. Deze kan je ook nog is kalibreren. En tot nu toe nog nooit een probleem gehad met timing. De interne oscillator is wel gevoelig aan temperatuur schommelingen, maar de meeste van onze projectjes zijn binnenhuis en gewoonlijk bij kamertemperatuur.

Geert
Schaal H0 - digitaal zelfbouw - Favoriete Lok: V200 DB