You are here

PIC epromban érték tárolás

22 posts / 0 new
Last post
vacisa
vacisa picture

üdvözlet.

PIC epromjába szeretnék irni, meg onnan kiolvasni értékeket,ezzel 255-ig nincs probléma viszont most 1 és 3400 közötti értékeket kell mentenem.
Megoldható?
:vs

Comments
Jaca
Jaca picture
****

Szia!
Megoldhato, csak 2 byte-ban kell tárolni. Pl adatHI és adalLO.
 

0

vacisa
vacisa picture

üdvözlet.

Ezt kérhetném bővebben kifejteni?
Arra gondoltam, hogy elkellene felezni valahogy az értéket 3010  azt 30 és 10 és beirni két cimre?
Igy valahogy?
:vs
 

0

proba
proba picture

Mindegy hogyan, az a lényeg olyan alakúvá alakítod aminek  egy eleme kisebb mint 255. és ezeket az elemeket egyesével eltárolod.

0

AzzA
AzzA picture
*

eeprom.adat -ból írod be

eeprom.in_1 = eeprom.adat & 0xFF
eeprom.in_2 = eeprom.adat >> 8

Aztán mondjuk a 0. cimre irod az eeprom.in_1 változót az 1. cimre meg a eeprom.in_2 változót.

Kiolvasás pont fordítva, tehát a két cimet kiolvasod és összerakod egy változóba.

0.cim  eeprom.out_1
1.cim  eeprom.out_2

eeprom.adat_ki = eeprom.out_2 << 8
eeprom.adat_ki = eeprom.adat_ki | eeprom.out_1
eep_result = eeprom.adat_ki

eep_result-ban kapod vissza az értéket

2

vacisa
vacisa picture

üdvözlet.

Köszönöm, szoke levezetése után megértettem ezt is, ez ha jól gondolom ezt ugyanazt teszi.
:vs

0

szoke
szoke picture

Szia.
Nem!
Csinálsz egy maradék nélküli osztást, ennek ez értékét az egyik byte-on tárolod és a maradékot a másikon.
pl:
3010 / 256 = 11,.....

11-et tárolsz az egyik byte-on

3010 - (256*11) = 3010 - (2816) = 194

és 194-öt a másik byte-on.

vissza számolva: (első byte)*256 + (második byte)
 11*256+194=3010
 

1

vacisa
vacisa picture

üdvözlet.

Megértettem a levezetést, köszönöm !
:vs

0

Jaca
Jaca picture
****

Szia!

Az értéket honnan veszed (kapod), amit le karsz tárolni?

0

vacisa
vacisa picture

üdvözlet.

kapom.
:vs

0

Jaca
Jaca picture
****

Szia!

Ennél egy kicsit konkrétabban, milyen formában kapot? Soros port, I2C, infra? 

0

vacisa
vacisa picture

üdvözlet.

Nem külső forrásból kapom.
Egy gép alap és utolsó beállításait tartalmazzák az adatok amiket tárolni kell.
Az értékek nem fértek bele 255-be ezért kellett megoldás az ezres nagyságrendi számok tárolására.
:vs

0

Jaca
Jaca picture
****

Hi!
Szerintem decimalis alapból nincs a PIC -ben, az adc meg 2 bájtban adja.

0

szoke
szoke picture

Szia.

Matematikai oldalról próbáltam megközelíteni a dolgot, mert gyanítom, hogy a kérdező nem túl járatos PIC-ben.
Még azt sem tudjuk miben programozza.

 

0

Jaca
Jaca picture
****

Szia

3010 =
0xBC2 hexában.

Adathi=0b, adatlo=c2

 

0

AzzA
AzzA picture
*

Az eepromban cimek vannak és ahhoz rendelve byte 0-255
Hexát hogyan lehet beleírni ?

1

Jaca
Jaca picture
****

Most már nem mobilról vagyok, így elmagyarázom. A hexa ugyanúgy lehet 0-255, csak úgy írják, hogy 0x00 - 0xFF. De lehetne binárisat is írni bele, pl b00000000 - b11111111.
A 3400 viszont már nem fér el egy bájton, és amúgy is ritkán keletkezik hogy decimális 3400, inkább úgy, hogy 0x0d48. A felső bájt  0D, az alsó bájt 48 HEXÁBAN. Na ezt a két bájtot kell letárolni.

0

Jaca
Jaca picture
****

Movlw 0xC5
Movwf adatHI

Asszem.

0

AzzA
AzzA picture
*

Asszem nem. Te valahova máshova írsz.

0

Jaca
Jaca picture
****

Jó, hát az asm magas néked.

0

AzzA
AzzA picture
*

Igen, az !

UFF, UFF, UFF

Ez egyszerre 3db UFF

1

Jaca
Jaca picture
****

A dB-t nagy B vele kell írni!
De írhatsz BCD adatokat is a PIC regisztereibe. 

0

Sponsored links