Een hartelijk hallo aan alle slimmeriken.
Even vooraf, op het gebied van programmeren ben ik zwakbegaafd. Ik ben nu bezig in mijn 80e levensjaar en zal zeker geen prof meer worden.
Ik zit nu echter met een software probleempje. Een klein proces moet gestart worden met een impulscontakt, dus geen duurcommando. Het proces is als volgt.
Na de start wordt een relais aangestuurd en gaat een timer lopen. Na een korte tijd (ca. 6 sec) komt een signaal van een niveaumeter binnen en stopt de timer, relais blijft op. Na einde niveausignaal gaat het proces nog een zekere tijd door (ca 6 sec) en wordt alles gereset en wordt gewacht op een volgende startimpuls.
Het gaat mij in dit geval alleen om de startroutine, de rest los ik wel op.
Ik ga uit van een PIC12F675 en gebruik als taal PIC-basic, en maak gebruik van de Wisp628 en BumbleBee.
Bij voorbaat mijn dank,
Oom Jan
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Op 12 mei 2020 13:51:07 schreef Oom Jan:
Even vooraf, op het gebied van programmeren ben ik zwakbegaafd. Ik ben nu bezig in mijn 80e levensjaar en zal zeker geen prof meer worden.
Gewoon lekker doorgaan. 
Na de start wordt een relais aangestuurd en gaat een timer lopen.
Waar komt die start_puls vandaan?, komt die van de niveauregelaar? of anders?
En hoelang duurt die start_puls?, is dat die 6 sec? of anders?
Arco, bedankt, maar dit zijn te veel onderdelen, het moet klein blijven.
Lambiek, ik ben niet geheel duidelijk geweest. De startpuls komt van een handbediende drukknop en zal ca. een 0,5 duren en zal het programma in de PIC starten. Het gaat mij met name om het starten van het PIC-basic programma zonder duurcommando. De rest van de software los ik wel op.
marcob
Honourable Member
People tend to overestimate what can be done in one year and to underestimate what can be done in five or ten years
Dat kan gewoon een eenvoudiog programma zijn in een oneindige wihle 1=1 lus en dan voer je het uit via IF ingang = 1 Then ....
Wordt behandeld in de eerste lessen van picbasic (ik zag dat je die ook had gevolgd) 
hardbass
PE2BAS
Lastig om te begrijpen wat je wilt. Voor programmeren probeer eens eerst de stappen uit te schrijven voordat je 'echt' gaat programmeren.
Ik denk dat je het volgende wilt bereiken?
Stap 1, Wacht op start signaal
Stap 2, Relais aan
Stap 3, Wachten op niveaumeter
Stap 4, Wachten 6 sec
Stap 5, Relais uit
Stap 6, Ga naar stap 1
Dit lijstje is al praktisch code, in C wordt dit:
while(true) //Voer dit telkens opnieuw uit.
{
While(StartInput() == false); //Wacht op start signaal
SetRelais(true); //Zet relais aan
While(LevelSensor() == false); //Wacht op niveaumeter
Delay(6000); //Wacht 6 sec.
SetRelais(false); //Zet relais uit
}
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Arco, bedankt, maar dit zijn te veel onderdelen, het moet klein blijven.
Tja,,'t Ligt er maar aan wat je klein noemt... 
Past met gemak op een (kleine) postzegel. (relais niet meegerekend)
[Bericht gewijzigd door Arco op (27%)]
Allen bedankt voor het meedenken. Het blijkt dat het soms moeilijk is om een goede vraagstelling op papier te zetten. Waar het mij om gaat, ik zoek het begin van een programma geschreven in PIC-basic waarin een actie wordt gestart met impulscontact. Na het openen van het contact loopt het verder tot- END - van het programma en daarna wordt weer gewacht op een eventuele volgende start.
Alle tussenliggende acties kan ik zelf oplossen.
Ik gebruik een PIC12F675 en maak gebruik van de Wisp628, BumbleBEE en de Proton IDE compiler.
Arco, er moeten 10 schakelingetjes worden gemaakt, dan gaat het met een PIC12F675 iets makkelijker.
marcob
Honourable Member
People tend to overestimate what can be done in one year and to underestimate what can be done in five or ten years
Kan toch zoiets:
Dit blijft in de lus lopen, maar alleen wordt je programma uitgevoerd als de input geschakeld wordt.
WHILE 1 = 1
IF INPUT = 1 THEN ; input wordt actief
WHILE INPUT = 1 : WEND ; wachten tot contact weer open is (anti dender)
rest programma
...
...
...
ENDIF
WEND
ENDIs dit een beetje wat je bedoeld.
Device = 12F675
Xtal 10 ; Kristal 10MHz
Config HS_OSC,_ ; Oscilator op 10MHz INTRC_OSC_NOCLKOUT,_
WDT_OFF,_ ; WatchDog Timer uit
PWRTE_ON,_ ; Power-up Timer Enable aan
MCLRE_OFF,_ ; Externe Master Reset Enable uit
CP_OFF,_
CPD_OFF,_
BOREN_ON,_
IESO_OFF,_
FCMEN_OFF
All_Digital TRUE ; Alle ingangen digitaal
Symbol S1 = GPIO.0 ; Ingang drukknop
Dim START_BIT As Bit ; Variabele
Clear ; Wis geheugen
;543210 ; Hulpregel Poort IO
GPIO = %000000 ; Zet poort op nul
TRISIO = %000001 ; Poort I/O
;---------------------------------------------------
START_BIT = 0
START:
If S1 = 1 Then
START_BIT = 1
DelayMS 100
EndIf
If START_BIT = 1 Then
If S1 = 0 Then
DelayMS 100
GoTo RUN
EndIf
EndIf
GoTo START
RUN:
; JOU DING
; JOU DING
; JOU DING
START_BIT = 0
; EN ALS JE KLAAR BENT
GoTo START
GoTo RUN
END
Als je S1 "jou drukknop" indrukt en loslaat ga je naar het gedeelte waar jou programma komt. Je moet even kijken of je drukknop op de goede ingang zit, dat ik hier vandaan niet beoordelen. 
MGP
LDmicro user.
Is de interne oscillator niet voldoende? waarschijnlijk heeft Lambiek dat uit een van zijn andere programma's gefilterd.
Dat bespaart weer wat componenten.
Op 12 mei 2020 19:49:42 schreef Oom Jan:
Ik gebruik een PIC12F675 en maak gebruik van de Wisp628, BumbleBEE en de Proton IDE compiler.
Arco, er moeten 10 schakelingetjes worden gemaakt, dan gaat het met een PIC12F675 iets makkelijker.
Wanneer je bedenkt dat de de 4 logische poorten op één IC zitten dan is het aantal onderdelen al een heel stuk minder. Maar toch begrijp ik je standpunt want wanneer je alle hardware reeds 'aan boord' hebt en met wat code te schrijven het gewenste resultaat kunt bereiken, dan is bij wijze van spreken iedere diode nog teveel. Vooral bij meerdere schakelingen, met (eventueel) hetzelfde programma.
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
MGP
LDmicro user.
Uit verveling een klein programmaatje gemaakt, kun je zo in de pic programmeren.
De werking is zoals Hardbass het opgelijst heeft.
pin2 = niveau NC contact (naar de + of naar de GND schakelen met pulldown of pullup weerstand naargelang het soort contact).
pin3 = startknop .. 5V in = start
pin5 = relaisoutput
pin7 = start led output (led met weerstand naar de GND)
Jammer genoeg niet in picbasic