Compiler geeft error

Hallo:
Ik ben de Afstand bediening RC5 van Frits Kieftenbelt aan het bouwen,waar je de broncode ook kunt aanpassen.Als ik de code in de Proton Compiler zet en ik druk op F9 dan krijg ik 3x Error,de vraag is dan ook wat gaat hier fout zie bijlage. (Ik heb noch geen veranderingen toe gepast)
Mvrgr Bert

Electronica is mooi als het goed werkt
Arco

Special Member

De fout is toch duidelijk:
De symbols die je probeert te definen bestaan al als 'reserved' in de compiler/preprocessor zelf, dus dat gaat niet.
De meeste schakelingen op Picbasic zijn voor een oeroude compilerversie geschreven, dus je zult de verschillen uit moeten vlooien...

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Ik heb de broncode aangepast,en de regel (PortB_pullups ON) verwijderd.Zie bijlage, nu compileerd hij wel.Geen Error. Maar wel de vraag wat er met de (Pullups On) moet gebeuren?

Electronica is mooi als het goed werkt
Arco

Special Member

Zal wel in de manual staan? Er moet 'Declare' voor...

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

je moet je even in de nieuwste manual verdiepen, er is namelijk wel het een en ander sinds de PicBasic cursus

Just find out what you like and let it kill you

Het is gelukt :) Allen bedankt voor de spontane inzet,zie bijlage dat is het geworden.
Mvrgr Bert.

Electronica is mooi als het goed werkt

Even voor de goede orde: "HOOG = 0" en "LAAG = 1" is wat de compiler betreft prima. Maar wat mij betreft een "shooting offence". Je kan iemand die de code verderop probeert te begrijpen enorm in de war brengen.

Het zou kunnen dat ergens in je systeem een signaal zich inverteert, dus dat je de pin laag moet maken om jou output HOOG te maken.
Noem de define dan "MIJNSIGNAAL_HOOG" en "MIJNSIGNAAL_LAAG". Zoals het er nu staat lijkt het een "handige define" voor als een output laag of hoog moet worden, maar DOET het precies het omgekeerde.

[Bericht gewijzigd door rew op zaterdag 13 oktober 2018 17:09:49 (44%)

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Arco

Special Member

Ik zet er in dat soort gevallen (voor de duidelijkheid) altijd een '_' voor ('_HOOG', "_LAAG'), maar dat schijnt in Picbasic niet toegestaan...

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

rew en Arco; bedankt voor de tip ik zal er rekening mee houden als ik de PIC ga programmeren.

Electronica is mooi als het goed werkt
Arco

Special Member

Voor programmeren maakt 't niets uit; maar wel voor de duidelijkheid.
Anderen (en jijzelf ook als je de code terugziet later) gaan er vanzelfsprekend niet van uit dat 'HOOG' eigenlijk laag is, en 'LAAG' eigenlijk hoog... :)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

ON,AAN,HOOG. dit is toch allemaal logisch 1.En OFF,UIT,LAAG. is toch allemaal logisch 0. Of is dit te kort door de bocht.

Electronica is mooi als het goed werkt
Arco

Special Member

Klopt,
Daarom is het uiterst onlogisch om 'HOOG=0' en 'LAAG=1' te gebruiken zoals je nu doet... :)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
maartenbakker

Golden Member

Zo uit het hoofd gezegd, zet Apple een _L achter lijnen die geïnverteerd werken. Het is maar net welke conventie je gebruikt, maar HOOG=0 zou ik ook nooit gebruiken.

[Bericht gewijzigd door maartenbakker op zondag 14 oktober 2018 16:33:04 (14%)

www.elba-elektro.nl | "The mind is a funny thing. Sometimes it needs a good whack on the side of the head to jar things loose."

Maar Frits Kieftenbelt heeft dit zo bedacht, en dat is toch ook geen domme jongen, zie mijn eerste post.En met de kennis die ik heb weet ik niet beter dan dat het daar goed staat.Alleen AAN en UIT is HOOG/LAAG geworden.Anders pakte de Compiller hem niet.

Electronica is mooi als het goed werkt
Hensz

Golden Member

Op 14 oktober 2018 17:13:24 schreef Bertjebuk:
en dat is toch ook geen domme jongen,

Daar begin ik dan wel aan te twijfelen bij dit soort definities.
Doe dan net zoals rew en verzin iets fatsoenlijks, keus genoeg!
UITGANGHOOG, INGANGLAAG, PINISNUL, PINISEEN, NULISEEN, EENISNUL, MIJNHOOGISJOULAAG, etc., enz.
Beter is nog steeds om gewoon meer definities bij te maken: LAMPAAN, MOTORUIT, LINKSOM, e.d. Die definieer je dan op hoog of laag al naar gelang wat je op die uitgang nodig hebt. Je code wordt er ook ineens een stuk leesbaarder door. Iemand hoeft niet meer te denken wat een LAAG ergens doet, hij ziet direct dat er ergens een lampje moet gaan branden!

Don't Panic!

Kennelijk had een originele programmeur "ON = 1" en "OFF = 0" als "handige woordjes voor getallen" in het programma gezet. Voor dingen als LED=13 en dan: "digitalWrite (LED, ON);" is zoiets handig. Als daar digitalWrite (13,1); had gestaan kost het meer moeite om te bedenken dat de LED daar ON gezet wordt.

Moderne compiler gebruikt intern de woorden "ON" en "OFF" dus die mogen niet. meer. Als jij dan alle "ON" door "AAN" vervangt en "OFF" wordt "UIT" dan werkt het weer.

Maar als je dan HOOG=0 en LAAG=1 gaat schrijven dan breng je heel snel mensen in verwarring. Het klassieke voorbeeld is van een programmeur die een paar weken later z'n eigen code weer moet herkennen. In dit geval heb ik bewijs dat de programmeur (jij) twee dagen later al in verwarring bent. Jij schrijft:

Op 14 oktober 2018 16:05:47 schreef Bertjebuk:
ON,AAN,HOOG. dit is toch allemaal logisch 1.

terwijl in de code HOOG=0 staat.

Met het "SYMBOL <woordje> = <getal>" zeg je tegen de compiler: Ik wil <woordje> schrijven waar ik <getal> bedoel. Behalve dan dat <woordje> geen woord mag zijn wat de compiler zelf al gebruikt, maakt het hem geen donder uit wat het woordje of het getal is. Compiler denkt: "Mij best, voortaan waar jij <woordje> schrijft lees ik <getal>". Als jij schrijft "SYMBOL PI = 1.41421356237309504880" dan leest ie gewoon 1.41... als jij PI schrijft. Maar gebruik je rare woorden en getallen dan kan je verwarring krijgen. Als je even later "omtrek := straal * 2 * PI;" doet, dan rekent ie gewoon 2.28*straal uit en dat is bij lange na niet de omtrek van je cirkel.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Arco

Special Member

Op deze manier is het veel duidelijker om de symbols helemaal weg te laten... ;)
Gewoon weer 1 en 0 gebruiken. Scheelt code en het is niet vatbaar voor misinterpretatie. (WYSIWYG)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Er is een spanningsveld
vb

code:


als        voorwaarde1 dan Lampje = AAN
anders als voorwaarde2 dan Lampje = UIT
anders                     Lampje = Knipperen

Bovenstaande code is eenvoudig te begrijpen.
Je ziet precies wanneer het lampje moet knipperen en wanneer het uit is.
Bij het testen wordt het wat lastiger.
Op enig moment tijdens de testfase kijk je wat de waarde van 'Lampje' is.
Je vind dan de waarde '2'
Is dat 'AAN' of 'UIT' of 'Knipperen'?
Dan moet je weer in de SYMBOLS gaan kijken.
Bij hele korte programma's en weinig symbolen is dat nog te overzien.
Bij grote programma's wordt het heel snel lastiger.

Op 14 oktober 2018 19:32:21 schreef rew:
Als jij schrijft "SYMBOL PI = 1.41421356237309504880" dan leest ie gewoon 1.41... als jij PI schrijft. Maar gebruik je rare woorden en getallen dan kan je verwarring krijgen. Als je even later "omtrek := straal * 2 * PI;" doet, dan rekent ie gewoon 2.28*straal uit.

Merkwaardige compiler heb je. Ik had verwacht 2.82*straal

[Bericht gewijzigd door ohm pi op zondag 14 oktober 2018 20:55:50 (25%)

Op 14 oktober 2018 20:50:00 schreef ohm pi:
[...]Merkwaardige compiler heb je. Ik had verwacht 2.82*straal

Ik heb vier keer moeten kijken voordat ik het zag. Zo a-subtiel kunnen fouten zich verstoppen.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Allen bedankt voor de wijze lessen,ik neem dit mee in mijn verdere ontwikkeling programmeren :)
Mvrgr Bert

Electronica is mooi als het goed werkt

Op 14 oktober 2018 17:13:24 schreef Bertjebuk:
Maar Frits Kieftenbelt heeft dit zo bedacht, en dat is toch ook geen domme jongen, zie mijn eerste post.En met de kennis die ik heb weet ik niet beter dan dat het daar goed staat.Alleen AAN en UIT is HOOG/LAAG geworden.Anders pakte de Compiller hem niet.

Nee, het is geen domme jongen maar hij heeft in zijn enthousiasme een aantal dingen gedaan die elke logic tarten. En dit is de belangrijkste.

Just find out what you like and let it kill you

Volgens mij is HOOG=0 een bertjebug verzinsel. (typefout laten staan).

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

bertjebug heeft Kieftenbelts 'AAN' gewijzigd in 'HOOG' en Kieftenbelts 'UIT' gewijzigd in 'LAAG'. Niks mis mee.
Kieftenbelts definities zijn een beetje verwarrend.
Uit Kieftenbelts site:

code:



;Logische aliases (constanten)
SYMBOL AAN         = 0       ;Omgekeerd ON
SYMBOL FALSE       = 0
SYMBOL OFF         = 0
SYMBOL ON          = 1
SYMBOL TRUE        = 1
SYMBOL UIT         = 1       ;Omgekeerd OFF

Het Engelse 'OFF' is in het Nederlands 'UIT' maar niet voor dhr Kieftenbelt
Het Engelse 'ON' is in het Nederlands 'AAN' maar niet voor dhr Kieftenbelt

[Bericht gewijzigd door ohm pi op maandag 15 oktober 2018 22:37:11 (15%)

Arco

Special Member

HOOG/LAAG is natuurlijk wel wat anders als ON/OFF... (hoewel beide vatbaar zijn voor verkeerde uitleg)
HOOG kan niet anders als '1' zijn, en LAAG is '0'. Bij ON/OFF iets genuanceerder: het kan zijn dat een led aan gaat als je een pin laag maakt.
(maar duidelijker maakt het de zaak niet echt...)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Oeps,er ging wat mis.

[Bericht gewijzigd door Bertjebuk op dinsdag 16 oktober 2018 19:15:41 (100%)

Electronica is mooi als het goed werkt