Waar zijn we nu mee bezig ? Microcontrollers

Gestart door ToThePoint, 13 januari 2012, 10:27:28 AM

conducteur

Bedankt om ook te zoeken! Zal die zeker eens bestuderen...
Rian 2-Rail DCC NMBS TPIII
Grote Modeltreinruilbeurs Blankenberge Pasen 2016
Zaal Forum

Havoc

Denk eerst eens hoe je dat in een hogere programmeertaal zou doen met functies en procedures. Schrijf dan de boel in assembler. Het is niet omdat ze 40 jaar geleden spagetticode schreven in assembler dat je dat nu nog moet doen. (en het is niet omdat ze dat nu op mijn werk nog doen dat jij dat moet doen....)
Met vakantie voor onbepaalde duur.

conducteur

Tjah. Ik ken persoonlijk héél goed iemand die meegewerkt heeft aan oa de Railtime applicatie. Tijdens de ontwikkeling hebben ze, als test de routine die het meest aangeroepen wordt in ASM herschreven: géén tijdswinst, integendeel... Wat heeft het dan nog zin om met die moeilijk te begrijpen codes te werken?

In C was dat allicht gereed, maar ik vrees dat ik daar 0 voor zou krijgen. Er staat duidelijk in de opdracht dat het in ASM moet zijn. Maar ben al wat opgeschoten. Doe nog wat verder...
Rian 2-Rail DCC NMBS TPIII
Grote Modeltreinruilbeurs Blankenberge Pasen 2016
Zaal Forum

Havoc

Wel als je het in C kan doen zou het in assembler ook moeten gaan. De ontleding en opdeling is hetzelfde. Enkel de implementatie is verschillend.

Eigenlijk is het idioot dat ze je eerst C gegeven hebben en dan assembler. Als je eerst de assembler ziet dan snap je wat de pointers van C betekenen.

En inderdaad, moderne compilers zijn behoorlijk efficient. Daar ga je niet veel aan kunnen verbeteren.
Met vakantie voor onbepaalde duur.

conducteur

Toch eerst ASM gezien en dan C, maar van C en enkele andere High level talen heb ik al zelf wat bestudeerd...
Rian 2-Rail DCC NMBS TPIII
Grote Modeltreinruilbeurs Blankenberge Pasen 2016
Zaal Forum

Sattrickske

Citaat van: Havoc op 16 november 2014, 19:39:28 PM
Denk eerst eens hoe je dat in een hogere programmeertaal zou doen met functies en procedures. Schrijf dan de boel in assembler. Het is niet omdat ze 40 jaar geleden spagetticode schreven in assembler dat je dat nu nog moet doen. (en het is niet omdat ze dat nu op mijn werk nog doen dat jij dat moet doen....)
Pffft, is hier niet anders zenne. Heb er hier ook zo'n paar die er een sport van maken om hun code onleesbaar te maken.   Vliegen er meteen mee terug om te herbeginnen; en dan blijkt dat het ineens wel kan om 'proper' te programmeren.  Nu nog ervoor zorgen dat hun specificaties en testplannen in orde zijn, maar da's al veel gevraagd :o.

Geert

En Rian, lukt het met je ASM code voor je looplicht. Als je wil help ik wel, ik kan de code zelfs testen, ik heb het type PIC thuis ergens liggen.

Geert
Schaal HO - digitaal zelfbouw - Favoriete Lok: V200 DB
Huidig project: LocoNet 16 poorten ingangen/uitgangen

conducteur

Ben al redelijk opgeschoten, nog niet hélémaal... Morgen afgesproken met de docent voor wat extra uitleg ;)
Rian 2-Rail DCC NMBS TPIII
Grote Modeltreinruilbeurs Blankenberge Pasen 2016
Zaal Forum

conducteur

Dit is ook een microcontroller zeker? "Achterstallig" schoolwerk inhalen. Bouw zelf je "microcontroller" met EEPROM.

Was een oefening van begin dit jaar. Had printje getekend en ingediend op school, om te laten fabriceren, maar was compleet fout. Heb echt geen vertrouwen meer in de "schoolservice". Vorig jaar ook bij projectwerk de nodige problemen gehad met slecht geëtste printen. Nu zelf printjes laten maken. (heb nog tijd tot 19/12 om dit te demonstreren).

Is een wel zéér primitieve µC met maar 16 Bytes aan instructies en wordt in bytecode in de EEPROM opgeslaan. (programma opstellen zonder compiler rechtstreeks in bytes, valt nog vrij goed mee met dit systeem).
Rechts zit een herlaadbare teller (aan de onderkant, kwestie van geen 100 via's te hebben) .


Die teller kan al dan niet herladen worden ifv de uitgang van de multiplexer voor de ingangen (2 drukknoppen + 5v + 0v). Als de uitgang 0 is dan wordt die herladen met 4 bits uit de instructie byte in de EEPROM.


De teller bepaalt eveneens welke instructie er wordt "geladen", en is zo terug gekoppeld aan de EEPROM. De 4 andere bits besturen de multiplexer (2)  en de demultiplexer (2). bovenaan zitten nog 2 555 timers die voor de klok en andere timing zorgen...


Opgave 1: het watervat: het waterniveau moet geregeld worden in een watervat. Als het vat leeg is moet het zich vullen tot aan een hoog niveau. Begint het water terug te zakken dan mag deze terug pas bijgevuld worden met de pomp als deze onder het lage niveau is. (soort hysterisis), en 2de is een soort verkeerssituatie waarbij een brug opgehaald wordt, maar de byte's voor die programma's staan al ergens op papier. Hoop dat ze werken...


ps: erg efficiënt gebruik van chips is dit: de EEPROM is 8K waarvan er hooguit 16 kunnen gebruikt worden ;D





Rian 2-Rail DCC NMBS TPIII
Grote Modeltreinruilbeurs Blankenberge Pasen 2016
Zaal Forum

Sattrickske

Rare schakeling... een microcontroller, met externe 555 als timers/clock, lol...
Kan wel een interessant oefeningske zijn: 'hoe programmeren zonder te smossen met geheugen'.

Sattrickske

Ondertussen zelf bezig met een schakeling die geluid kan puren uit een µC.  Enkel een passieve high-pass filter en één of twee kleine 8ohm luidsprekers nodig (levert 100mW aan geluid op).
Het geluid zelf komt van een een ongecomprimeerd wav bestand en wordt door de µC via 2 PWMs (1 voor wav sample rate, en 1 voor analoge conversie).  Korte sounds kan je makkelijk in de ROM van de µC kwijt; langere gewoon via SD-kaartje dat je op de SPI van de µC aansluit.

Kan heel handig zijn om lokaal in je scenery wat sound in te planten, en als je meer power wil: achter de high-pass nog een low-pass om de HF PWM eraf te krijgen en dan door een klassieke versterker jagen...

PeterC

#656
Een beetje aan het 'spelen' met Loconet:

1° projectje - alle Loconet data die op de bus passeert 'sniffen' en seriëel doorsturen naar de PC
Een interruptgestuurde decoder (flank- en tijd getriggerd) stelt de bytes samen en geeft die door aan een controle routine (om te kijken of de checksum klopt).  Alle data wordt seriëel doorgestuurd en bij een foutieve checksum wordt dat aangeduid.  Bij juiste data gaat die door naar een interpreter. 

2° projectje - status van de centrale weergeven met een rode en groene led
De interpreter interpreteert de Loconet opcodes OPC_GPON (GLOBAL power ON) en OPC_GPOFF (GLOBAL power OFF).

3° projectje - met een druktoets de centrale beïnvloeden en spanning aan- of afzetten (noodstop).
De interruptroutine uitgebreid zodat er ook data kan worden verzonden.

4° projectje - de lichtsterkte van de rode en groene led regelen aan de hand van de ingestelde snelheid van een bepaalde lok
Informatie opvragen in welk Loconet-slot die bepaalde lok zit en nadien de snelheidswijzigingen opvolgen en omzetten naar PWM om de lichtsterkte te regelen.

Alle projectjes werken zoals ze moeten werken.

De processor is ruim bemeten (PIC 18F2550 - 5,62 Euro) en draait op 48MHz zodat ik heel wat processortijd ter beschikking heb.

Nu de code opkuisen en in leesbare vorm gieten.

Volgend projectje: poging tot een synoptisch bord via Loconet gestuurd (wissel- en seinstanden beïnvloeden met een drukknopje en status van de terugmelders aanduiden)...

Groetjes, Peter


Geert

Droomprojectjes Peter  :P succes ermee.

ben nu bezig al mijn S88 µC projectjes te beschrijven op deze webpagina maar er is nog veel werk aan het schrijven van teksten, tekeningen enz...

Geert
Schaal HO - digitaal zelfbouw - Favoriete Lok: V200 DB
Huidig project: LocoNet 16 poorten ingangen/uitgangen

PeterC

Citaat van: Geert op 04 december 2014, 17:53:51 PM
Droomprojectjes Peter  :P succes ermee.

Bedankt!  Heel wat studiewerk om Loconet Personal Edition met het vergrootglas (tot in de kleinste detail) te bestuderen.  Maar geduld (en wat gezond boereverstand) loont.


Citaat van: Geert op 04 december 2014, 17:53:51 PM
...er is nog veel werk aan het schrijven van teksten, tekeningen enz...

Daar kruipt dus heel veel werk in.  Vroeger hield ik van niets aantekeningen bij.  Een projectje enkele maanden 'opzij' en dan verder aan werken, was geen probleem.  Waar ik mee gestopt was, deed ik mee verder.  Tegenwoordig durf ik al één en ander 'vergeten' en hou ik kaftjes met drafts en een digitaal mapje bij.  Spaart veel werk uit om nadien alles deftig op 'papier' te krijgen.

Groetjes, Peter


MickeyMouse

Dat is wat je noemt 'Heel Goe Bezig' Peter!!!!!
;) ;)