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!

je bent "end" vergeten te zetten op het einde.

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?

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:
http://i36.photobucket.com/albums/e39/Stef_r/image.jpg

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