Ik heb een vraagje...
Als ik in Proton een supersimpel programma maak dat twee ledjes continu laat branden (aangesloten op een PIC 16F628A) werkt dat op het testbordje prima.
Echter als ik met Proteus VSM wil gaan simuleren, (F12 in Proton IDE om programma op te starten) dan geeft ie geen foutmelding, maar de LEDjes die knipperen vrij onregelmatig in plaats van continu.
Heeft iemand hier ervaring mee???
NB ik gebruik Proteus mét licentie, dus niet de gratis probeerversie / demoversie.
Code is gewoon simpel:
DEVICE 16F628A ;We gebruiken een 16F628A type
CONFIG INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
ALL_DIGITAL TRUE ;Alle ingangen digitaal
SYMBOL AantalKnip = 15 ;Het aantal keer dat LED knippert
SYMBOL LedTijd = 500 ;mSec, Knipper snelheid LED
symbol LED1 = portA.1 ; Op poort A.1 zit de LED aangesloten
SYMBOL LED2 = PORTA.2 ;Op poort A.2 zit de LED aangesloten
DIM LedTeller AS BYTE ;Maak variabele LedTeller aan
CLEAR ;Wis alle RAM geheugen
;Hoofdprogramma
while 1 = 1
WHILE LedTeller < AantalKnip ;Zolang teller nog niet de eindstand heeft...
high LED2 ;High = LED aanzetten
DELAYMS LedTijd ;Tijd dat LED aan is
low LED2 ;Low = LED uitzetten
DELAYMS LedTijd * 4 ;Tijd dat LED uit is, 4x langer dan aan
inc LedTeller ;Teller met 1 verhogen
wend ;...deze lus uitvoeren
clear ledteller
while ledteller < aantalknip ;Zolang teller nog niet de eindstand heeft...
high led1
delayms ledtijd
low led1
delayms ledtijd * 4
inc ledteller
wend
clear ledteller
wend
END ;Einde programma
Update: Programma gewijzigd!
Stynus
Met vriendelijke groet, Stynus ||| http://www.elektronicastynus.be
~Galaxy
In the beginning there was nothing.... and even that exploded...
1. Je zet de ledjes uitsluitend aan, en nergens uit.
2. Er is geen timedelay.
3. Je hebt je prog niet in een endless loop gevangen.
Sorry, was net de laatste regel van het programma vergeten mee te kopieeren.
END staat wel in het programma wat ik wil simuleren dus dat is het volgens mij niet.
@~galaxy:
1) het is de bedoeling dat de LEDjes aan blijven. Is alleen maar een test met het Proteus VSM.
2) Moet er dan een time delay zijn als ik ze continu aan wil laten? (Of is dat een stomme vraag??? ha ha)
3) Dacht dat als ik alleen zoiets als <LED1 = AAN> schreef voldoende moest zijn maar er moet dus wel een loop in zitten begrijp ik goed?
~Galaxy
In the beginning there was nothing.... and even that exploded...
Ja, want na een END begint het prog van voor af aan, en met de I/O als input geschakeld.
De reden dat proteus onregelmatig is, is dat je mogelijk niet realtime simuleert.
Doordat je véél te snel wilt gaan, je hebt geen delay. Je doorloopt het programma in enkele ms laat ik zeggen. doordat isis (protheus) dit niet kan volgens, knipperen ze onregelmatig. waarschijnlijk zit ook op CPU load: 100% (staat onderaan)
Ik heb nu exact het programma gebruikt wat ik in de PIC heb geprogrammeerd. (Zie boven)
Daar werkt ie wel, maar in ISIS knippert er maar 1 LED.
Ik heb alleen de knipperfrequentie verhoogd (voor simmulatie) van 10ms naar 500ms.
Dit is overigens zoals ik het in ISIS heb getekend:
Frits Kieftenbelt
Ohm sweet Ohm | www.picbasic.nl
Op 10 mei 2008 11:56:02 schreef ~Galaxy:
Ja, want na een END begint het prog van voor af aan, en met de I/O als input geschakeld.
END stopt het programma (anders zou het ook een nutteloos instructie zijn).
Meer info over END in cursus deel 1:
www.picbasic.nl/beginners1.htm#END