Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
A SST26VF032 flash-t lehet QI-vel használni, ugye?
Igen, ez egy SQI flash, éppen most rendeltem egyet, holnapra itt lesz elvileg a EFH-val együtt. Áthidaló megoldásnak szánom SD helyett, gondolom neked is ilyesmi forog a fejedben!? Hab a tortán, hogy az EBI-hez leírtak érvényesek az SQI perifériára is (a hozzá tartozó virtuális és fizikai címekkel természetesen)!
![]() A hozzászólás módosítva: Feb 29, 2016
Hú, mivel nem foglalkoztam még ezekkel, nem mondom, hogy teljesen képben vagyok, de a harmadik olvasásra már valamit értettem belőle
![]() Köszi, hogy megosztottad, ha odaérek, hogy használnom kell, biztos könnyebben megértem !
Na az szép! Úgy emlékeztem, higy 16mb-os flash ict rendeltem, de csak 4, úgyhogy elővettem most az sd kártyát, de szerintem a flasht is ki fogom próbálni.
Az lenne a cél, hogy az sd-ről képet megjelenítsek, meg fájlt írjak és olvassak. Csak tanulás céljából. A flash-be is ha akarom beletuszkolok 5-6 képet. De most inkább az sd-vel foglalkozom, a PMP-vel is mennyit szívtam, most nem hiányzik az SQI. ![]()
Nagyon bosszant, hogy az CX32-nek nem tetszik ez:
Csak így:
Valamit lehet kezdeni vele?
Olvasgattam és SPI-n SD kártyával kb 800kb/s-hoztak ki. Az kép megjelenítéshez nem egy eszeveszett sebesség.
A flash-el, SQI-val kb milyen sebességre számítasz?
50*4/8=25MB/sec. Ha a fele igaz, már jó.
A C-s kérdésedre nem tudom a választ, nekem az a fura, ha helyben deklarálod a változót... Viszont én meg kínlódom az EBI-vel. Elvileg mindent beállítok, még sem működik. Most nem tudom eldönteni, hogy az ECH verzió a hiba, vagy én rontok el valamit... A hozzászólás módosítva: Feb 29, 2016
Igen, az már teljesen okés.
A for-ban ahol helyben deklarálom a ( és a ; közötti részt egyszer hajtja végre. Így mindegy hol deklarálod, csak nekem így egyszerűbb, így van megszokva. Az efh még nem jött meg? Szerintem ne kínlódj vele, ott a PMP, elküldöm a kódot ha kell.
Tudomásom szerint a sima C-ben csak a függvények elején lehet a változókat deklarálni, a C++ -ban meg bárhol:
Különbségek a C és a C++ között
Talán a C99 szabványtól kezdve lehet a C-ben is bárhol változót deklarálni, de az XC32 az C89/90-es szabványt támogat.
A Harmony-t a legvégső esetben szeretném csak használni.
A UpdateCoreTimer(CORE_TICK_PERIOD); függvény kiváltására van valamilyen lehetőség? Nem találtam meg a header-ek között a harmony könyvtárban.
Szia! A régi MPLAB-ban a PIC kiválasztásakor jelezték, hogy melyik debuger/égető áramkör milyen készültséggel kezeli az adott PIC-et. Az MPLAB X-ben van ilyen tájékoztatás?
Csak arrol tajekoztat, hogy megnehezitjuk a fejlesztok eletet, de cserebe sok extrat adunk, viszont mellette van egy pipa de be van szurkulve.
![]()
Sziasztok!
Ismételt PIC32MZ2048EFH100 szivatás történik ezúttal az SPI-vel. Szkóppal vizsgálva SS jel van (a modul kezeli), DOUT jel van, SCK van. SD kártyával kötöttem össze és DIN jel nem volt, tehát semmilyen válaszra nem válaszolt. Most az SDI és SDO lábakat összekötöttem a PIC-en és tesztelni akarom, hogy amit kiküldök, az visszajön-e:
Nem történik semmi. A while (SPI1STATbits.SPITBF); még lefut, ezt szkópon is látom de a while(!SPI2STATbits.SPIRBF); megakad. Ha ezt kiszedem akkor sem kapom vissza amit kiküldtem.
Szia!
A 27. sorban már elindítod az spi-t,így nem vagyok benne bizti,hogy a 28-29. sort figyelembe veszi -e.Próbáld 0x0220 -al,az On a 30.sorban majd úgy is elindítja. 2.es móddal próbálod használni az SD-kártyát? Én mod0-ával használtam,azzal ment,amikor még foglalkoztam vele. CKE = 1,CKP = 0. Ja és ha nincs őrkutyád bekapcsolva,akkor csinálj valami kiléptetést,mert így ha gubanc van,akkor be fog ragadni a progid a while-ba.
Most annyit változtattam, hogy a 27-es sort kijavítottam: SPI1CON = 0x00008120;
Illetve a 28-30-at kitöröltem. Továbbra is az SPI1BUF-ból 0xff-et olvasok ki... Mit jelent a 2-es mód és 0-s mód? Esetleg ahogy Te használtad azok az SPI függvények még megvannak? Jelenleg pontosan így néz ki a kódom:
Bár ez 24-es picre van,de én így használom,így 1ből látom,hogy mi van beállítva. SPI mod-ok: 0: CKP=0 CKE=1 1: CKP=0 CKE=0 2: CKP=1 CKE=1 3: CKP=1 CKE=0
Köszönöm!
Ez alapján még javítottam az SMP-t 1-re, de így is ugyan ez a gond. Már teljesen tanácstalan vagyok, újabb 2 nap szívatás után. ![]()
A modok csak akkor számítanak,ha az spi-s már működik,addig el kellene jutnod,hogy tudj fogadni is.Le kellene szimulálnod,és akkor kiderül,hogy miért is akad el a fogadásnál.
Mplab -ban debugernél beállítod,az mplab simet,és futtatod a progit,bár nem minden procit lehet így debug-olni...Lehet találni a neten hozzá leírást.vagy beszerzed a Kónya könyvet,abban le vannak írva az alapok.
Még nem használtam soha sem ezt. Holnap kipróbálom. Azt meg tudod esetleg mondani, hogy nagyvonalakban a szimulálást hogy csináljam? Mit nézzek, keressek?
Sajna 32-eshez csak az Mplab X jó,és azt nem használom,csak a régit.Ha el tudod indítani a szimulátort,akkor a watch-ablakban tudod nézni ,hogy a változóid,regiszterek,bufferek milyen értéken vannak,amikor éppen megállítod a szimulációt.A stimulusban tudsz(Mplab X-nél lehet hogy máshogy hívják)külső eseményeket létrehozni.
Szia! A project ablakban a bal felső beállító ikon(talán két szerelőkulcs) megnyomásával bejutsz a beállításokhoz. Ha jól rémlik a general alatt vannak a debugger lehetőségek, ott a simulationt kell választani. Ezután lefordítod a programot a kis zöld lejátszó jelet tartalmazó gombbal. De előtte tegyél egy megszakítást az PSI dolgok első sorára, hogy onnan lépésenként tudd végrehajtani a prgoramot. Fel lehet nyitni egy watch ablakot, amibe bele tudod pakolni azokat a változókat és regiszereket, amiket látni szeretnél. Sajnos nem garantált, hogy az MPLAB X jól kezeli az MZ EF sorozatot, de valamit azért talán látni fogsz a regiszterekben.
A hozzászólás módosítva: Márc 2, 2016
Sikerült elindítani. Pl egy 300ms-os várakozás a Timer-el nagyon sokáig tart, meg sem vártam, 5 perc alatt nem csinálta meg.
![]() Most megpróbálok egy másik SPI periféiriát felkonfigolni és más lábakra is fogom tenni.
Na csak sikerült feléleszteni. Nem jól volt beállítva, hogy az SDI melyik lábra kerüljön. Mivel az a láb ahol valójában volt fizikailag, alapbeállítással kimenetként inicializálódott, ezért a PIC-ben lévő FET rövidrezárta az SD kártya kimenetét.
![]() Teszteltem egy márkátlan és egy SanDisk SD kártyával, FAT16 és FAT32 fájlrendszerrel, 4, 8 és 16MB-os adatok írásával. A sebességek a csatolt táblázatban vannak. Érdekes, hogy hiába vettem fel az SPI órajelet 16,66MHz-ről 25MHz-re (elvileg ez az SPI módban a maximum sebesség), nem lett jóval gyorsabb a kommunikáció. 800kb/s-ra már azt mondanám, hogy OK. Van esetleg ötlet, hogy miért nem tud gyorsabb lenni? |
Bejelentkezés
Hirdetés |