ik had een vraag ik had een programmatje gemaakt. en deze werkt netjes naar behoren.

vervolgens dacht ik de eeprom aan te sturen, om zo data te behouden als de print spanningsloos is. maar goed dit hoef ik natuurlijk niet uit te leggen.

ik heb even kort samen gevat wat ik gedaan heb in mijn programma

als ik dit toevoeg, dan gebeurd er helemaal niks meer.
het is net alsof hij nummer 1 niet als 1 ziet, en zodoende natuurlijk alle keuze opties overslaat.
doe ik iets fout.

;16f628A

dim racept as word

;EEPROM adresnamen

SYMBOL EE_racept = 0

hoofd:

racept = eread ee_racept
if s1 = aan then goto start

goto hoofd:

start:
delayms 25
if racept = 0 then ewrite 1:goto prg1
if racept = 1 then ewrite 2:goto prg2

goto hoofd

prg1:
......

prg2:
......

programeer je de eerst keer de EEPROM wel mee, die moet gevuld worden met een 1 of 0

staan die standaard niet allemaal op FFFF ?

je DIM =word , das 8 bits

dus racept kan een waarde hebben van 0 tot ?? zeg 1028?
doed er ook niet toe,

jij kijkt of die 1 of 0 is maar deze is 1028, dus je programa gaat nergens naar toe.

je kunt eens poberen
start
if racept <> 1 then goto prog0
if racept = 1 then goto prog1

goto start

[Bericht gewijzigd door Shiptronic op (54%)]

Goto hoofd: moet GoTo hoofd zijn. (Geen : )
Bij EWRITE moet je een adres en een variabele / constante opgeven.

EWRITE Adres, [Variabele]

moet het zijn.
(Zelf adres en variabele / constante invullen.)
En mijn lite-versie (neem aan dat je de lite gebruikt) vindt het niet leuk dat je 2 commando's op een regel propt. (Bij de if-then.)

If racept = 0 Then
EWrite Adres, [Variabele]
GoTo prg1
ElseIf racept = 1 Then
EWrite Adres, [Variabele]
GoTo prg2
EndIf

(Ook hier zelf variabele / constante en adres invullen.)

Je krijgt als je compileert ook errors, daar staat een boel info in.

Check eerst of je data wel fatsoenlijk in eeprom zijn weggeschreven. Dat is namelijk relatief tijdrovend, dus heb je bij spanninguitval een dikke cap op je 5V voeding nodig.

Ik heb ook wel eens gedacht dat e.e.a. in een msec. geregeld zou zijn. Bleek in de praktijk best wel tegen te vallen.

okee ik ga even kijken als ik het specifieker in vul wat hij dan doet.

en anders waar ik al bang voor was en al gemeld werd, even kijken wat bijv 0 geeft als waarde, en deze dan gebruiken. als de rest niet werk. dan moet het ook werken lijkt mij.

dat met die cap, is normaal als je dus de boel uit zet, dat hij nog tijd heeft om weg te schrijven dit is mij bekend.

maar voor nu schrijf ik bij de druk op de knop meteen weg naar de eeprom, mocht ik dan inderdaad meteen de boel uitzetten, dan gaat het fout, maar blijft de boel aan, want in dat geval toch zo zal zijn. dan moet het goed gaan.

maar ik ga alle gegeven info hier even doorlopen.

ps: dit was een voorbeeld gedeelte uit mijn programma. niet het eigenlijk programma. de dubbele punt is mij bekend, maar bedankt voor de melding.

het programma werkt namelijk zonder de eeprom funktie.

en de waarde dat deze in het begin nog niet goed staat is mij ook bekend, en heb inderdaad voor de eerste keer even de eeprom geprogrammeerd met een waarde. maar ook weer bedankt voor de melding

het schrijven naar de eeprom is gelukt.

ik heb alleen nog wat moeite met de 0 waarde maar daar komen we ook nog wel uit.

bedankt.

[Bericht gewijzigd door Henry S. op (14%)]

Elk EEPROM adres kan maximaal 8 bits bevatten.
Je hebt variabele 'Racept' gedeclareerd als WORD, en dat is 16 bits.
Als je de EEPROM nu gaat uitlezen met
Racept = EREAD ee_racept, dan worden zowel adres 0 als 1 uitgelezen.
Declareer Racept als BYTE (DIM Racept AS BYTE) om het probleem op te lossen (als 'Racept' tenminste geen waarden groter dan 255 hoeft te bevatten)

Quote uit cursus deel 9:
Een WORD constante (een getal groter dan 255 en kleiner dan 65536) past natuurlijk niet in één EEPROM adres en wordt daarom verdeeld over twee adressen (2 bytes).
En een DWORD en FLOAT over vier adressen (4 bytes).
Dit gebeurt met LSB first (= Least Significant Byte eerst)).

EDATA 1000 zal verdeeld worden over twee adressen.
In de EEPROM komt dit als 232, 3.
Hoezo 232 en 3?
Wel, de 3 op EEPROM adres 1 is de MSB waarde van 1000 (3 × 256 = 768).
De LSB is de restwaarde van het getal 1000 en staat op EEPROM adres 0 (1000 - 768 = 232).

Zie voor meer info cursus deel 9: www.picbasic.nl/beginners9.htm

heb ik inderdaad gelezen , maar omdat alles eigenlijk werkte dacht ik okee, totdat de 0 moeilijk deed. maar nu je het roept. ga ik gewoon even kijken of ik met byte verder kom.

ik kom zeker niet boven de 255 dus dat is geen probleem

bedankt.

En weer gebruik je onnodige quotes...

[Bericht gewijzigd door Henry S. op (70%)]