programmeren proces met uC
programmeren proces met uC
ik heb een proces simulatie dat een wasmachine moet voorstellen. bestaand uit een microcontroller bord met daarop 8 uitgangen en 8 ingangen plus en ground. een proces bord dat bedoeld is om aan te sluiten op een pld en daarvoor hebben we een tussenbordje gemaakt dat de proces bord aanstuurt met transistors. alle ingangen en uitgangen zijn al zo opgezet dat het door de uitgangen van de uC aangestuurd kan worden. de ingangen van de uC worden gebruikt om de schakelaars van het proces bord aante sluiten en daarmee bij voorbeeld het wassen programma te starten.
electronisch werkt alles en dat is het probleem ook niet. wat wel het probleem is dat ik niet bekend ben met het programmeren van een uC. ik heb het boek dat geleverd is bij het uC bord(over assamblee taal en de instructie set) gelezen en snap het ook wel. ik weet alleen niet hoe ik iets moet opzetten voor een redelijk programmatje. ik weet niet hoe ik het moet aanpakken dat wanneer ik met een schakelaar 1 keer set dat dan bv het spoelen begint.
heeft iemand hier ervaring mee en kan die mij een een beetje op weg helpen uitleggen hoe ik dit het beste kan doen.
het is trouwens geen optie om de uC weg telaten en het met ic te doen want het is een school opdracht dat ik iets moet aansturen met een uC
alvast bedankt
electronisch werkt alles en dat is het probleem ook niet. wat wel het probleem is dat ik niet bekend ben met het programmeren van een uC. ik heb het boek dat geleverd is bij het uC bord(over assamblee taal en de instructie set) gelezen en snap het ook wel. ik weet alleen niet hoe ik iets moet opzetten voor een redelijk programmatje. ik weet niet hoe ik het moet aanpakken dat wanneer ik met een schakelaar 1 keer set dat dan bv het spoelen begint.
heeft iemand hier ervaring mee en kan die mij een een beetje op weg helpen uitleggen hoe ik dit het beste kan doen.
het is trouwens geen optie om de uC weg telaten en het met ic te doen want het is een school opdracht dat ik iets moet aansturen met een uC
alvast bedankt
-
Mat Janssen
- Moderator

- Berichten: 11595
- Lid geworden op: wo 10 dec 2003, 18:36
- Locatie: nederweert. .. .. .. .. .. .. .. .. .
http://bitsim.nl/Mat Janssen schreef:Wat voor een uc is het? misschien kan ik dan iet specifieks vertellen over dat dang dan.
dit bord heb ik
een klein beetje hoe ik het moet aanpakken heb ik al wat aan...
mischien moet ik even beter uitleggen wat het programma ongeveer moet doen. zie tekening onderin voor opzet proces.
het is de bedoeling dat de microprocessor steeds de ingangen in leest en dan op de uitgangen een patron zetten na aanleiding van de ingangen. maar wanneer er wat veranderd moet er ook worden onthouden wat hij aan het doen was en daar mee verder gaan. aangezien een wasmachine een vast patroon afloopt.
binnen een fase (bv het spoelen) moet een bepaals patroon van oplichten van de leds geven. wanneer er op een knop word gedrukt moet hij zich aanpassen hieraan wanneer er geen knop word gedrukt moet gewoon verder worden gegaan met het normale proces.
ik hoop dat het nu iets duidelijker is.
je hoeft niet precies te vertellen wat het programma(mag wel haha) maar wil graag weten hoe ik zoiets moet opzetten.
het is de bedoeling dat de microprocessor steeds de ingangen in leest en dan op de uitgangen een patron zetten na aanleiding van de ingangen. maar wanneer er wat veranderd moet er ook worden onthouden wat hij aan het doen was en daar mee verder gaan. aangezien een wasmachine een vast patroon afloopt.
binnen een fase (bv het spoelen) moet een bepaals patroon van oplichten van de leds geven. wanneer er op een knop word gedrukt moet hij zich aanpassen hieraan wanneer er geen knop word gedrukt moet gewoon verder worden gegaan met het normale proces.
ik hoop dat het nu iets duidelijker is.
je hoeft niet precies te vertellen wat het programma(mag wel haha) maar wil graag weten hoe ik zoiets moet opzetten.
- Bijlagen
-
- voorbeeld proces.JPG (35.55 KiB) 11919 keer bekeken
-
Mat Janssen
- Moderator

- Berichten: 11595
- Lid geworden op: wo 10 dec 2003, 18:36
- Locatie: nederweert. .. .. .. .. .. .. .. .. .
De beste aanpak is: maak een flowchart (grafische voorstelling) van je probleem. Voor elke toestand heb je voorwaardes nodig en daarna doet het iets.
Wanneer dat dan gebeurd is dan krijg je weer een andere toestand, en dan gebeurd er weer iets.
Los eerst op die manier je probleem op zodat je zelf precies begrijpt wat er gebeurt en moer gebeuren.
Dan pas ga je over tot het koderen van je probleem met die processor.
Ik gebruik die processor zelf niet maar ik ken die familie wel.
Alles wat je getekend hebt moet dat ook nog gebouwd worden of is dat er allemaal al?
Wanneer dat dan gebeurd is dan krijg je weer een andere toestand, en dan gebeurd er weer iets.
Los eerst op die manier je probleem op zodat je zelf precies begrijpt wat er gebeurt en moer gebeuren.
Dan pas ga je over tot het koderen van je probleem met die processor.
Ik gebruik die processor zelf niet maar ik ken die familie wel.
Alles wat je getekend hebt moet dat ook nog gebouwd worden of is dat er allemaal al?
signature ruimte te huur 
Verhuurd
Verhuurd
alles is al gebouwd en hoeft alleen nog geprogrammeerd te worden. is er iets wat ik beter anders kan doen dan?Mat Janssen schreef:De beste aanpak is: maak een flowchart (grafische voorstelling) van je probleem. Voor elke toestand heb je voorwaardes nodig en daarna doet het iets.
Wanneer dat dan gebeurd is dan krijg je weer een andere toestand, en dan gebeurd er weer iets.
Los eerst op die manier je probleem op zodat je zelf precies begrijpt wat er gebeurt en moer gebeuren.
Dan pas ga je over tot het koderen van je probleem met die processor.
Ik gebruik die processor zelf niet maar ik ken die familie wel.
Alles wat je getekend hebt moet dat ook nog gebouwd worden of is dat er allemaal al?
-
Mat Janssen
- Moderator

- Berichten: 11595
- Lid geworden op: wo 10 dec 2003, 18:36
- Locatie: nederweert. .. .. .. .. .. .. .. .. .
even vraagje tussen door. kan je met assemble taal ook een soort van if state funktie doen. zodat je als je twee opties hebt wat het volgende zal worden. bv je kan kiezen 60 minuten wassen of 90 minuten. en aan de hand van de keuzen gaat hij dat programma aflopen.
hoe heet zon funktie of zijn daar meerdere funkties voor nodig.
en is er ook een funktie dat hij kan wachten bij een bepaald gedeelte todat je een waarde invoerd. bv ik wil dat hij net zolang in de eerste fase blijt todat je invoed of je 60 of 90 graden wilt wassen..
hoe heet zon funktie of zijn daar meerdere funkties voor nodig.
en is er ook een funktie dat hij kan wachten bij een bepaald gedeelte todat je een waarde invoerd. bv ik wil dat hij net zolang in de eerste fase blijt todat je invoed of je 60 of 90 graden wilt wassen..
oke ik ben inmiddels al wat verder met het programmeren. ik heb al wat functies die ik kan gebruiken voor de schakelaar situaties. echter dit kan ik niet bij alle gebruiken. en ik kan verder in de instructie set die ik heb niet wijs uit worden.
het volgende heb ik wel:
situatie1 voor het starten van het proces. heb ik 1 schakelaar. dat programma gedeelte moet steeds door loopen todat er op de schakelaar wordt gerdukt.
dit heb ik als volgt op gelost
MOV A,R9 ; waarde start schakelaar in accu plaatsen
JNZ TEMPERATUUR ; als accu hoog is dan sprong naar temperatuur
JMP START ; als accu laag is dan springen naar start
wat er gebeurt is dat wanneer de schakelaar hoog is dan word er verder gegaan naar een label binnen het programma(temperatuur, start). als de schakelaar laag is gaat hij voorbij de JNZ functie en maakt ie een spring naar het begin en begint weer opnieuw totdat er op se schakelaar word gedrukt
dit zelfde principe heb ik gedaan bij een ander schakel moment waar moet worden gekozen tussen warm of koud.
maar het probleem nu
de bovenste voorbeelden zijn op vaste momenten binnen het programma, zodat ik gewoon kan laten loopen.
maar ik heb ook schakelaar die op elk moment binnen het proces moet in kunnen drukken en dan moet er ook naar een bepaald LABEL toe worden gegaan. en dan kan ik dus geen loop gebruiken.
hoe kan ik dit oplossen. hoe moet je zoiets doen.
hoop dat het een beetje duidelijk is
het volgende heb ik wel:
situatie1 voor het starten van het proces. heb ik 1 schakelaar. dat programma gedeelte moet steeds door loopen todat er op de schakelaar wordt gerdukt.
dit heb ik als volgt op gelost
MOV A,R9 ; waarde start schakelaar in accu plaatsen
JNZ TEMPERATUUR ; als accu hoog is dan sprong naar temperatuur
JMP START ; als accu laag is dan springen naar start
wat er gebeurt is dat wanneer de schakelaar hoog is dan word er verder gegaan naar een label binnen het programma(temperatuur, start). als de schakelaar laag is gaat hij voorbij de JNZ functie en maakt ie een spring naar het begin en begint weer opnieuw totdat er op se schakelaar word gedrukt
dit zelfde principe heb ik gedaan bij een ander schakel moment waar moet worden gekozen tussen warm of koud.
maar het probleem nu
de bovenste voorbeelden zijn op vaste momenten binnen het programma, zodat ik gewoon kan laten loopen.
maar ik heb ook schakelaar die op elk moment binnen het proces moet in kunnen drukken en dan moet er ook naar een bepaald LABEL toe worden gegaan. en dan kan ik dus geen loop gebruiken.
hoe kan ik dit oplossen. hoe moet je zoiets doen.
hoop dat het een beetje duidelijk is
Wat jij wilt kan eigenlijk alleen via een interrupt. Lees op www.8052.com de tutorials door en leer over deze interrupts. Er is bijna geen programma te schrijven dat zonder een interrupt probleemloos werkt. Ook kun je de "wachtlussen" dan gelijk via een mooie timer interrupt laten lopen ipv van al die NOP jes.
Als je veel toetsen hebt kijk dan eens naar een 74C923 keyboard ic. Dit IC geeft een puls aan je interrupt wanneer er een toets word ingedrukt. Je uC hoeft dus alleen iets te doen als er ook daadwerkelijk iets aan de hand is.
Als je veel toetsen hebt kijk dan eens naar een 74C923 keyboard ic. Dit IC geeft een puls aan je interrupt wanneer er een toets word ingedrukt. Je uC hoeft dus alleen iets te doen als er ook daadwerkelijk iets aan de hand is.