Analoog via PC aansturen

Gestart door raf, 21 december 2013, 09:55:11 AM

raf

#45
Ik ben dus opnieuw begonnen en hopelijk vinden jullie deze opzet beter dan de vorige
Al weet ik dus niet hoe je dit overzichtelijker kunt vinden

program signaal3
' MCU: 16F628A


symbol S1 = portB.0
symbol S2 = portB.1
Symbol vrijgave = PORTB.4
Symbol frequentie = 2000
Symbol groen = PORTA.0
Symbol rood = PORTA.1
Symbol bezet = PORTA.2
        PWM_Init(2000)
        Pwm_Start
        Pwm_Change_Duty(a)
    dim a as word


main:

PORTB = %00000000
TRISB = %00010111

PORTA = %00000000
TRISA = %00000000
a = 0
doorrijden:
   If vrijgave = 0 then
       rood = 0
       groen = 1
   if S1 = 1 then
      a = 255
      portA.2 = 1
       else a = 0
       porta.2 = 0
       end if
   if S2 = 1 then
      a = 255
      porta.2 = 1
     end if
    end if
  remmen:
  if vrijgave = 1 then
  groen = 0
      rood = 1
      a = 255
  if S1 = 1 then
    Dec(a)
'hier pwm ?,
      if a = (10) then
    a = 10
    end if
  end if
  end if
  if S2 = 1 then
  a = 0
  end if

  optrekken:
  if vrijgave = 0 then
       rood = 0
       groen = 1
       a = 0
       inc (a)

'hier pwm
          if a = (254) then
    a = 255
    end if
   
  end if
  if vrijgave = 1 then
  porta.2 = 0
  groen = 0
    rood = 1
    end if
 
 
end.


alleen krijg ik dus de pwm niet aan het werken
en de met  Symbol bezet = PORTA.2 werkt ook niet als ik bezet = 1 doe
eens kijken of bezet (1) wel wil werken

Je ziet ik werk er aan al is het aards moeilijk om dit te begrijpen voor mij

Juist het programma getest en het werkt voor geen meter
de schakelaars zijn wel ontdenderd maar het signaal word nooit rood alleen het bezet signaal word wel geactiveerd
de led's flikkeren als zot en dat had ik voor heen niet
enig idee want er verkeerd is ???
gr raf
If I make mistakes in "spelling"
Remember it's the pen, that's bad
Don't lay the blame on me.

PeterC

Citaat van: raf op 06 februari 2014, 19:25:53 PM
...Je ziet ik werk er aan al is het aards moeilijk om dit te begrijpen voor mij...

Lezen tijdens het ontwaken, tijdens de ontbijttafel, op het toilet, tijdens het wachten op de bus, op de trein, ..., tijdens het avondmaal, voor het naar bed gaan, tijdens  :o :o :o     :) :) :)

Lees/leer de datasheet  ;)


Groetjes, Peter


raf

hallo

Peter de datasheet geeft geen probleem.
De kleinere programma's werken in proton zonder problemen .
Maar de PBP is gewoon een shit programma.
Er is een forum maar de laatste postings zijn van 2 jaar terug.
Erg veel hulp krijg je daar echt niet en op het proton forum wel.
Niet dat ik vraag dat iemand mijn programma's schrijft want dat wil ik zelf doen anders leer ik het nooit.
Maar enige hulp is welkom
Het is niet dat ik het niet kan leren maar als je tussen 4 beton muren zit met alleen een nagelvijltje probeer dan maar eens buiten te geraken.
Als er dan iemand een drilboor aan reikt neem je die graag aan maar een hamer en bijtel ben ik ook reeds blij
Ik zal wel kappen om buiten te geraken .
gr raf 
If I make mistakes in "spelling"
Remember it's the pen, that's bad
Don't lay the blame on me.

raf

Ik begrijp helemaal niet waarom die compiler
Micro BASIC pro heeft
heel dat programmeren heeft geen mm te maken met basic
een eenvoudig probleem kun je met die compiler niet oplossen
dysplays en can bussen en ethernet en wat je maar kunt verdenken
maar een eenvoudig programma schrijven welk moet werken met maar eigenlijk 3 schakelaars lukt niet
in Micro Basic pro
als ik die shit schrijf in GWBASIC dan werkt het programma meteen zonder problemen
dan kan ik via een printer poort meteen een signaal sturen
wissels om zetten en treinen laten rijden
dus aan het programmeren kan het echt niet liggen

hier een regel in proton
If vrijgave = 0 and S1 = 0 and S2 = 0 then
gosub vrij


werkt perfect in Proton maar in micro basic voor geen meter
nee dan moet het dit worden

if ((vrijgave=0) and (S1=0) and (S2 = 0)) then
gosub vrij

in proton de pwm

declare CCP1_Pin PORTB.3

Hpwm 1 ,a, 2000


in MBP
PWM1_init (2000)


PWM1_start
PWM1 set_Duty(a)
PWM1_stop

Dus ik snap er de ballen niet meer van en ik wacht tot ik de amica 18 of de proton kan aan kopen
voor ik nog tijd,geld en energie ga steken in de rest .

Gr raf die het nu echt effe niet meer ziet zitten.
If I make mistakes in "spelling"
Remember it's the pen, that's bad
Don't lay the blame on me.

Stieven76

Raf, ik weet niets van pic programmeren, wel een beetje van VB.net, C# en javascript.  ;)


Je kan je if structuur een beetje vereenvoudigen door de middelste ronde haakjes weg te laten, al veranderd dat niets aan de werking. Je bent toch ook je end if niet vergeten? Maar normaal krijg je dan wel compile errors vermoed ik.



if (vrijgave=0 and S1=0 and S2 = 0) then
gosub vrij
end if



Welke taal gebruik je eigenlijk juist? De code in je voorbeeld lijkt me heel hard op VB.net te trekken.

raf

#50
@ stieven

ik heb vroeger sinclair basic geleerd en GWbasic.
uit die twee is dan VB gekomen en dan 1000 afleidingen daar op
die "micro basic pro" heeft noppes nog met basic te maken
Die basic is zo ingewikkeld dat je der knetter van word
de "proton"basic is doenbaar en ik weet dat de pic gerelateerde instructies iets is wat ik moet leren .
daar maak ik ook geen probleem van en ik leer snel
maar als de gewone standaard instructies opeens niet meer blijken te werken dan is het hek van den dam
dit is de code die ik nu geschreven heb en deze zou goed moeten zijn buiten de eerste 10 lijnen met de fuse instellingen
deze werken niet daar ik dit in amica18 heb geschreven (wat een soort van proton kloon )is
alleen de gratis versie werkt met een andere processor dan ik gebruik en dan komen de fuses die je moet zetten niet uit en krijg je een error
maar daar kan ik voorlopig mee leven omdat hier de rest van de basic wel werkt
hier de nieuw geschreven code.

;program signaal3
Device 16F628A
 
Config INTRC_OSC_NOCLKOUT,_  ; Interne oscilator aan
       WDT_OFF,_             ; WatchDog Timer uit
       PWRTE_ON,_            ; Power-up Timer Enable aan
       MCLRE_ON,_            ; Externe Master Reset Enable aan
       BODEN_OFF,_           ; Brown Out Detectie Enable uit
       LVP_OFF,_             ; Low-Voltage Programming uit
       CP_OFF                 ; Code Protection uit

Xtal=4
All_Digital= TRUE
Symbol S1 = PORTB.0
Symbol S2 = PORTB.1
Symbol vrijgave = PORTB.4
Symbol frequentie = 2000
Symbol groen = PORTA.0
Symbol rood = PORTA.1
Symbol bezet = PORTA.2
Declare CCP1_Pin = PORTB.3
    Dim a As byte



  S1 = 1
  S2 = 1
PORTB = %00000000
TRISB = %00010111

PORTA = %00000000
TRISA = %00000000
a = 0
begin:

  If vrijgave = 0 And S1=0 And S2 = 0 Then
  GoSub vrij
   End If
  If vrijgave = 1 Then
   GoSub bezet1
   End If
   If vrijgave = 0 And S2 = 1 Then
   GoSub optrekken
   End If
   GoTo begin
vrij:
     rood = 0
     DelayMS 100
     groen = 1
     If vrijgave  = 1 Then GoTo bezet1
     If S1 = 1 Then GoTo doorijden
     GoTo vrij
   doorijden:
If S1 = 1 Then
       bezet = 1
         a = 255
    HPWM 1,a,2000 ;  poort B.3 (PWM)       
          End If       
        Return
       
bezet1:
      bezet = 1
      groen = 0
      DelayMS  100
      rood = 1
      If S1 = 1 Then GoTo remmen
      If vrijgave = 0 Then Return   
      GoTo bezet1
     
   remmen:   
For a = 255 To 10  Step -1
     DelayMS 100
    HPWM 1,a,2000 ;  poort B.3 (PWM)   
      Next a
     return
optrekken:
     bezet = 1
   For a = 0 To 255
   DelayMS 100
  HPWM 1,a,2000 ;  poort B.3 (PWM)
  If vrijgave = 1 Then bezet = 0
  Next a
   Return

End


deze is vlotter geschreven en minder goto en gosub gebruikt al is het haast onmogelijk om deze helemaal niet te gebruiken.
groeten raf
If I make mistakes in "spelling"
Remember it's the pen, that's bad
Don't lay the blame on me.

ysbeer

Waarom gebruikt niemand hier Qbasic in prof,uitvoering heeft die zelf een mogelijkheid om je programma naar machine tall om te zetten.(veel sneller)
Ook de lastige gosub is vervangen door case select,en regelnummers zijn niet meer nodig.

Modern is dit natuurlijk ook niet,maar het werkt goed en betrouwbaar.
Voordeel is dat ,vind ik,dat je snel even iets kunt proberen.

wim


raf

Hallo Wim
Qbasic ??????
ik ben gewoon om in GWBasic te programmeren maar dat omzetten naar een hex file ????
ik denk niet dat het zo eenvoudig is
maar Q basic verschilt niet zo erg veel van Gwbasic
maar ik denk dat om een pic te programmeren  Qbasic misschien niet genoeg kan wat programmatie aan gaat
hoe doe je het BV met de switches en dergelijke
heb je reeds een progje in Qbasic dan ben ik wel eens benieuwd naar de op bouw daar van

mijn baan werkte vroeger via een pc en de printer poort en heel dat programma was geschreven in gwbasic
wat wel goed werkte maar beperkingen had
ik kon maar 255 zaken sturen in totaal en daarom ben ik nu over geschakeld naar die pic processoren
als ze eenmaal lopen zijn ze stukken makkelijker om op te bouwen en veel goed koper
en ze kunnen meer dan wat ik met de pc kon doen

gr raf
If I make mistakes in "spelling"
Remember it's the pen, that's bad
Don't lay the blame on me.

ysbeer

Qbasic en ook de prof.uitvoering van Qbasic zijn de opvolger van GWbasic
Ze kan veel meer dan GWbasic en ook slimmer.
Het goto en gosub is vervangen door een sub functie .Daar mee schrijf je kleine hulpprogrammas die je overal in het programma kunt aan roepen.
Dus niet meer een spagheti program met gosubs en goto .
De prof.uitvoering van qbasic bevat een compiler voor het omzetten naar machine taal.
Even wennen maar het werkt perfect.
Qbasic en zeker de prof.uitvoering is veel en veel beter dan gwbasic.

Als je het prof,programma wilt hebben kan ik wel een CD sturen (tegen verzend kosten)

Wie in gw kan programmer kan dat ook in QBasic.

Een boek is eventueel wel bij mij te leen.

Heel mijn baan draait op qbasic (niet digitaal)maar dat zou ook kunnen.

wim

raf

Hallo Wim

juist van de mensen van proton een fikse korting gekregen
en dus het programma aan gekocht
het verschil was maar eventjes een 80 euro en das mooi mee genomen
plus ik krijg het volledige devolopment  en test pakket er gratis bij
hopelijk krijg ik het pakket snel in huis

gr raf 
If I make mistakes in "spelling"
Remember it's the pen, that's bad
Don't lay the blame on me.

PeterC

Citaat van: raf op 12 februari 2014, 17:46:35 PM
...het verschil was maar eventjes een 80 euro en das mooi mee genomen...

Ik vind nergens een prijs van die Proton Basic.  Maar bij 80 Euro verschil kan ik me wel al iets voorstellen...
Groetjes, Peter


raf

hallo peter

ik moet nu 100£ betalen en het was 180£
een heel verschilletje mijn gedacht

gr raf
If I make mistakes in "spelling"
Remember it's the pen, that's bad
Don't lay the blame on me.

PeterC

Raf,

121 Euro ipv 219 Euro.  Flink voordeel, maar wel nog veel geld voor een (vrij onbekende) compiler.  Er zijn heel wat bekende gratis (freeware en open-source) compilers zomaar te downloaden en waar je via diverse fora ruime ondersteuning voor krijgt...
Blijkbaar wil je vasthouden aan Basic.  Maar het woord zegt genoeg.

Citaat van: raf op 10 februari 2014, 20:43:51 PM
Qbasic ??????
ik ben gewoon om in GWBasic te programmeren maar dat omzetten naar een hex file ????
ik denk niet dat het zo eenvoudig is

QBasic en GWBasic zijn talen die geschreven zijn om (minimalistische) PC programmaatjes te schrijven (DOS programma's - geen grafische interface).  De code porteren naar een controller?  Onmogelijk zonder veel aanpassingen!

Om controllers te programmeren heb je een taal/compiler nodig die geoptimaliseerd is voor dat type controller. Als QBasic en GWBasic (PC) gebruiker ga je misschien iets snappen van wat in een Basic controller programma staat maar zonder kennis van de datasheet van de controller gaat er toch nog veel Chinees in staan.

Eén raad voor diegene die met controllers willen werken (een herhaling van één van de vorige posts): sta op met de datasheet, ontbijt ermee, ga ermee naar het toilet, gebruik een geplastificeerde versie voor onder de douche, lees ze constant!  Voor vb een PIC 18F2550 is die datasheet 426 pagina's!  ...Maar iedere pagina bevat belangrijke informatie om die controller te begrijpen...  ...En die voor jou te laten werken!

Ik heb totaal geen probleem met Basic en de gebruikers ervan en voor mijn werk ben ik nu en dan verplicht om VBA te gebruiken (maar ik zie het eerder als een verplichting en werk veel liever in een taal met veel meer mogelijkheden - striktere regels).

Groetjes, Peter


raf

Hallo Peter

ik heb de volledige datasheet op mijn tablet staan
maar daar alleen red je het niet mee
de proton compiler is niet onbekend en die van Mp lab daar word ik knetter van
die hebben nog niet eens een goeie fout melding en die heeft proton wel
wat amica18 betreft  die is gratis en ook weer niet
je kan tot 2 k programmeren en je hebt maar de keuze uit twee processoren
ik heb nu reeds een pic aan het werk en reeds programma's klaar als ik de sleutel van proton in huis heb
deze zijn getest en werken reeds zoals gedacht
maar ik kan er nu op het ogenblik geen hex file van maken door de beperking van 50 regels

basic daar kan je enorm veel mee want alles wat er nu is had nooit bestaan zonder basic
er is geen enkel commando dat je in een andere taal kunt doen wat niet in basic kan gedaan worden
misschien in basic iets omslachtiger maar het kan gewoon geprogrammeerd worden
Hier al de woorden die bruik baar zijn om je programma te schrijven

A
ABS,  ACOS, ACTUAL_BANKS, ADC_RESOLUTION, ADIN, ADIN_RES, ADIN_STIME, ADIN_TAD
ALL_DIGITAL, ASM, AVAILABLE_RAM, ASIN, ATAN

B
BANK0_END, BANK0_START, BANK10_END, BANK10_START, BANK11_END, BANK11_START
BANK12_END, BANK12_START, BANK13_END, BANK13_START, BANK14_END, BANK14_START
BANK15_END, BANK15_START, BANK1_END, BANK1_START, BANK2_END, BANK2_START
BANK3_END, BANK3_START, BANK4_END, BANK4_START, BANK5_END, BANK5_START
BANK6_END, BANK6_START, BANK7_END, BANK7_START, BANK8_END, BANK8_START
BANK9_END, BANK9_START, BANK_SELECT_SWITCH, BANKA_END, BANKA_START
BIN, BIN1, BIN2, BIN3, BIN4, BIN5, BIN6, BIN7, BIN8, BIN9, BIN10, BIN11, BIN12
,BIN13, BIN14, BIN15, BIN16, BIN17, BIN18, BIN19, BIN20, BIN21, BIN22, BIN23, BIN24, BIN25
,BIN26, BIN27, BIN28, BIN29, BIN30, BIT, BOOTLOADER, BOX, BRANCH
BRANCHL, BREAK, BRESTART, BSTART, BSTOP, BUS_DELAYMS, BUSACK, BUSIN, BUSOUT
BUTTON, BUTTON_DELAY, BYTE

C
CALL, CASE, CCP1_PIN, CCP2_PIN, CDATA, CERASE, CHR$, CIRCLE, CLEAR, CLEARBIT, CLS
CON, CONFIG, CONTEXT, CORE, COS, COUNT, COUNT_ERRORS, COUNTER, CREAD, CURSOR, CWRITE

D
DA, DATA, DB, DC, DCD, DE, DEC, DEC1, DEC2, DEC3, DEC4, DEC5, DEC6, DEC7, DEC8, DEC9, DEC10
DECLARE, DEBUG, DEFINE, DELAYMS, DELAYUS, DEVICE
DJC, DJNC, DJZ, DJNZ, DIG, DIM, DISABLE, DIV2, DT, DTMFOUT, DW, DWORD

E
EDATA, EEPROM_SIZE, ELSE, ELSEIF, ENABLE, END, ENDSELECT, ENDASM
ENDIF, ENDM, EQU, EREAD, ERRORLEVEL, EWRITE, EXITM, EXP, EXP10, EXPAND
EXP

F
FILE_REF, FLASH_CAPABLE, FLOAT, FONT, FONT_ADDR, FOR, FREQOUT, FSRSAVE

G
GETBIT, GLCD_CS_INVERT, GLCD_FAST_STROBE, GOSUB, GOTO

H
HBRESTART, HBSTART, HBSTOP, HBUS_BITRATE, HBUSACK
HBUSIN, HBUSOUT, HEX, HEX1, HEX2, HEX3, HEX4, HEX5, HEX6, HEX7, HEX8
HIGH, HPWM, HRSIN, HRSOUT, HSERIAL_BAUD
HSERIAL_CLEAR, HSERIAL_PARITY, HSERIAL_RCSTA, HSERIAL_SPBRG, HSERIAL_TXSTA

I
I2CREAD, I2CWRITE, IBIN, IBIN1, IBIN2, IBIN3, IBIN4, IBIN5, IBIN6, IBIN7, IBIN8, IBIN9, IBIN10, IBIN11, IBIN12
IBIN13, IBIN14, IBIN15, IBIN16, IBIN17, IBIN18, IBIN19, IBIN20, IBIN21, IBIN22, IBIN23, IBIN24, IBIN25
IBIN26, IBIN27, IBIN28, IBIN29, IBIN30,ICD, IDATA, IF
IHEX, IHEX1, IHEX2, IHEX3, IHEX4, IHEX5, IHEX6, IHEX7, IHEX8
INC, INCLUDE, INKEY, INPUT, INTERNAL_BUS, INTERNAL_FONT, IJC, IJNC, IJNZ, IJZ
ISBIN, ISBIN1, ISBIN2, ISBIN3, ISBIN4, ISBIN5, ISBIN6, ISBIN7, ISBIN8, ISBIN9, ISBIN10, ISBIN11, ISBIN12
ISBIN13, ISBIN14, ISBIN15, ISBIN16, ISBIN17, ISBIN18, ISBIN19, ISBIN20, ISBIN21, ISBIN22, ISBIN23, ISBIN24, ISBIN25
ISBIN26, ISBIN27, ISBIN28, ISBIN29, ISBIN30
ISDEC, ISDEC1, ISDEC2, ISDEC3, ISDEC4, ISDEC5, ISDEC6, ISDEC7, ISDEC8, ISDEC9, ISDEC10
ISHEX, ISHEX1, ISHEX2, ISHEX3, ISHEX4, ISHEX5, ISHEX6, ISHEX7, ISHEX8

J

K
KEYPAD_PORT

L
LCD_CS1PIN, LCD_CS2PIN, LCD_DTPIN, LCD_DTPORT, LCD_ENPIN, LCD_INTERFACE
LCD_LINES, LCD_RSPIN, LCD_RWPIN, LCD_TYPE, LCDOUT, LCDREAD, LCDWRITE
LEN, LEFT$ LET, LIBRARY, LINE, LOADBIT, LOCAL, LOG, LOG10, LOOKDOWN, LOOKDOWNL, LOOKUP, LOOKUPL, LOW

M
MACRO_PARAMS, MAX, MID$, MIN, MSSP_TYPE

N
NCD, NEXT

O
ON, ON_INTERRUPT, ON_LOW_INTERRUPT, ONBOARD_ADC, ONBOARD_UART
ONBOARD_USB, OREAD, ORG, OUTPUT, OWRITE

P
PAGE, PAGESEL, PAUSE, PAUSEUS, PEEK, PEEKCODE, PICMICRO_PAGES
PIXEL, PLOT, POKE, POKECODE, POP, PORTB_PULLUPS, POT, POW, PRINT, PSAVE
PULSIN, PULSIN_MAXIMUM, PULSOUT, PUSH, PWM

Q

R
RAM_BANK, RAM_BANKS
RANDOM, RCIN, RCTIME, READ, REM, REMARKS, REMINDERS, REP
REPEAT, RES, RESET_BANK, RESERVE_RAM, RESTORE, RESUME, RETURN, REV
RIGHT$, ROR, ROL, RSIN, RSIN_MODE, RSIN_PIN, RSIN_TIMEOUT, RSOUT
RSOUT_MODE, RSOUT_PACE, RSOUT_PIN

S
S_ASM, SBIN, SBIN1, SBIN2, SBIN3, SBIN4, SBIN5, SBIN6, SBIN7, SBIN8, SBIN9, SBIN10, SBIN11, SBIN12
SBIN13, SBIN14, SBIN15, SBIN16, SBIN17, SBIN18, SBIN19, SBIN20, SBIN21, SBIN22, SBIN23, SBIN24, SBIN25
SBIN26, SBIN27, SBIN28, SBIN29, SBIN30, SCL_PIN, SDEC, SDEC1, SDEC2, SDEC3, SDEC4, SDEC5, SDEC6
SBREAK, SDEC7, SDEC8, SDEC9, SDEC10
SDA_PIN, SERIAL_BAUD, SEED, SELECT, SERIAL_DATA
SERIN, SERIN2, SEROUT, SEROUT2, SERVO, SERIAL_PARITY
SET, SET_BANK, SETBIT, SET_DEFAULTS, SET_OSCCAL, SHIFT_DELAYUS
SHEX, SHEX1, SHEX2, SHEX3, SHEX4, SHEX5, SHEX6, SHEX7, SHEX8
SHIN, SHOUT, SIN, SLEEP, SLOW_BUS, SNOOZE
SOUND, SOUND2, SQR, SSAVE, STEP, STOP, STR, STRN, STRING, STR$
STAMP_SIN, STAMP_COS, STAMP_SQR, SWAP, SYMBOL

T
TAN, THEN, TO, TOGGLE, TOLOWER, TOUPPER

U
UDATA, UNPLOT, UNTIL, UPPER
USB_CLASS_FILE, USB_DESCRIPTOR, USB_SHOW_ENUM, USBIN, USBINIT, USBOUT

V
VAL, VAR, VARIABLE

W
WAIT, WARNINGS, WATCHDOG, WEND, WHILE, WORD, WRITE, WSAVE

X
XIN, XOUT,  XIN_TRANSLATE, XOUT_TRANSLATE, XTAL

ik denk toch dat ik er mee ga toe komen mijn gedacht

gr raf
If I make mistakes in "spelling"
Remember it's the pen, that's bad
Don't lay the blame on me.

PeterC

OK Raf,
Je hebt me overtuigd...  ...Dat je verder wil in Basic...  ...Sorry, kan je dan niet verder helpen...

Een Lada Niva is een '4x4'.  Een Toyota Hilux ook...  Ze zuipen beiden 12 liter, de ene benzine, de andere diesel, maar het comfort/laadruimte...  ;)

Groetjes, Peter