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

Vote up!

You voted ‘up’

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

Vote up!

You voted ‘up’

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

Vote up!

You voted ‘up’

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

Vote up!

You voted ‘up’

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

Vote up!

You voted ‘up’

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

Vote up!

You voted ‘up’

vacisa
vacisa picture

üdvözlet.

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

0

Vote up!

You voted ‘up’

Jaca
Jaca picture
****

Szia!

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

0

Vote up!

You voted ‘up’

vacisa
vacisa picture

üdvözlet.

kapom.
:vs

0

Vote up!

You voted ‘up’

Jaca
Jaca picture
****

Szia!

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

0

Vote up!

You voted ‘up’

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

Vote up!

You voted ‘up’

Jaca
Jaca picture
****

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

0

Vote up!

You voted ‘up’

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

Vote up!

You voted ‘up’

Jaca
Jaca picture
****

Szia

3010 =
0xBC2 hexában.

Adathi=0b, adatlo=c2

 

0

Vote up!

You voted ‘up’

AzzA
AzzA picture
*

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

1

Vote up!

You voted ‘up’

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

Vote up!

You voted ‘up’

Jaca
Jaca picture
****

Movlw 0xC5
Movwf adatHI

Asszem.

0

Vote up!

You voted ‘up’

AzzA
AzzA picture
*

Asszem nem. Te valahova máshova írsz.

0

Vote up!

You voted ‘up’

Jaca
Jaca picture
****

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

0

Vote up!

You voted ‘up’

AzzA
AzzA picture
*

Igen, az !

UFF, UFF, UFF

Ez egyszerre 3db UFF

1

Vote up!

You voted ‘up’

Jaca
Jaca picture
****

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

0

Vote up!

You voted ‘up’

Sponsored links