Fórum témák
» Több friss téma |
Az (unsigned int*) ptr = eedata_addr; a ptr -be a tömb kezdőcímét teszi.
A törlés minimális egysége egy Flash memória lap, így minimum ekkora tömböt kell lefoglalni. Az App Note -ben egy kis írás optimalizálás is van a Flash memória korlátozott írási száma miatt. PIC32 programming specfication
Ez a két adat pontosan mit takar?
NUM_DATA_EE_PAGES NUMBER_OF_INSTRUCTIONS_IN_PAGE
A PIC32MX???795 lapméret 1024 utasítás azaz 4096 byte. Ha ekkora EEProm méret elég, akkor
const unsigned int eedata_addr[1024]__attribute__ ((aligned(4096)))={0};
Bőven elég, még sok is..
Ki is próbálom, most még a léptetés kicsit makacskodik, de lassan tiszta lesz a kép. Köszönöm a segítséget.
Még annyi kérdésem lenne, hogy említetted az újraírás korlátait.
Azt hol lehet olvasni, hogy mennyiszer lehet újra írni a flash memóriáját? Illetve itt nem úgy működik az írás mint az eeprom esetében, hogy bármikor újra írhatom az egyes területeket igaz? Itt elsőnek ki kell szednem az adatokat, módosítani majd törölni a flash-t majd vissza írni a friss adatot igaz? Idézet: „Azt hol lehet olvasni, hogy mennyiszer lehet újra írni a flash memóriáját?” Az adatlapjában és a PIC32_RefMan_Ch05_Flash_Programming -ben Idézet: „Illetve itt nem úgy működik az írás mint az eeprom esetében, hogy bármikor újra írhatom az egyes területeket?” Egy üres, törölt (0xFFFFFFFF értékű) szót át lehet írni. Ha a memóriaszó már nem üres, benne 1 értékű bitet át lehet írni 0 -ra törlés nélkül. ((nem ajánlott módszer)). Egy 0 értékű bitet nem lehet 1 -re írni, csak törlés után. Törölni csal lapot lehet. Idézet: „tomb_address= (unsigned)enyem_tomb;” Ez az egy sor annyit csinál, hogy az enyem_tomb értékét, aminek a típusa egyébként unsigned int pointer, belerakja egy unsigned int változóba. A pic32 egész családja 32 bites, a címek mind 32 bitesek. A C ugyan különbséget tesz érték és pointer típus között, de azok mind csak ugyan úgy értékek. Az a sor annyit tesz, hogy beleírja az adott értéket (amit a fordítóval számoltatsz ki) a memória változóba, és integer típust ad neki, amit könnyebb utána kezelni aritmetikával. Ha nincsen szükséged numerikus műveletekre a címmel, nem szükséges átalakítani. Azt a kód részletet hirtelenjében csak azért ollóztam egybe, hogy rámutassak, mennyire egyszerűen lehet kezelni. Ami a memória tömb létrehozását illeti, részemről valóban megfeledkeztem róla, hogy flash lap határra kellene rakni, és méretileg is jobb egész egységenként kezelni, @Hp41C kolléga már leírta részletesen. Az olyasmit, hogy csak 10 byte kell, jobb lenne elfelejteni. Amikor törlöd az egész lapot, nagyon sok minden egyéb is megsérülhet rajta, nem csak az a 10 byte lesz kitörölve. Egész lapokban kellene gondolkodnod. A kikopás pedig olyasmi, hogy konfig adatokat még bátran rábízhatsz az mx795 flash-re, de ha rendszeresen frissülő munkaadatokról van szó, talán jobb lenne valami sd kártyára journalingolni a blokkokat. Teljesen mindegy, mennyit bír, a lényeg, hogy az nagyon korlátos érték lesz. Néhány program arra használja a flash kikopást, hogy biztosan csak időkorlátosan tudjon működni egy program. Ha nem az a szándékod vele, én azt jósolnám, csalódni fogsz a használhatóságában.
Sziasztok!
Azt lenne a kérdésem, hogy a vicsys féle "Tanítható időzítő" hex fájl egy az egyben felhazsnálható-e egy 12F629-es PIC-ben? 12F629-es van itthon, a 12F675-öst pedig vennem kellene.
A két kontrollernek egy adatlapja van. A 675-ösben van ADC, a 629-esben nincs. A kapcsolás ezt nem használja, elvileg mennie kell 629-esben is.
Erre gondoltam én is, de mivel nem vagyok annyira otthon a PIC-ekben, ezért gondoltam megkérdezem. Köszönöm.
Nekem van PIC12F675 egy rakattal, bár SMD. Ha van SMD 629-ed, akkor szívesen cserélném veled..
pajti2: értem és köszi a magyarázatot. Hp41C fórumtársunk javaslatát használom, az véleményem szerint is stabilabb lesz. Már csak az a kérdésem, amit feljebb meg is említettél, hogy a PIC32-esek 32bit-es adatokat kezelnek. A kérdésem pedig az, hogy érdemes ebben is gondolkodnom, tehát 32bit-es adatokkal vagy meg lehet oldani, hogy a címzésnél csak byte-okat lépkedjen? Vagy pont az a lényeg, hogy 32bit-es az alap, és így mondjuk egy címre ugorva 32bit-es adatot kapunk? Pl:
Aztán ki akarom nyerni a rajta lévő adatot: Pl:
Meg lehet azt csinálni, hogy byte-onként kérjem le vagy ezt már csak a lekért 32bit-es adattal léptessem ki? pl:
Remélem érthető amit kérdezni akarok... Persze nem gond a 32bit kezelése sem, csak érdekel a dolog.. A hozzászólás módosítva: Nov 14, 2016
Köszönöm, de csak DIP tokos van. Nem arról van szó, hogy nem tudnám megvenni, csak, ha nem muszáj, akkor nem költenék rá feleslegesen.
Idézet: „Meg lehet azt csinálni, hogy byte-onként kérjem le vagy ezt már csak a lekért 32bit-es adattal léptessem ki?”
A hozzászólás módosítva: Nov 14, 2016
Szép napot!
Szeretném ha meglesnétek a beállításokat. PIC18f14K50 Amit szeretnék: -RC összes kimenet -RB összes bemenet -RA3 bemenet -RA4 kimenet Lefordul, fut, de az állapotjelző LED RA4-en folyamatosan világít. Az a láb egyben AN3/OSC2/CLKOUT. Ez bezavarhat? Csúnya a kód, de én csak hobbi szinten űzöm, viszont eddig működtek. A ciklusokat most tanulom. Köszönöm!
A hozzászólás módosítva: Nov 15, 2016
Csak pár észrevétel..
Ez a PIC nem 8bit-es?
Mert így amíg nyomva van a gomb sokszor lefuthat egymás után a feltétel. A hozzászólás módosítva: Nov 15, 2016
De igen, megszaladt az ujjam MPLAB-ban helyesen van írva.
Idézet: Ez kimaradt:„-RA3 bemenet”
Azon portokat amit nem használsz azokat állítsd kimenetre. Idézet: A gombokat érdemes bemenetre tenni és azt figyelni.„#define NA (PORTBbits.RB7 == 0) //nyomogombok #define N1 (PORTBbits.RB5 == 0)” 10k-os ellenállással felhúzni VCC-re majd egy gombbal GND-re lehet húzni PIC lábát. Tehát RB5 és RB7 is bemenetnek kell lennie, azt amúgy nem is állítod sehol.. Példa:
A hozzászólás módosítva: Nov 15, 2016
A 32 bites mag egy lehetősége a 32 bites feldolgozás, nem kötelező élni vele. Ha byte-onként akarsz adatot feldolgozni, csináld byte-onként. Ha meg tudod szervezni 32 bitesre is 8 bites helyett a feldolgozást, gyorsabb lesz a feldolgozásod ugyan azon az órajelen. A hozzászólás módosítva: Nov 15, 2016
Nem igazán olvastam végig az összes hozzászólást (idő híján), de ha esetleg segít nekem van egy tesztelt és működő flash író kódom 32mx170f256b-re.
C++-ban készült de ki tudod szedni a lényeget belőle
Köszi, C#-ban íródik a kódom, de nyilván fel lehetne használni a tiédet is..
Hp41C javaslatán elindulva már megírtam a szükséges kódokat. Most más miatt szívok, de ez már csak így van.
18F46K22...
Nem tudtam 2 órás megfeszített erőfeszítéssel sem az MSSP1 SPI módban elindítani az órajelet RC3 pin SCK1 MSSP1 SPI mode SSPxM<3:0>:1010 Clock output if TRIS=0 ANSEL=0 vagyis SSP1CON1 = 0b00101010 SSP1STAT=0 PMD1 bit6 bit=off MSSP1 enable Mi kellhet még, hogy ez ketyegjen tartósan ? (felhúzó ellenállást 10k tettem rá) Kössz
Az spi lábak ütközhetnek az analóg funkciókkal, amit ki kell kapcsolnod, és digitális beállításokkal, amit az spi port funkcionalitásnak megfelelően kell beállítanod. Mindazokat még az spi configja előtt. Azok rendben vannak?
Itt Látod az CKE CKP bitek hatását.
Nálam okozott már problémát, hogy a CKE = 0 volt, annyit módosíts, hogy SSP1STAT = 0x40 vagy SSP1STATbits.CKE = 1. De nem ettől van a hiba ez csak a későbbi szívást oldhatja meg. Ha az SSPxM így van konfigolva akkor az SSPxADD-al kell beállítani az órajelet bár RESET-nél 0 az értéke úgyhogy kéne menjen. Próbáld ki SSP1CON1 = 0b00100010-val hátha működni fog. A leírtak alapján többet nem tudok írni.
jegyzem amit írtatok kösszi
Az ANSEL en kívül lehet még analóg funkció ? A konkrét RC3 pinre írnak gondolom a digitalon kívűl AN15 SCK SCL namost ha ANSEL 0 és SSPxM<3:0>:1010 Clock output SPI módban kérve akkor még lehet valami más is? A megszakítás kezelésből nem kell semmi, hogy ketyegjen a órajel ?
Az analógot kikapcsolod mind, a trisben az sdo / sck kimenet legyen, az sdi bemenet, az spi configot hagyd alapon, és kösd vissza az sdo-t az sdi-re közvetlenül. Terhelést ne köss rá semmit, a vezeték rövid legyen. Az sck kimenetet hagyd szabadon lebegni. A proci órajel forrást hagyd belső 8 mhz-en, és felezd / negyedeld le. Nem néztem meg ugyan annak a procinak az adatlapját, de majd megtalálod ezeket mind. Aztán küldj ki egy byte-ot, és gyújts ki egy ledet, ha sikerült ugyan azt vissza is olvasni. Ha sikerült visszaolvasni, a felprogramozásnak kutya baja. Amik lehetnek, hogy az adó/vevő között valami csúnya terhelés van ott, vagy a vevő van elcseszerintve, azt nem tudom. Kapcsolási rajzot meg semmit sem adtál, vakon kotorászunk mind, hogy milyen problémád is van valójában.
Köszönöm! Sokat segítettél, megint letisztult pár dolog.
Srácok, adott egy 74LVC86-os OR GATE IC, amely 4 csatornás, csatornánként 2 bemenet mind kettőt 3v-al hajtok, illetve 1 kimenet ami csatlakozik a NorFlash memória címbitjével.
Az a, bemenetét PIC-el, a b, bemenetét szintillesztőn keresztül 68K-val hajtom 3v-on. Az y vagy is kimenet a NorFlash memória címbitre csatlakozik. A 74LVC86 IC egy bizonyos időközönként meghal és nem tudom miért. Semmi másra nem használom, csak az utolsó 4 memória címbiteinek vezérlésére. Van valakinek ötlete miért hal meg állandóan az IC? Bővebben: Adatlap (74LVC86) ui: túl lehet vezérelni PIC-el esetleg ezt az IC-ét? A hozzászólás módosítva: Nov 18, 2016
Úgy érted, hogy 3V-os tápfesz mellett 5V-os bemeneti feszültséget kap valahol?
Hogyan hal meg? Ez az IC a bemenetén lekezel 5.5V-ot is. Táp viszont max 3,6 V lehet.
Nem.
Maximum 3.2v-ot kap Vcc-n és bemenetén is. Már a második hal meg a kapcsolásomon. Nem értem mi üti ki.. gyoran: hát pont ez az.. Még is már a 2. pusztult meg.. A hozzászólás módosítva: Nov 18, 2016
|
Bejelentkezés
Hirdetés |