Situacija u državi Danskoj je ovakva:
Imam neku bazu korisnika u RAM memoriji mikrokontrolera ATMEGA168, a istu tu bazu korisnika prilikom paljenja uređaja vučem iz eeproma. Znači kad uređaj radi sve korisnike čitam iz rama da bi dobio na brzini samog uređaja. A kad radim eventualne promjene korisnika, dodavanje novih ili brisanje onda to napravim i u ramu i eepromu kako bi te dvije baze korisnika uvijek bile identične.
Evo i problem te pitanje koliko je ovo isplativo pokušati izvesti.
Problem je jer sam napunio EEPROM i ne mogu proširi u epromu bazu korisnika, drugi problem je taj jer mi je i RAM pri kraju, pa i da stavim eksterni eeprom opet nemam dovoljno RAM-a da držim neku veću bazu korisnika.
Prvo rješenje bi mi bilo da postavim eksterni EEPROM i da u njega ubodem koliko mi srce želi korisnika, no gubim na brzini jer želim da mi se čitava baza korisnika kada ih pretražujem izvrši brzo (pola sekunde max). Čitanje iz nekog eksternog eeproma ne dolazi u obzir jer mi je sporo dok ja preko I2C to izvučem, a za neki paralelni eeprom mi je to nemoguće izvesti prvenstveno jer nemam portova, a s druge strane nemam ni mjesta na PCB-u jer je sve zgurano sa sitnim elementima.
Druga ideja koja mi je još pala na pamet je "Program Memory Space" Evo skoro cu nesto pitati...
AVR PGM SPACE
Moderators: pedja089, stojke369, trax, InTheStillOfTheNight
- InTheStillOfTheNight
- Odlično uznapredovao
- Posts: 938
- Joined: 01-06-2006, 17:54
- Location: Zagreb
AVR PGM SPACE
InTheStillOfTheNight
- InTheStillOfTheNight
- Odlično uznapredovao
- Posts: 938
- Joined: 01-06-2006, 17:54
- Location: Zagreb
Re: AVR PGM SPACE
Jedan korisnik mi zauzima 5 Bytes što znači da mi 100 korisnika zauzima 500 bytes i evo to je taj moj pun eeprom, ali i ram mi je pun jer svaki korisnik ima uz ID i svoj INDEX.
E sad ja bi htio proširiti na barem 500 korisnika što znači da kada tražim korisnika moram izvrtiti 2500 Bytes podataka.
I na kraju pitanje:
Ako imam toliko FLUSHA slobodnog koliko je pametno pokušati zapisati korisnike u PGM space, pa ih tamo prekopavati, tj pitanje preciznije glasi: Koliko bi to prekopavanje po FLASH memoriji 2,5kB trajalo???
Ako ne mogu pronaci korisnika unutar pola sekunde čitajući FLUSH memoriju 2,5kB onda mi ideja pada u vodu, pa evo ekipa možda je netko radio upisivanje nekih podataka u FLUSH pa zna koliko to vremenski traje jer mi se ne da izgubiti par dana da to testiram...
E sad ja bi htio proširiti na barem 500 korisnika što znači da kada tražim korisnika moram izvrtiti 2500 Bytes podataka.
I na kraju pitanje:
Ako imam toliko FLUSHA slobodnog koliko je pametno pokušati zapisati korisnike u PGM space, pa ih tamo prekopavati, tj pitanje preciznije glasi: Koliko bi to prekopavanje po FLASH memoriji 2,5kB trajalo???
Ako ne mogu pronaci korisnika unutar pola sekunde čitajući FLUSH memoriju 2,5kB onda mi ideja pada u vodu, pa evo ekipa možda je netko radio upisivanje nekih podataka u FLUSH pa zna koliko to vremenski traje jer mi se ne da izgubiti par dana da to testiram...
InTheStillOfTheNight
Re: AVR PGM SPACE
Bok,
Ako koristiš EEPROM sa I2C sućeljem (npr. 24LC32), iščitavanje 2,5 kbajta pri najvećoj brzini od 400 kHz-a (400 kbit/s) traje samo 50 ms. Ali ako ova brzina nije dovoljna, postoje i EEPROM-i sa SPI sučeljem (25xx serija) sa brzinom do 10 MHz-a.
Programiranje Flash memorije nikad nisam probao, ali ta memorije je podijeljena na stranice, zbog toga dinamično čitanje/pisanje je puno složenija.
Kako si to računao???Čitanje iz nekog eksternog eeproma ne dolazi u obzir jer mi je sporo dok ja preko I2C to izvučem,
Ako koristiš EEPROM sa I2C sućeljem (npr. 24LC32), iščitavanje 2,5 kbajta pri najvećoj brzini od 400 kHz-a (400 kbit/s) traje samo 50 ms. Ali ako ova brzina nije dovoljna, postoje i EEPROM-i sa SPI sučeljem (25xx serija) sa brzinom do 10 MHz-a.
Programiranje Flash memorije nikad nisam probao, ali ta memorije je podijeljena na stranice, zbog toga dinamično čitanje/pisanje je puno složenija.
- InTheStillOfTheNight
- Odlično uznapredovao
- Posts: 938
- Joined: 01-06-2006, 17:54
- Location: Zagreb
Re: AVR PGM SPACE
Nisam ni mislio dinamicno citati FLUSH nego citati kao page pa to analizirati u ramu. Opcenitno mi je malo problem ubaciti tu i eeprom jer jednostavno nema mjesta nisi za jedan 0603 otpornik.
Uostalom 400kHz je što?
SCL??? Ako je maksimali serijski clock 400 khz onda brzina čitanja ne može biti 400 kbps jer na svakom serijskom clocku može proći jedan bit, a gdje je onda START, ACK svakog bytea??? A gdje je adresa eeproma??? 400 kbps je protok podataka, ali podatci su samo onih 8 biteova u jednoj sekvenci koja započinje I2C startom, pa Hardware adresom eeproma, pa adresom podatka..... Znaci to je drasticno sporije kada ja moram epromu najprije poslati citavu kobasicu informacija da bi mi on mogao dati podatak sa moje zahtjevane adrese. Radio sam i sa PAGE READ iz eeproma i za nekih 100 korisnika trebalo mi je dosta vremena da ih sve iscitam i analiziram. Za 100 korisnika ova metoda čitanja eproma mi je još držala vodu, možda se može na eepromu isčitati i 500 korisnika kao PAGE READ na nekoj većoj frekvenciji ali tu sam napravio jednu grešku jer nisam u pitanju naveo kako nemam mjesta za ništa. Hardware je crtan dugo, dugo i dugo i svaki prostor koji je postojao je iskorišten tako da se baš moram osloniti na ono s čim trenutno raspolažem, a to je samo procesor...
Napisao sam da serijski eeprom pada u vodu jer znam odoka kako ide sljed podataka u I2C sabirnici, a drugi još bitniji razlog je onaj koji nisam napisao i ispričavam se zbog toga, a to je da jednostavno nemam mjesta za eeprom.
Rekoh možda je netko od vas analizirao korištenje FLUSH memorije za ovu svrhu...
Uostalom 400kHz je što?
SCL??? Ako je maksimali serijski clock 400 khz onda brzina čitanja ne može biti 400 kbps jer na svakom serijskom clocku može proći jedan bit, a gdje je onda START, ACK svakog bytea??? A gdje je adresa eeproma??? 400 kbps je protok podataka, ali podatci su samo onih 8 biteova u jednoj sekvenci koja započinje I2C startom, pa Hardware adresom eeproma, pa adresom podatka..... Znaci to je drasticno sporije kada ja moram epromu najprije poslati citavu kobasicu informacija da bi mi on mogao dati podatak sa moje zahtjevane adrese. Radio sam i sa PAGE READ iz eeproma i za nekih 100 korisnika trebalo mi je dosta vremena da ih sve iscitam i analiziram. Za 100 korisnika ova metoda čitanja eproma mi je još držala vodu, možda se može na eepromu isčitati i 500 korisnika kao PAGE READ na nekoj većoj frekvenciji ali tu sam napravio jednu grešku jer nisam u pitanju naveo kako nemam mjesta za ništa. Hardware je crtan dugo, dugo i dugo i svaki prostor koji je postojao je iskorišten tako da se baš moram osloniti na ono s čim trenutno raspolažem, a to je samo procesor...
Napisao sam da serijski eeprom pada u vodu jer znam odoka kako ide sljed podataka u I2C sabirnici, a drugi još bitniji razlog je onaj koji nisam napisao i ispričavam se zbog toga, a to je da jednostavno nemam mjesta za eeprom.
Rekoh možda je netko od vas analizirao korištenje FLUSH memorije za ovu svrhu...
InTheStillOfTheNight
Re: AVR PGM SPACE
Vrlo dobro poznajem I2C sabirnicu, samo sam zaboravio sam navesti, da je brzina OTPRILIKE 400kbit/s (stvarna brzina je: 355 kbit/s ). Inače ovi I2C EEPROM-i imaju mogućnost sekvencijalnog iščitavanja (što mislim da kod pretraživanja je i potrebno), pa adresiranje moraš izvršiti samo jendnom. Kad si naveo PAGE READ, je si mislio na to???
Ali ako nemaš mjesta, kao što si i rekao to sve pada u vodu, ali sigurno ne zbog brzine.
Ali ako nemaš mjesta, kao što si i rekao to sve pada u vodu, ali sigurno ne zbog brzine.
- InTheStillOfTheNight
- Odlično uznapredovao
- Posts: 938
- Joined: 01-06-2006, 17:54
- Location: Zagreb
Re: AVR PGM SPACE
da, da pod PAGE READ mislim na to da mu postavim samo početnu adresu u epromu i na savaki podatak koji dobijem šaljem ACK za sljedeći podatak, ali i nemam baš iskustvima sa brzim pretraživanjem EEPROMA jer mi to nikada nije trebalo nego sam većinom u eksternom eepromu držao neke stvari koje pri startu dižem u RAM tako da mi je brzina uvijek bila nevažna. Sinoć sam se malo do 6 ujutro zezao sa PGM SPACE, ali nisam još sve napravio jer moram to sve organizirati u FLUSHU, a i tamo sam dosta ograničen jer mi je i Source već blizu krova, a na kraju FLUSHA mi sjedi BOOTLOADER tako da je malo zafrknuta stvar... Reset Vector nije 0x0000 nego adresa bootloadera pri kraju FLUSHA, pa tek ako sekvenca Bootloadera nije izvršena skazem na 0x0000 kako bi digao aplikaciju uređaja. Mislim da cu se s tim još dosta namučiti...
InTheStillOfTheNight