2de zit Microcontrollers

Dit topic is gesloten

Hellow!

Ik moet voor microcontrollers volgende opgave maken:(zie onderaan)
Deze opgave moet gemaakt worden in assembler --> 8051DE

Ik heb al de code voor het de looplichten, het instellen van de timer maar ik begrijp niet goed de communicatie tussen PC en Microcontroller ... En ik begrijp nog minder hoe ik dit programma kan testen aangezien ik zo geen microcontroller heb liggen.

Alvast Bedankt
Groeten

David

____________________________________________________

Ontwerp een klok met de aanduiding van uren, minuten en seconden. De tijdbasis wordt gevormd door timer0 die als 8-bit auto-reload timer geconfigureerd wordt, en die om de 200µs een interrupt genereert.

Als display maken we gebruik van een PC. Elke seconde wordt de tijdsaanduiding in de vorm "uu:mm:ss" via de seriële poort naar deze PC verstuurd. Baudrate=4800 baud.

Tegelijkertijd moet op poort0 (=ledbar) een lichteffect zichtbaar zijn. Tijdens de even minuten moet het een linkslopend looplicht zijn, terwijl het tijdens de oneven minuten een rechtslopend looplicht moet zijn.

Van deze oefening moet een verslag worden ingediend dat mondeling zal verdedigd worden. Het verslag moet een duidelijke weergave zijn van de aanpak en manier van oplossen.

Het bronbestand moet ook ingediend worden.

Indienen gebeurt vóór de datum van het theorie examen via de dropbox van dokeos.

veel succes...

De grote vraag: wat heb je zelf al bedacht? Zo'n opdracht moet je in kleine stukjes opdelen. Je moet blijkbaar een timer instellen, de tijd bijhouden, een communicatiekanaal met de PC openen, de tijd leesbaar doorsturen, en tegelijk een looplicht laten lopen.

Hierbij is het belangrijk dat die dingen allemaal tegelijk lopen; tijdens de communicatie met de PC moeten het looplicht en het bijhouden van de tijd niet stoppen. Er zijn verschillende manieren om dat op te lossen; welke mogelijkheden zie je zelf?

Ik mis een mogelijkheid om te tijd in te stellen; is daar iets over gezegd? Je kunt dat met knopjes doen, of door vanaf de PC iets te sturen. Het gemakkelijkst is waarschijnlijk om een paar knopjes te gebruiken, een om het aantal uren te verhogen, en een voor de minuten, waarbij je de seconden teller op 0 zet als je op een van die knopjes drukt.

Heb je een compiler en simulatie voor die microcontroller? Waarom krijg je zo'n opdracht zonder microcontroller om het mee te testen?

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken
Henry S.

Moderator

Op 14 juli 2011 18:56:12 schreef Davidof:
veel succes...

Veel sterkte: http://www.circuitsonline.net/forum/view/29138

Dus niet zomaar je schoolopdracht neerpleuren en wachten op antwoord.

[Bericht gewijzigd door Henry S. op donderdag 14 juli 2011 19:42:16 (19%)

73's de PA2HS - ik ben een radiohead, De 2019 CO labvoeding.
free_electron

Silicon Member

om de 200 us..
ik zou stomweg 7 variabelen maken
1 voor titntal uren , een voor eenheden uren etc ... 6 in totaal
en dan een om de ticks bij te houden.

Bij elke interrupt tel je de tick 1 op.

je hebt een hoofdprogramma wat de tick waarde controloreert

code:


if tick = 5000 then
   tick=0
   seconden = seconden +1
   if seconden = 10 then
      seconden =0
      tseconden = tseconden + 1
      if tseconden = 6 then
         tseconden = 0
         eminuten = eminuten + 1
         if eminuten = 10 then
            tminuten 


  en ga zo maar door.

en als je al die variabelen hebt bijgesteld dan doe je dit

code:


scon = '0' + turen
wacht op t1 clear
scon = '0' + uren
wacht op t1 clear
scon = ':' 
wacht op t1 clear
scon = '0' + tminuten
wacht op t1 clear
scon = '0' + minuten
wacht op t1 clear
 enzovoort
   sport = '0' + 

simpel newaar.

je flikkerlichtjes gooi je dan daar ergens tussen.

Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM

Tegelijkertijd moet op poort0 (=ledbar) een lichteffect zichtbaar zijn. Tijdens de even minuten moet het een linkslopend looplicht zijn, terwijl het tijdens de oneven minuten een rechtslopend looplicht moet zijn.

Dat is duidelijk een opdrachtgever die waardering heeft voor ludieke effecten. :-)

Wat de UART betreft: probeer Google code-search eens.

Prosper, yop la boum, c'est le roi du macadam (aldus Maurice Chevalier)
free_electron

Silicon Member

Op 14 juli 2011 21:45:29 schreef pros:
[...]
Dat is duidelijk een opdrachtgever die waardering heeft voor ludieke effecten. :-)

ik snap de bedoeling niet van die extra feature.
das kwestie van gewoon het getal '1' te laden op de poort
en dan in de secondehandler gewoon dit te doen :

if 'minuten and 1' then ror(p1) else rol(p1)

is hoop en al 1 lijn code in pl/m51... ( 3 assembly instructies )

das geneens een uitdaging ..
dat ganse horloge programmatje is nauwelijks 100 bytes ..

Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM

@FE: voor de TS lijkt het anders nog een flinke uitdaging.
Overigens zal dat stukje code met 7 variabelen best functioneel zijn, maar het is ook alles behalve efficiënt of elegant. Het lijkt me ook niet echt handig om die 7 variabelen allemaal te moet beschermen tegen multiple access en race conditions.

Ik ben met jullie eens dat het geen bijzonder moeilijke opdracht is, maar je moet simpel beginnen.

Dit zou je met een loop kunnen oplossen, maar de TS zegt al dat hij een timer interrupt moet gebruiken. De communicatie kan ook interrupt-driven gedaan worden, het looplichtje kan op die timer meeliften, of een eigen timer met interrupt krijgen. Op die manier heb je een prachtige, lege main loop, en dus mogelijkheden om nog iets anders met die controller te doen.

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken

Als wij in assembler moesten programmeren en je kon het niet moest je altijd een flowchart kunnen voorleggen voordat je uitleg mocht vragen.
Lijkt misschien dom. Maar met een goede flowchart moet je bij het programmeren amper nog nadenken.
Misschien iets om eens uit te proberen? (want asm zelf leest voor geen meter)

Probeert veel + Denkt vaak + Weet weinig = Leert iets

Oftewel, eerst je programma structuur bedenken voor je gaat programmeren...doet me denken aan mijn omscholing de ICT ruim 25 jaar geleden. Sowieso altijd beter om eerst na te denken
1: wat moet het doen
2: hoe gaat dat werken & wat heb ik daar voor nodig
3: hoe ga ik dat implementeren

Just find out what you like and let it kill you
free_electron

Silicon Member

Op 14 juli 2011 22:33:03 schreef SparkyGSX:
@FE: voor de TS lijkt het anders nog een flinke uitdaging.
Overigens zal dat stukje code met 7 variabelen best functioneel zijn, maar het is ook alles behalve efficiënt of elegant.

dat zijn 8 bytes ( 6 bytes voor de digits, 2 byte voor de tick ).
Laten we even rekenen... een getal zoals 235959 vereist meer dan 16 bit... 24 uur is 86000 seconden dus dat past weer al niet in 16 bit.
Het is dus volgens jouw efficienter om 32 bit arithmetic code te gaan kakken op een 8 bitter en daar allerhande complexe bewerkigen op te doen om dan via delingen dat te outputten naar een string en dat dan door een inthandler te jassen ?

je hebt dus 32 bit arithmetic aan je broek. en dat converteren naar ascii strings om die dan te passeren aan een output handler gaat je ook een berg intermediate ram , stack , code en cycli kosten.

't verwonder tme dat je er niet eerst linux op porteert met daarbovenop VMware en daarin dan Windows7 (liefst de 64 bit versie..). Dan kun je er python in cygwin op draaien en daar een scriptje in maken... wat 'print timedate' doet ... liefst naar een op usb geemuleerde rs232 poort zodat we nog wat kunnen sakkeren over driver compatibility en usb virtualisatie.

we rekenen verder :

Die if then is 1 machinetaalinstructie want de compare loopt tegen een rom constante. Elke 'digit' van de clock is 1 byte.
er zijn 6 testen nodig en zes instructies om de bytes op nul te zetten...
Dan zijn er hoop en al 30 instructies nodig om die bytes een voor een op te tellen bij ascii karakter '0' en dat naar de seriele poort te vlammen.

Gans die routine is bovendien volledige determinisisch. Voor elk codepad weet je exact hoe lang ze gaat lopen en je kan het langste codepad op voorhand bepalen. Je kan die code zo profilen. ideaal als je Realtime bezig bent.

Op een 8051 heb je met mijn aanpak hoop en al 8 van de 256 byte ram nodig en pakweg 100 byte van de 4K Rom...

Eendert welke andere aanpak zal veel meer ram en rom vreten omdat je nodeloos met conversies zit te dollen. bovendien verzeik je cpu tijd met moeilijke bewerkingen zoals delen en vermenigvuldigen.

We gaan verder met rekenen :
Die interrupt komt elke 200 microseconden. je hebt daar alleen een downcounter. dat kost dus niks qua processing tijd. Das 3 a 4 instructies elke 200 microseconden. kippeeitje voor die processor.

Als die overrolt heb je een 'tick' en dan heb je een 70 tal instructies extra aan je broek om je tellercascade te doorlopen en te staan wachten op de uart... : 9600 baud dat is 1200 karakters per seconde.. en je moet er maar 8 sturen . Je slijt daar 6 milliseconden met wachten op de uart... en dat om de 1 seconde....

De load van die ganse clock, uart en die flikkerdinges is nauwelijks 0.6% van de beschikbare cpu tijd... tijd zat om er nog een zelfbalancerende robot die een rode bal kan volgen bij te prammen. en die 0.6% komt dan nog van 8 keer te wachten tot de uart klaar is met een karakter... als je die uart op 1.4 megabaud zet gaat dat naar 0.000001 % cpu time zakken.

Niet alleen dat, mijn code is zelfs multithreaded. De output thread loopt onafhankelijk van de secondetick. Ik heb een volledige seconde om op mijn gemak die ascci prut door te sturen . Evenen rekenen. 8 karakters 8 bits .. 64 baud plus ene paar start en stop dinges ...
tzou moeten lukken op 75 baud ... 9 bits per karakter zou 72 baud geven en we gaan aan 75 ... no problemo.
En er is zelfs geen gevaar dat de ene thread de andere overrolt.

Ge gaat straffe kunsten moeten uithalen om iets te maken wat compacter ,sneller en efficienter draait met minder rom ,ram of stack en dan nog eens threaded en determinisitisch is.

Zelfs als je de tijd BCD zou encoden verspil je meer instructies...

Het sop is de kolen niet waard.

voor sommige zaken gaat het sneller vooruit om de digits gewoon los te stockeren dan er allerhande complexe meuk op los te laten.

het schrijft natuurlijk makkelijk
int32 x.
x = x + 1
maar je moet eens zien wat een berg code dat wordt op een 8 bitter..
en je hebt onvermijdelijk nog een hoop calls en rets aan je broek ook want ze gaan dat uit een voorgekauwde library gaan sleuren.

ik heb zelfs geen stack want er wordt niks aangeroepen.

enfin. das mijn gedacht.

Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM

En ik begrijp nog minder hoe ik dit programma kan testen aangezien ik zo geen microcontroller heb liggen.

AT89S52 (8051) ontwikkelbordje nodig ? Heb ik liggen.

http://innovativeelectronics.com/innovative_electronics/images/DT-51/DT51LCMS2red.jpg

It's the rule that you live by and die for It's the one thing you can't deny Even though you don't know what the price is. It is justified.

Simpele vraag, om iets te ontwerpen.

Dan ga je elektrotechniek "studeren", en zet je er een zuur smoelwerk als icoon naast als je een probleempje op moet lossen als oefening.
Dat wordt dus een zwaar beroepsleven. Maar ja je kunt altijd nog manager worden. Cursus vuurlopen, abseilen en paint ball schieten en je bent volleerd.

Tijd moet via een uart naar de PC. Ouwe troep dus denk ik, zit vast hyperterminal op. Die instellen op 4800 bps.
Gewoon ASCII stringetje hh:mm:ss car return $0D, dus geen linefeed $0A, dan begint hij steeds over zijn oude tekst te schrijven. Mocht dat niet werken dan een bundeltje back spaces overwegen. Noem die geen BS zoals in de ASCII tabel staat, want dat is amerikaans voor Bull Shit. Of misscien ook liever juist wel, ivm die zuursmoelwerk iconen.

Interrupt 5000 keer per seconde, dan moet het kristal minstens 256*5000*12 zijn, ruim 15 MHz. Slim, want de uart moet 4800 bps leveren daar kwam die rare kristalfrequentie van 9600*96*12=11.0592 MHz vandaan. Nog beter bedacht als probleem want als je het hele gedoe in de interruptafhandeling wilt opnemen, dan kom je machine cycli tekort schat ik.

Die interrupt dus 3 variabelen laten ophogen modulo 60 modulo 60 en modulo 24. als die een 5000 teller naar 0 heeft gedowncount, kun je dptr voor nemen als die niet in gebruik is.

Mooi, volgende pitfal, dan treedt er een interrupt op terwijl je je variabelen aan het afdrukken bent, dat afdrukken kost nogal wat tijd bij 4800 bps 1/60 seconde, zijn er inmiddels 83 timebase interrupts geweest.

Prachtig.

Uart geeft een interrupt als die leeg is. Mooi, doet ie maar een keer, als er dan niks is een idle vlag zetten. Ga je hem hebruiken dan eerst naar de idle vlak kijken, staat die, dan direct in de uartbuffer plempen en die vlag resetten kan in een instructie met menmonic jbc.
Anders in een bufferbyte klaarzetten, wat alleen mag als die niet vol is. semafoor nodig dus geset in main en gereset bij leeghalen door de uart interruptafhandeling.

Afdrukken van een der drie tijdcounters bv hh in ACC:

code:



      mov B,#10
      div AB
      add a,#'0'
      acall write_uart
      mov a,B
      add a,#'0'
      acall write_uart

[Bericht gewijzigd door Henry S. op vrijdag 15 juli 2011 21:02:25 (5%)

Ik zou de code van FE nog aanpassen als volgt.

Ipv bv t_minuten te laten beginnen op 0 en tot 5 te laten gaan laten beginnen bij '0' (48) en tot '5' (53)

Dan gebruik je ook enkel compare to rom const en set immediately, dit is meer geschikt om door te sturen over de seriele poort gezien de computer in ascii werkt en je anders bij het doorsturen nog 2 extra instructies (per getal)

mov tmp,tminuten
add tmp,#'0'

moet uitvoeren. Je moet toch niets anders doen met de gegevens dus deze interne voorstelling is niet onhandig. En verder ipv tick==5000 testen op tick>=5000 en dan tick-=5000; Indien je main loop dan wat traag gaat en de interupt telt tick verder dan 5000 loopt de klok toch nog steeds juist.

Free Electron

Dat tellen in het hoofdprogramma vind ik riskant,

ik zou tellen in de int afhandeling doen dan mis je geheid geen tick

code:


      inc ss
      cjne ss,#60,$+3       ; hadjememaar !
      jc exit
      mov ss,#0
      inc mm
      cjne mm,#60,$+3
      jc exit
      mov mm,#0
      inc hh
      cjne hh,#24,$+3
      jc exit
      mov hh,#0
exit  pop PSW
      reti

Dat gebruiken van 8 bits timebase betekent dat als je een preset count neemt, die op 200 us uitkomt dat een presetcount hoger of lager je een tijdfout maakt van meer dan 0,5% dat is voor een klok niet te pruimen. De preset is dus een te ruwe benadering. Dat kun je dan een factor 256 verbeteren door
de preset een deel van de 256 keren dat een interrupt optreedt 1 te wijzigen. Wat is dan de haalbare nauwkeurigheid TS davidov? Kun je nog zelf denken of zit je lekker op je krent te wachten? Andere keuze om de 5000 van de downcounter aan te passen, dat helpt je 1 seconde in anderhalf uur, schiet niet op.

Je zal toch docent zijn en een verslag van een nitwit in je vrije weekend moeten lezen dat van dit soort doorde schrijver (m/v) totaal onbegrepen bijdragen aan elkaar is gekleefd.

Uitzien naar prepensioen houdt het leven dan nog dragelijk.

wow ik had nog niet zoveel reactie verwacht! thx! ik lees alles meteen, hier geef ik alvast de code die ik voorlopig zelf heb gevonden.

dit zijn alle stukjes code al apart, eigenlijk dus gewoon aparte programmatjes die ik nodig zal hebben die nog aan elkaar moeten gelinkt worden. Ik snap gewoon nog niet helemaal hoe ik de 'tijd' naar de PC zal sturen. één voor één dus:

U
U
:
M
M
:
S
S

en als de seconden moeten veranderen opnieuw sturen? en dan moet er tegelijkertijd nog een ledbar gaan... maar de µC kan imo toch maar 1 iets tegelijkertijd uitvoeren?

code:


PROGRAMMA 2de ZIT

 
        ORG 0h
        LJMP start
        ORG 30h

        CLR TR0                 ; timer0 stoppen
        CLR TF0                 ; vlag van timer0 clearen
        CLR TR1
        CLR TF1
        MOV TMOD,#00100010b     ; timer0 en 1 in 8-bit auto-reload timer
        MOV TH0,#37
        MOV TL0,#37             ; 200µs
        MOV TH1,#243            ; 4800 baud
        MOV TL1,#243
        MOV SCON,#40h           ; mode 1
        ORL PCON,#80h           ; baud verdubbelaar
        MOV IE,#10001010b       ; interrupts enablen
        SETB TR0                ; timer 0 starten
        SETB TR1                ; timer 1 starten
        JNB TF0,$               ; wachten op vlag timer 0
         
        
send:   CLR TI                  ; transmitvlag laag zetten
        MOV SBUF,#'Z’           ; letter Z in SBUF plaatsen
        JNB TI,$                ; wachten tot transmitvlag hoog komt (= byte verstuurd)
        JMP send

        








loopli: MOV P0,#11111110b
        CALL tijd
        MOV P0,#11111101b
        CALL tijd
        MOV P0,#11111011b
        CALL tijd
        MOV P0,#11110111b
        CALL tijd
        MOV P0,#11101111b
        CALL tijd
        MOV P0,#11011111b
        CALL tijd
        MOV P0,#10111111b
        CALL tijd
        MOV P0,#01111111b
        CALL tijd
        LJMP loopli

loopre: MOV P0,#01111111b
        CALL tijd
        MOV P0,#10111111b
        CALL tijd
        MOV P0,#11011111b
        CALL tijd
        MOV P0,#11101111b
        CALL tijd
        MOV P0,#11110111b
        CALL tijd
        MOV P0,#11111011b
        CALL tijd
        MOV P0,#11111101b
        CALL tijd
        MOV P0,#11111110b
        CALL tijd
        LJMP loopli

 tijd:  MOV R0,#0
        MOV R1,#0
 tlus:  DJNZ R0,tlus
        DJNZ R1,tlus
        RET

Op 14 juli 2011 19:27:59 schreef Henry S.:
[...]
Veel sterkte: http://www.circuitsonline.net/forum/view/29138

Dus niet zomaar je schoolopdracht neerpleuren en wachten op antwoord.

Ik weet het ik was zelf nog bezig met alles neer te zetten wat ik al had

[Bericht gewijzigd door Henry S. op vrijdag 15 juli 2011 20:56:35 (6%)

Jup, een microcontroller kan maar één ding tegelijk uitvoeren, een PC met een pentium 4 (non-hyper threading) trouwens ook...
Dat is JUIST het stukje waar de leraar je wil prikkelen: hoe kan ik meerdere dingen doen die tegelijk (lijken) te gebeuren. Even een hint, verder moet je toch echt zelf aan de gang: je hoeft het niet allemaal tegelijk te doen, maar knip het in zult kleine blokjes dat het waarneembaar tegelijk lijkt plaats te vinden, terwijl je het feitelijk achter alkaar uitvoert.

Meep! Meep!

Ja ik was idd ook zoiets aan't denken, maar zoals je kan zien in mijn code van het looplicht zit ik wel met een probleem. Het looplicht wordt dus uitgevoerd met tussen elke verandering van de led's een aantal 'tijd'.. als het programma dus bezig is met die tijd enzo kan het toch niet verder doen met de rest (tijd naar PC sturen). Of zou ik de tijd wegdoen en gewoon de programmavertraging als wachttijd gebruiken?

[Bericht gewijzigd door Henry S. op vrijdag 15 juli 2011 20:56:54 (42%)

Als heer Davidov nu begint met aan te nemen dat de code die hij produceert absolute puin is, dus in ieder geval die wegsmijten, en dan vervolgens de specsheet van de betreffende processor leest alvorens een poging te doen dat geheel anders aan te pakken dan komen we wlllicht op het juiste pad.

Als ik leraar op die school was zou ik krijsend horizontaal op een brancard in een dwangbuis gegespt de poort uit worden gedragen.

Doe hem de groeten van mij en breng mijn medeleven met zijn bestaan als een pissebed in de duisternis onder een natte steen over, als je wilt.

Al die code komt uit de lessen die we gehad hebben.

ps: laat mij raden je bent een ervaren elektronicus van middelbare leeftijd die het heeft gehad met de 'jeugd van tegenwoordig' ?

[Bericht gewijzigd door Henry S. op vrijdag 15 juli 2011 21:02:50 (57%)

Hellow,

Dat sgreef:
"wow ik had nog niet zoveel reactie verwacht! thx! ik lees alles meteen, hier geef ik alvast de code die ik voorlopig zelf heb gevonden.
"

Dus zelf gevonden is niet zelf bedacht. Zo is uitgevonden ook niet uitgedacht.

[click PbSn] Ik zou je overgootvader kunnen zijn. De leeftijdklasse dus die jij ongetwijfeld (blijkens je taalgebruik) als demente sukkels klassificeert.

[Bericht gewijzigd door PbSn op vrijdag 15 juli 2011 21:58:41 (31%)

Ik neem het hem eerlijk gezegd niet al te kwalijk, als je in je tweede zit nog niet doorhebt waar je een interrupt toe kan gebruiken heb je volgens mij niet al te sterk je best gedaan in de les.
Maar goed, we maken allemaal fouten.

Klinkt trouwens verdacht veel op n opdracht uit Lessius. Correct?

Free_Electron heeft je hier al enorm op het goeie pad gezet.Snap je zijn uitleg, of is het allemaal wat chinees?

Ik begrijp er wel ongeveer iets van maar wij programmeren in assembler wat heel anders is .. ik zou niet eens weten hoe ik een variabele aanmaak daar. Echt een kut programma geef mij maar c++ ofzo dan maar bon. Kan ik iets doen met het programma dat ik al gegeven heb? instellingen van de timers kloppen toch?

Ik heb dus timer0 die telkens om de 200µs zijn vlag hoog zet, per seconde moet de timer dus een aantal keer hoog geweest zijn? Die aantal keer zou ik kunnen optellen met een counter maar de 8051 heeft maar 2 timers/counters die al in gebruik zijn.

(hogeschool gent btw)

[Bericht gewijzigd door Henry S. op vrijdag 15 juli 2011 20:57:52 (31%)

Nou,

in C declareer je een variable v als bijvoorbeeld:

int v;

en in assembler als

code:


v    .equ $30   ; een of andere ram positie tussen $30 en $7F

[Bericht gewijzigd door PbSn op zaterdag 16 juli 2011 02:13:37 (40%)

A: een variabele is een software counter.

B: jouw oplossing komt niet met de opdracht overeen. De opdracht stelt expliciet dat je de timer moet gebruiken, waar jij vervolgens een routine "tijd" voor maakt.

Het idee is dat je dus tijdvalkjes van één-vijfde milliseconde hebt, deze tijdvakjes kan je gebruiken om:
- je looplicht te bedienen (bijv. iedere 1000 tijdvakjes (iedere 0.2 seconde) de toestand vna het looploicht veranderen).
- te controleren of je uart klaar is en de volgende letter toevoeren
- je klok door te laten tellen

met 5000 tijdvakjes per seconde moet je dus tijd genoeg hebben om alles te doen, vermijd alleen om "wacht" tijd in te bouwen, los dat op met je interrupt!

Meep! Meep!

Hij krijgt sowieso niet voorelkaar dat hij met een 8 bits timebase precies 200 us maakt, dat is natuurlijk deel van de opdracht om dat verschil, wat een fractie van een preset count is, te compenseren.

De eigen bijdrage beperkt zich tot het overnemen van code van lessen die niet van toepassing is.

Ik vertrek van hier, verdere bijdragen niet van mijn hand, wat een ramp. Geen wonder dat door de eeuwen heen beschavingen opkwamen en verdwenen.

Dit topic is gesloten