C programovanie - zapis a citanie z ext. EEPROM

C,C++,C#

Moderátori: psichac, Moderátori

romiadam
Ultimate člen
Ultimate člen
Príspevky: 4418
Dátum registrácie: 09 Apr 2008, 00:00
Bydlisko: Wicklow, Irsko
Vek: 47

Re: C programovanie - zapis a citanie z ext. EEPROM

Príspevok od používateľa romiadam » 11 Sep 2022, 17:44

maskrtnik01:
Ano presne to som mal na mysli, vseobecne, ze keby som menil frekvenciu z 4 na 20Mhz alebo dokonca 40Mhz, lebo frekvencia SPI je delena z Fosc a nie je presne specifikovana presnou hodnotou, ze by pri zmene Focs, ona ostala konstantna. Ale pri zmene na 3.6864Mhz, to je jedno. :thumbup:

peterple:
1. Dlzka kabla:
No bohuzial je to naopak. Ten kabel ma asi 1.7m a prevodnik pravdepodobne bude zaliaty v USB konektore pr PC. Made in China. Aliexpress.

2. Nasobenie:
Maximum tohoto čísla je okolo 300 miliónov. Takže na to stačia 4 byte. Ďalšie 4 byte máš asi dáta. Takže jeden záznam je 8 byte.
Ja neviem ako si (peterple) dostal z tohoto
id = sek + min*60 + hod*60*60 + den*24*60*60 + mesiac*31*24*60*60
300 milionov. Ja som dostal 2.6 miliona sekund na jeden mesiaca ak mame 12 mesiacov, tak 12*2678400mil = 32 140 800 milionov => 4 bajty. Po dvoch sekundach logovania je to polovica a stacia na to 3 bajty.

logovanie kazdu sekundu za jeden mesiac 24h (aj ked nebudem logovat 24h)
1den=24h, 1h=3600sek. 24h * 3600sek/h * 31dni = 24*3600*31=2 678 400 => 24bit 00101000 11011110 1000 0000
logovanie kazde 2 sekundy za jeden mesiac 24h (aj ked nebudem logovat 24h)
1den=24h, 1h=1800sek. 24h * 1800sek/h * 31dni = 24*1800*31=1 339 200 => 24bit 00010100 01101111 01000000

balu-ho 24h 2sekundove 2 bajtove logovanie chapem, len tam musim dat aj informaciu o ktory den sa v mesiaci jedna a aj o ktory mesiac. Takze budem potrebovat vselijako 4 bajty. Len s cisto informaciami o vykone dvoch PV panelov sa zmestim do 8 bajtov (4 bajty datum a cas + 2bajty vykon otocny panel, 2bajty vykon fixny panel). Ale ak este chcem nieco navyse odlogovat, tak uz fixnych16bajtov by bolo vela na jeden zaznam, tak to skor budem sledovat koniec stranky a budem zapisovat fixne pocet bajtov, kolko potrebujem.

3. Hladanie konca zaznamu
Trochu to bude komplikovanejsie na hladanie konca záznamu pri zapnutí
Toto chcem poriesit tym, ze budem mat 24-bit register, v ktorom bude informacia ktory bajt sa zapisal ako posledny (lepsie povedane, ktory sa ma zapisat najblizsie) a register sa po zapise dat to SPI EEPROM zvysi o pocet zapisanych bajtov a zaroven zapise do MCU EEPROM. Takze po zapnuti pri inicializacii MCU sa tento register nacita z MCU EEPROM. A ked vycitam data zo SPI EEPROM, tak tento 24-bit register vynulujem a zaroven sa vynuluje aj v MCU EEPROM. To bude cele akoze vymazanie SPI EEPROM. Cize sa budu data len prepisovat.
Zalohovane napajanie nemam, rozmyslal som aj nad bufferovanim. Uvidim kolko registrov mi ostane ked dokoncim program a mozno budem buffrovat a dorobim zalohovanie.
4.
Takže prvé čo som urobil bolo že som sa naučil VBA (taká tajná súčasť excelu čo dovoľuje ho riadiť programom). Potom som napísal knižnicu na prácu so sériovým portom (napísal je silné slovo - pozliepal z toho čo som našiel na nete) A hurá celú robotu čo mi dali odmakalo makro. Ja som len sedel s vyloženými nohami. Aj generovanie tých grafov to makro vie robiť. Tak som potom už len posielal maily s výsledkami. Dnes aj tie maily chystá macro. Lebo VBA je dostupné v celom office baliku. A nie je problém vygenerovať mail alebo powerpoint prezentáciu.
Toto sa chcem naucit. Mame to aj my v robote. Niekto to uz naprogramoval. Vystupy z vyroby idu rovno do excelu a ja sa len pozriem co je v cervenom a analyzujem, potom vo vyrobe ze co to sposobilo a viem sa zamerat na kriticky problem.
0
Prepáčte mi za diakritiku a preklepy - väčšinou píšem z mobilu a ENG klavesnice.
(výroky nemenovaného člena fóra:) ...základy elektrotechniky ovládam dokonale, tak napr. taký tyristor neviem ako presne funguje

peterple
Ultimate člen
Ultimate člen
Príspevky: 2328
Dátum registrácie: 25 Jún 2013, 21:06
Bydlisko: Krajné
Vek: 57
Kontaktovať používateľa:

Re: C programovanie - zapis a citanie z ext. EEPROM

Príspevok od používateľa peterple » 12 Sep 2022, 13:31

  1. tak to je blbé. cez to by som sa bál hnať aj 115200
  2. Ani ja. Musel som sa niekde pomýliť.
  3. veľmi špatné riešenie. Koľko zápisov garantuje EEPROM v MCU? Stotisíc? Milión? To minieš veľmi rýchlo. Uvedom si že teraz zapisuješ stále tú istú bunku a ten počet zápisov sa nerozloží na ostatné ako je to u tej externej. Preto má android tuším aj nejaký optimalizovaný file systém ktorý rozkladá zápisy na jednotlivé stránky a neprepisuje stále tie isté ako to robí napríklad FAT.
  4. teraz máš ieálnu príležitosť
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.

Atlan
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1148
Dátum registrácie: 01 Feb 2008, 00:00
Bydlisko: Kosice okolie

Re: C programovanie - zapis a citanie z ext. EEPROM

Príspevok od používateľa Atlan » 12 Sep 2022, 14:02

Ta pamet nestoji majland, tak ich tam moze dat kludne 8, mato pin CS tak neni problem. Aspon by nemusel riesit pretecenie a prepisane udajov.

Obavam sa ze pouzitie SD karty by bolo jednoduchsie a v konecnom dosledku spolhlivrjsie. Hlavne by si jej zaplnwnie rieail po velmi dlhom case.

Ta frekvencia uP sa. Mi nepaci. Preco to ma behat na 4Mhz koli spotrebe?
0

romiadam
Ultimate člen
Ultimate člen
Príspevky: 4418
Dátum registrácie: 09 Apr 2008, 00:00
Bydlisko: Wicklow, Irsko
Vek: 47

Re: C programovanie - zapis a citanie z ext. EEPROM

Príspevok od používateľa romiadam » 12 Sep 2022, 15:37

Atlan,
nemusi bezat na 4MHz. Toto je moj prvy projekt v C programe. Doteraz som frcal na ASM. Tam som bol zvyknuty volit si 4MHz kvoli jednoducsiemu preepoctu casovych sluciek. Doteraz som nikdy nepotreboval vyssiu rychlost.
Aj ked viem ze v C-cku uz nepotrebujem pocitat casove slucky, uz zo zvyku som nastavil 4MHz a povedal som si ze ked bude treba tak zvacsim.

peterple

3. Vidis, to som si neuvedomil. Tak tam spravim detekciu vypadku nap. napatia a len pri vypadku napatia (+ vypnuti systemu) sa to zapise do EEPROM. Ked to za rok vypnem 10x tak aj to bude vela.

Ak by som stale celu pamat prepisoval nululami alebo FF, aby som nasiel posledny zapis, tak aj tym skratim zivotnost EEPROMky o polovicu.
0
Prepáčte mi za diakritiku a preklepy - väčšinou píšem z mobilu a ENG klavesnice.
(výroky nemenovaného člena fóra:) ...základy elektrotechniky ovládam dokonale, tak napr. taký tyristor neviem ako presne funguje

peterple
Ultimate člen
Ultimate člen
Príspevky: 2328
Dátum registrácie: 25 Jún 2013, 21:06
Bydlisko: Krajné
Vek: 57
Kontaktovať používateľa:

Re: C programovanie - zapis a citanie z ext. EEPROM

Príspevok od používateľa peterple » 12 Sep 2022, 15:48

Prečo by si prepisoval. Keď to urobíš podľa toho vzorca máš ID ktoré jednoznačne stále rastie až do konca roka. Z toho sa dá urobiť pekná logika ktorá nájde posledný záznam. Dokonca aj to že to začne zase od januara od nízkych čísel. Tak potom len prepíšeš najstarší záznam. Nič nenuluješ ani nejednotkuješ.
Také jednoúčelové počítadlá nemám moc rád. Ale možno som jediný. A tá detekcia výpadku bude spoľahlivá. Ako aj beh MCU (žiadne resety od watchdoga a pod).
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.

Napísať odpoveď
  • Podobné témy
    Odpovedí
    Zobrazení
    Posledný príspevok