Elektronika.lt
 2024 m. balandžio 24 d. Projektas | Reklama | Žinokite | Klausimai | Prisidėkite | Atsiliepimai | Kontaktai
Paieška portale
EN Facebook RSS

 Kas naujo  Katalogas  Parduotuvės  Forumas  Tinklaraščiai
 Pirmas puslapisSąrašas
 Forumas / + pokalbiai
 - Paieška forume
 - D.U.K. / Forumo taisyklės
 - Narių sąrašas
 - Registruotis
 - Prisijungti

Elektronika.lt portalo forumas

Jūs esate neprisijungęs lankytojas. Norint dalyvauti diskusijose, būtina užsiregistruoti ir prisijungti prie forumo. Prisijungę galėsite kurti naujas temas, atsakyti į kitų užduotus klausimus, balsuoti forumo apklausose.

Administracija pasilieka teisę pašalinti pasisakymus bei dalyvius, kurie nesilaiko forumo taisyklių. Pastebėjus nusižengimus, prašome pranešti.

Dabar yra 2024 04 24, 06:13. Visos datos yra GMT + 2 valandos.
 Forumas » Mikrovaldikliai » eeprom 24c32
Jūs negalite rašyti naujų pranešimų į šį forumą
Jūs negalite atsakinėti į pranešimus šiame forume
Jūs negalite redaguoti savo pranešimų šiame forume
Jūs negalite ištrinti savo pranešimų šiame forume
Jūs negalite dalyvauti apklausose šiame forume
 
  
Puslapis 26
Pereiti prie Atgal  1, 2, 3, 4, 5, 6  Toliau
Pradėti naują temą  Atsakyti į pranešimą Rodyti ankstesnį pranešimą :: Rodyti kitą pranešimą 
 eeprom 24c32
PranešimasParašytas: 2019 01 04, 16:29 Pranešti apie taisyklių pažeidimą Atsakyti su citata
dmb-220
Patyręs dalyvis
Patyręs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Siųsti el. laišką Apsilankyti vartotojo tinklapyje
AlgisL rašo:
Taip "ant smugio" sunku tiksliai nustatyti, kadangi neaisku kaip ten pas tave WP koja ?
Jei ji "1", tai ir neraso tau nieko.
kas rasoma, jei i LCD isvesti length ir *((float*)&data)


jei wp koja butu blogai pajungta ar nepajungta, su arduino neirasytum?

Kodas:

// i funkcija paduodu
float t2 = 12.19;
eeprom_write_ex(0x56, 0, (uint8_t*)&t2, sizeof(t2));

//....
char ri[5];
   itoa(length, ri, 10);
   ST7735_PutStr7x11(50,  100, ri, COLOR565_WHITE, COLOR565_BLACK);
   char ra[5];
   ftoa(*((float*)&data), ra, 2);
   ST7735_PutStr7x11(90,  100, ra, COLOR565_WHITE, COLOR565_BLACK);

//...


length isveda 4, o *((float*)&data) i ekrana isveda 0.00. tas pats kas tuscias kintamasis
beto bandziau ir su char ir short pasiziuret ka DATA kintamasis isveda pries irasydamas. grazina kazkokias reiksmes , bet ne tas kas buna nurodyta prie kintamuju.

pvz padavus irasyti char 1 ar kita skaiciu bet koki, prie irasant data i ekrana visada isveda 201

_________________
Skype: dmb-220
 eeprom 24c32
PranešimasParašytas: 2019 01 04, 17:25 Pranešti apie taisyklių pažeidimą Atsakyti su citata
AlgisL
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
reikia debuginti...
Kodas:


void eeprom_write_ex(uint8_t address, uint16_t reg, uint8_t *data, size_t length){
/*
   writeCommand(address, reg);
   i2c_start();
   i2c_address_direction(address << 1, I2C_Direction_Transmitter);
   while(length--) i2c_transmit(*data++);
   i2c_stop();
*/
  uint32_t addr = (uint32_t)data;
  uint32_t ival = *( (uint32_t*)data);
  uint32_t dval = *( (float*)data);
  float fval = *( (float*)data);
// atsispausdini reiksmes addr, ival, dval, fval
// ir ziuri kokia ten perdavimo i procedura trabliema gaunas
}

float temp = 10.19;
eeprom_write_ex(0x56, 4, (uint8_t*)&temp, sizeof(temp));

 eeprom 24c32
PranešimasParašytas: 2019 01 04, 17:30 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Socrates
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Ne paprasciau irasineti du uint tipo kintamuosius vietoj float? Vienas baitas sveikoji dalis, kita - trupmenine. T.y. jei temperatura 11.22°C, tai pirmas baitas 11, antras 22. Paskui tik sudursi...
 eeprom 24c32
PranešimasParašytas: 2019 01 04, 17:41 Pranešti apie taisyklių pažeidimą Atsakyti su citata
dmb-220
Patyręs dalyvis
Patyręs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Siųsti el. laišką Apsilankyti vartotojo tinklapyje
AlgisL rašo:
reikia debuginti...
Kodas:


void eeprom_write_ex(uint8_t address, uint16_t reg, uint8_t *data, size_t length){
/*
   writeCommand(address, reg);
   i2c_start();
   i2c_address_direction(address << 1, I2C_Direction_Transmitter);
   while(length--) i2c_transmit(*data++);
   i2c_stop();
*/
  uint32_t addr = (uint32_t)data;
  uint32_t ival = *( (uint32_t*)data);
  uint32_t dval = *( (float*)data);
  float fval = *( (float*)data);
// atsispausdini reiksmes addr, ival, dval, fval
// ir ziuri kokia ten perdavimo i procedura trabliema gaunas
}

float temp = 10.19;
eeprom_write_ex(0x56, 4, (uint8_t*)&temp, sizeof(temp));


uint32_t dval = *( (float*)data);
sitas atspauzdina bet tik sveika skaiciu, po kablelio nuliai
float fval = *( (float*)data);
sitas atspauzdina visa skaiciu kuri paduodu i funkcija

kiti du variantai tiesiog isveda skaiciu kratinius

_________________
Skype: dmb-220
 eeprom 24c32
PranešimasParašytas: 2019 01 04, 18:11 Pranešti apie taisyklių pažeidimą Atsakyti su citata
dmb-220
Patyręs dalyvis
Patyręs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Siųsti el. laišką Apsilankyti vartotojo tinklapyje
Socrates rašo:
Ne paprasciau irasineti du uint tipo kintamuosius vietoj float? Vienas baitas sveikoji dalis, kita - trupmenine. T.y. jei temperatura 11.22°C, tai pirmas baitas 11, antras 22. Paskui tik sudursi...


galiu ir taip, bet kad neiraso nieko i eeprom nei int nei char


Paskutinį kartą redagavo dmb-220, 2019 01 04, 18:14. Redaguota 1 kartą

_________________
Skype: dmb-220
 eeprom 24c32
PranešimasParašytas: 2019 01 04, 18:14 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Socrates
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
dmb-220 rašo:
Socrates rašo:
Ne paprasciau irasineti du uint tipo kintamuosius vietoj float? Vienas baitas sveikoji dalis, kita - trupmenine. T.y. jei temperatura 11.22°C, tai pirmas baitas 11, antras 22. Paskui tik sudursi...


galiu ir taip, bet kad neisrado nieko i eeprom nei int nei char


Bet ar kintamieji pradzioj sustatyti teisingai pries irasant? Praeik su debuggeriu step-by-step issivesdamas kintamuju reiksmes ir matysi pazingsniui kas ten kada isiraso.
 eeprom 24c32
PranešimasParašytas: 2019 01 04, 18:18 Pranešti apie taisyklių pažeidimą Atsakyti su citata
dmb-220
Patyręs dalyvis
Patyręs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Siųsti el. laišką Apsilankyti vartotojo tinklapyje
Socrates rašo:
dmb-220 rašo:
Socrates rašo:
Ne paprasciau irasineti du uint tipo kintamuosius vietoj float? Vienas baitas sveikoji dalis, kita - trupmenine. T.y. jei temperatura 11.22°C, tai pirmas baitas 11, antras 22. Paskui tik sudursi...


galiu ir taip, bet kad neisrado nieko i eeprom nei int nei char


Bet ar kintamieji pradzioj sustatyti teisingai pries irasant? Praeik su debuggeriu step-by-step issivesdamas kintamuju reiksmes ir matysi pazingsniui kas ten kada isiraso.

kad as mokeciau tuo debug naudotis. bandziau ant System Workbench for STM32 OpenOCD pasileisti. bet ERROR pabiro ir viskas, <terminated, exit value: 1>openocd
<terminated, exit value: 0>gdb

Error: Target not halted
Error: failed erasing sectors 0 to 33
Error: flash_erase returned -304

_________________
Skype: dmb-220
 eeprom 24c32
PranešimasParašytas: 2019 01 04, 18:37 Pranešti apie taisyklių pažeidimą Atsakyti su citata
AlgisL
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Vadinasi adresai ir reiksmes perduodamos tvarkingai.
Tikrink ar tikrai veikia I2C ?
Pradzioje sekmingai irasyk/nuskaityk kazka tokio su Arduino, paskui bent nuskaityk su STM32

Beje, jei maitini EEPROM'a nuo 3v3, tai nustatyk 100kHz komunikacijos dazni.
Dar ten yra toks dalykas kaip ADRESACIJA
Dauguma Arduino biblioteku reikia nurodyti 0xAx, kai STM32 biblioteka gali noreti 0x5x arba irgi 0xAx

Pastebejau, kad nurodai 0x66 adresa!!!!
 eeprom 24c32
PranešimasParašytas: 2019 01 04, 19:10 Pranešti apie taisyklių pažeidimą Atsakyti su citata
dmb-220
Patyręs dalyvis
Patyręs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Siųsti el. laišką Apsilankyti vartotojo tinklapyje
AlgisL rašo:
Vadinasi adresai ir reiksmes perduodamos tvarkingai.
Tikrink ar tikrai veikia I2C ?
Pradzioje sekmingai irasyk/nuskaityk kazka tokio su Arduino, paskui bent nuskaityk su STM32

Beje, jei maitini EEPROM'a nuo 3v3, tai nustatyk 100kHz komunikacijos dazni.
Dar ten yra toks dalykas kaip ADRESACIJA
Dauguma Arduino biblioteku reikia nurodyti 0xAx, kai STM32 biblioteka gali noreti 0x5x arba irgi 0xAx

Pastebejau, kad nurodai 0x66 adresa!!!!

I2C veikia, nes nuskaitau RTC ds3231, temperaturos davikli sht31. Su arduino irasau ir nuskaitau be problemu. Su stm32 nuskaitau puikiai irasytas reiksmes.

Eeprom adresa nuskaiciau su arduino i2c scaner, parode kad 0x56. Jei adresas butu negeras blogas, nepavyktu nuskaityti

_________________
Skype: dmb-220
 eeprom 24c32
PranešimasParašytas: 2019 01 04, 19:20 Pranešti apie taisyklių pažeidimą Atsakyti su citata
AlgisL
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Del 0x66 - atsiprasau, cia as pats esu zlibas.
0x56 kaip ir tinkamas butu adresas, nors A0 A1 A2 pasitikrink, jei netingi.
Butu gerai, kad pasitikrintum tose pat maitinimo salygose (jei STM32 atveju maitini is 3V3, tai ir Arduino atveju ta pati organizuok).
Nors minejai, kad teisingai nusiskaito, bet kazkur kabliuku ieskoti tai reikia...
 eeprom 24c32
PranešimasParašytas: 2019 01 04, 19:43 Pranešti apie taisyklių pažeidimą Atsakyti su citata
AlgisL
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Del 0x66 - atsiprasau, cia as pats esu zlibas.
0x56 kaip ir tinkamas butu adresas, nors A0 A1 A2 pasitikrink, jei netingi.
Butu gerai, kad pasitikrintum tose pat maitinimo salygose (jei STM32 atveju maitini is 3V3, tai ir Arduino atveju ta pati organizuok).
Nors minejai, kad teisingai nusiskaito, bet kazkur kabliuku ieskoti tai reikia...

pagaliau gali isvis bukai daryti:
Kodas:

void eeprom_write_ex( uint8_t address, uint16_t reg,
  uint8_t *data,  size_t length ) {
 
  while( length-- ) {
    writeCommand( address, reg++ );
    i2c_start();
    i2c_address_direction( address << 1, I2C_Direction_Transmitter );
    i2c_transmit( *data++ );
    i2c_stop();
    delay( 10 ); // milliseconds
  }
}


O kur tu toki pavyzdi atkasei?
ar ne geriau bus is karto Gintaras_bar varianta pasitiuninguoti pagal save?

man kazkaip kyla klausimas ar writeCommand( ) teisingai perduoda reg
t.y. 24c32 reiktu perduoti 12 bitu (is tikro 16), o ten gal tik 8 bitus perduoda???
Dar idomu, kad i2c_start(); eina jau po writeCommand()....
Cia tokia "draiverio" ypatybe ar tavo klaida?
24C32 datacheete aiskiai parasyta:
i2c_start()
device_address,r/w - pirmas baitas
hi(sddress) - antras baitas
lo(address) - trecias baitas
data..... - n baitu (bet reikia sekti puslapio ribas)
i2c_stop();
jei irasymas, tai palaukti 10..20ms
komanda ir adresas perduodami su ACK
duomenys (jei daugiau nei 1 baitas ) su ACK
duomenu paskutinis baitas noACK
 eeprom 24c32
PranešimasParašytas: 2019 01 04, 20:11 Pranešti apie taisyklių pažeidimą Atsakyti su citata
dmb-220
Patyręs dalyvis
Patyręs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Siųsti el. laišką Apsilankyti vartotojo tinklapyje
AlgisL rašo:
Del 0x66 - atsiprasau, cia as pats esu zlibas.
0x56 kaip ir tinkamas butu adresas, nors A0 A1 A2 pasitikrink, jei netingi.
Butu gerai, kad pasitikrintum tose pat maitinimo salygose (jei STM32 atveju maitini is 3V3, tai ir Arduino atveju ta pati organizuok).
Nors minejai, kad teisingai nusiskaito, bet kazkur kabliuku ieskoti tai reikia...

pagaliau gali isvis bukai daryti:
Kodas:

void eeprom_write_ex( uint8_t address, uint16_t reg,
  uint8_t *data,  size_t length ) {
 
  while( length-- ) {
    writeCommand( address, reg++ );
    i2c_start();
    i2c_address_direction( address << 1, I2C_Direction_Transmitter );
    i2c_transmit( *data++ );
    i2c_stop();
    delay( 10 ); // milliseconds
  }
}


O kur tu toki pavyzdi atkasei?
ar ne geriau bus is karto Gintaras_bar varianta pasitiuninguoti pagal save?

man kazkaip kyla klausimas ar writeCommand( ) teisingai perduoda reg
t.y. 24c32 reiktu perduoti 12 bitu (is tikro 16), o ten gal tik 8 bitus perduoda???
Dar idomu, kad i2c_start(); eina jau po writeCommand()....
Cia tokia "draiverio" ypatybe ar tavo klaida?
24C32 datacheete aiskiai parasyta:
i2c_start()
device_address,r/w - pirmas baitas
hi(sddress) - antras baitas
lo(address) - trecias baitas
data..... - n baitu (bet reikia sekti puslapio ribas)
i2c_stop();
jei irasymas, tai palaukti 10..20ms
komanda ir adresas perduodami su ACK
duomenys (jei daugiau nei 1 baitas ) su ACK
duomenu paskutinis baitas noACK


Girtaras bar pvz butu tinkamas jei dirbciau su HAL library. as darau su Standard Peripheral Library.
pvz radau google kai reikejo laikrodi RTC nuskaityti. tai ta I2c library panaudojau ir sht31 nuskaitymui. galvojau pavyks ir eeprom panaudoti.
https://github.com/yohanes-erwin/stm32f103-keil/tree/master/ds1307
gal netinka nes cia KEIL rasytas, nors veikia ir ant System Workbench for STM32 IDE kodas. tik eeprom nedraugauja.

Kodas:
//Nusiusti 16 bitu adresa
void writeCommand(uint8_t address, uint16_t cmd) {
   i2c_start();
   i2c_address_direction(address << 1, I2C_Direction_Transmitter);
   i2c_transmit(cmd >> 8);
   i2c_transmit(cmd & 0xFF);
   i2c_stop();
}


gal blogai kazka su i2c valdymui ir darau, nes bandziau nuo arduino pvz persirasyt ant stm32.

bandysiu su situo pasileisti pvz
http://we.easyelectronics.ru/STM32/stm32-i2c-eeprom-24sxx.html

_________________
Skype: dmb-220
 eeprom 24c32
PranešimasParašytas: 2019 01 04, 21:28 Pranešti apie taisyklių pažeidimą Atsakyti su citata
AlgisL
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Va dabar ir aisku patapo ka cia priburei Wink))))))))
Kodas:


void eeprom_write_ex( uint8_t address, uint16_t reg, uint8_t *data, size_t length ) {
  i2c_start();
  i2c_address_direction( address << 1, I2C_Direction_Transmitter );
  i2c_transmit( reg >> 8 );
  i2c_transmit( reg & 0xFF );
  while( length-- ) {
    i2c_transmit( *data++ );
    if ( !((++reg) & 31 ) ) // perkopei 32 bytes puslapi
       delay_ms( 10 ); // milliseconds
  }
  i2c_stop();
}



tau beliks 10ms delay pasigaminti arba neperkopineti per puslapi.
Beje, sitas kodas pageidauja 0x5x formato adresu.

Dar zek ir i2c_transmit() pas tave bus su "navarotais", nes paskutini baita reikia be ACK...
 eeprom 24c32
PranešimasParašytas: 2019 01 04, 22:24 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Socrates
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Dirbti be debuggerio... Nelabai isivaizduojamas reikalas siai dienai Smile
 eeprom 24c32
PranešimasParašytas: 2019 01 04, 22:33 Pranešti apie taisyklių pažeidimą Atsakyti su citata
gintaras_bar
Patyręs dalyvis
Patyręs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
dmb-220 rašo:
Girtaras bar pvz butu tinkamas jei dirbciau su HAL library. as darau su Standard Peripheral Library
Už lango jau dvidešimtieji XXI amžiaus metai eina, o tu vis dar su SPL dirbi... Negi turi polinkį į mazochizmą? Smile
CubeMX sugeneruoja kuo puikiausią kodą ir su HAL, ir su LL (kur reikia). Ir viskas System Workbench kuo puikiausiai debugin'asi. Taigi mesk tas prieštvanines bibliotekas į šoną ir pradėk šiuolaikinėmis technologijomis naudotis. Išloši ir laiko, ir nervų, ir dar be jokio vargo galėsi "šokinėti" per skirtingus mikrovaldiklius, nė neužmesdamas akies į jų Data Sheet'us.
Pradėti naują temą  Atsakyti į pranešimą Pereiti prie Atgal  1, 2, 3, 4, 5, 6  Toliau
 
Forumo sistema: phpBB
 „Google“ paieška forume
 Kas naujesnio?
 Naujos temos forume

Global electronic components distributor – Allicdata Electronics

Electronic component supply – „Eurodis Electronics“

LOKMITA – įvairi matavimo, testavimo, analizės ir litavimo produkcija

Full feature custom PCB prototype service

GENERAL FINANCING BANKAS

Mokslo festivalis „Erdvėlaivis Žemė

LTV.LT - lietuviškų tinklalapių vitrina

„Konstanta 42“

Technologijos.lt

Buitinė technika ir elektronika internetu žemos kainos – Zuza.lt

www.esaugumas.lt – apsaugok savo kompiuterį!

PriedaiMobiliems.lt – telefonų priedai ir aksesuarai

„Deinavos baldai“ — šeimos baldai

FS 22 Tractors
Farming Simulator 19 Mods, FS 22 Maps, FS22 Mods
ETS2 Mods
ETS2 Trucks, ETS2 Bus, Euro Truck Simulator 2 Mods
FS22 Tractors
Farming Simulator 22 Mods, FS22 Maps, FS22 Trucks
VAT calculator
VAT number check, What is VAT, How much is VAT
Paskola internetu
Vartojimo paskola, paskola automobiliui, paskola būsto remontui
Thermal monocular
Thermal vision camera,
Night vision ar scope,
Night vision spotting scope
FS22 Mods
FS22 Harvesters, FS22 Tractors Mods, FS22 Maps Mods
FS22 Mods
FS22 Maps,
FS22 Harvesters,
FS22 Tractors
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija
Sims 4 Mods
Sims 4 CC Clothes,
Sims 4 Hair CC,
Sims 4 Skill Cheat
Optic sight
Binoculars for hunting elk,
Best compact binoculars,
Riflescope hunting
Reklama
‡ 1999– © Elektronika.lt | Autoriaus teisės | Privatumo politika | Atsakomybės ribojimas | Turinys | Reklama | Kontaktai LTV.LT - lietuviškų tinklalapių vitrina
Script hook v, Openiv, Menyoo
gta5mod.net
Farming Simulator 2019 Mods, FS22 Mods, FS22 Maps
farmingsimulator19mods.fr
Optical filters, UV optics, electro optical crystals
www.eksmaoptics.com
Reklamos paslaugos
SEO sprendimai

www.addad.lt
Elektroninių parduotuvių optimizavimas „Google“ paieškos sistemai
www.seospiders.lt
FS22 mods, Farming simulator 22 mods,
FS22 maps

fs22.com
Reklama


Reklama