- $ff83 constant portd
- $ff95 constant trisd
- $ff8c constant latd
Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Vajon mi gyorsul az USB kapcsolaton kívül? Mert a leírásból kiderül, hogy High Speed USB-re váltottak. (Az egy kicsit égő, hogy a saját USB vezőrlőik mellett ehhez FPGA kell, de sajna ez van...)
A PIC programozás gyorsaságának határt szab az adott PIC adatlapja. A debug-olásnak pedig a PIC és az ICD közötti soros kommunikácó sebessége. Meglepő, hogy a belinkelt weboldalon szó sincs a JTAG debugolásról. Azt majd csak az ICD4 fogja tudni?
Valószínűleg debuggolásnál lesz majd érezhető a különbség, főként a 24F, 24H, dsPIC és PIC32 családoknál. Az ICD2-ben egy 20MHz-en járó 16F877 van. Ez a kontroller elméletben 5 MIPS-et tud, gyakorlatilag ez kevesebb. Mivel szoftveresen állítja elő az órajelet a PGC lábra, meg közben vagy kirakja, vagy beolvassa a soron következő bit értékét, így igen optimista becsléssel is csak 1MHz jelet tud produkálni a PGC lábon, ami 1Mbps sebességet jelent(ene elméletben, gyakorlatban jóval kevesebbet). Ha viszont a PGC láb eltűr akár 10MHz-es sebességet is, akkor egy FPGA azt meg tudja kergetni 10MHz-en gond nélkül. A Hi-Speed USB kapcsolat meg szintén győzi a PC felé átvinni az adatokat, bár ha a fentiek szerint végiggondoljuk, az ICD2-nél sem az USB kapcsolat a szűk keresztmetszet.
Nekik tudtommal nincsen Hi-Speed USB-re képes kontrollerjük, így aztán mástól veszik, ami kell. Amíg nem volt Full Speed-es USB kontrollerjük, addig is a Cypress-től vették az ICD2-höz a kontrollert. Aztán lett nekik is, Cypress meg abbahagyta a gyártását, akkor áttértek a sajátjukra. Idézet: „Vajon mi gyorsul az USB kapcsolaton kívül?” Gondolom ugyanugy ahogy a legujabb PICkit2 ez is fogja tudni hasnzalni a Programming Executive (PE) -et, amivel a 24H es dsp (no meg a 32 bitesek) joval gyorsabban tudnak kommunikalni a programozo / debuggerrel. Idézet: „Az egy kicsit égő, hogy a saját USB vezőrlőik mellett ehhez FPGA kell, de sajna ez van...” Na igen, Hi-Speed-et nem kepesek a PIC kontrollerek (egyenlore). De ugy tudom egy mikrokontroller sem, javitsatok ki ha tevedek. Ugy tudom az osszes eszkoz ami tud 480Mpbs-et az FPGA-s alapu. Amugy ha bele gondolunk, hogy par kByte-ot atvinni mar azert idobe telik meg 12Mbps-en is, es hat ugye az USB protokollbol adodoan az a 12Mbps sem annyi a valosagban, hanem annal joval kevesebb.
Szia!
Nagyon szépen köszi! Ha nég mindig van türelmed a bajommal foglalkozni, légyszi küld el azt a mintafilet. Legalább az eldől, hogy a programom a rossz, vagy az MPLab simulátorát nem tudom használni . Egyébként az én forrásom, amivel küzdök 18F2221-re készült.
Vannak Hi-Speed képes kontrollerek Cypressnél, Texasnál, egyebeknél. De az usb eleve sokmindent hardverből intéz, a full speed-es kontroller is gyakorlatilag egy sima kontroller+usb modul (ezt szokták SIE néven emlegetni a pic-ek adatlapjában) egybeépítve. Ugyanígy építhető Hi-Speed modul is a tokba. Talán a PIC32-nél lesz is előbb-utóbb ilyen, mivel az már teljesítményben túltesz a Full-Speed képességein, így lenne értelme a Hi-Speed modulnak.
Igen, ez nyilvanvalo, de szerintem a korlat a memoria eleresben lehet. A 4550-esben az a 12Mbps nem jelenthet nagy gondot (ugye 12MHz olvasasi sebesseg, azaz 83ns eleres) mig egy 480Mpbs-hez kellene 2ns eleresu RAM ha jol szamolok.
Idézet: „480Mpbs-hez kellene 2ns eleresu RAM ha jol szamolok.” Nem jól számolsz, mert nyilvánvalóan nem kell bitenként letárolni. Bőven elég bájtonként, vagy szavanként, s akkor 8-szor, vagy még többször ennyi idő áll rendelkezésre. Sőt, váltott bankos (átlapoló ciklusú) memóriakezeléssel is lehet szélhámoskodni...
Sziasztok!
Hogy kell olyan interruptot készíteni PIC16F690-hez mely a kontrollert sleep állapotba juttatja és olyan 10 perc múlva felébreszti??
Akkor is egy bit tárolását átmenetileg meg kell oldani 2ns ideig, majd arrébbléptetni, és ismét tárolni 2ns-ig, és így tovább, amíg bejön egy bájt (az usb bájtokkal dolgozik). Ha a léptetőregiszter kimenetén van egy puffer, akkor onnan a memóriába írásra már van 16ns idő, tehát oda már valóban elég az alacsonyabb sebességű memória is.
Na ez már beszéd! Csak pozitívan! Gond egy szál se, nem vesszük le a fejed, és itt mindenki tévedhet, és az csak plusz erény, ha belátja. Ez nálam piros pontot ér!
Pl. lehet úgy, hogy a Timer1 külső oszcillátorát engedélyezed, teszel rá egy 32,768kHz-es kvarcot 4-es prescalerrel, és a kontrollert meg SLEEP-be küldöd. Amikor a Timer túlcsordult, akkor felébreszti a kontrollert, ekkor egy változó tartalmát megnöveled egyel, és ismét SLEEP. Ezzel 8 másodpercenként ébred fel néhány us időre. Amikor a változód elért 75-re, akkor telt le a 10 perc, nullázod a változót, és megcsinálod, amit kell. Ezután kezdődik előlről.
Azt nem vitattam, hogy a SIE shift regisztere és mindenféle egyéb regisztere, dekódere nagyon kell, hogy csipkedje magát.
Én még nem szedtem szét az USB diszkemet, de volt már, aki szétkapta a sajátját. Némelyikben ilyen, vagy ehhez hasonló USB vezérlő ketyeg 400 Mbiten. Kép: Hivatkozás
Ráadásul, ha jól emlékszem, akkor a bitek körül is van egy kis csavarás, mert ha túl sok egyforma jönne egymás után, akkor kerül egy extra jelváltás a fizikai rétegen a kommunikációba. Szóval nem egy egyszerű shift regiszter, hanem kell abba egy kis okosság is, szerintem ezért is hívják Serial Interface Engine-nek az ilyen eszközöket.
Ha jól láttam, amikor nézegettem ezeket, akkor talán léteznek is külső, önálló SIE chipek, amik byteok vagy keretek vételére alkalmasak, és így az MCU oldalán sokkal kisebb erőforrásokra, sebességekre van szükség, mintha a bitdekódolást is azzal akarod csinálni. Azt nem tudom, hogy high speed SIE önálló chipben létezik-e.
Nemszeretem ezeket a nevesincs gyártókat, mert sosem lehet beszerezni a termékeiket. Múltkor is szétkaptam egy USB-IDE átalakítót, Genesis Logic nevű gyártó chipje van rajta. Ezelőtt sosem hallottam róla, mint ahogy erről az Oxford Semiconductorról sem. Nekem gyanús, hogy ezek mögött ilyen TI, Cypress, NXP és hasonlók állnak. Múltkor is szerettem volna Hi-Speed USB hub chipet venni, természetesen sehol nem találni (normális áron) beszerezhető chipet, vagy nem embernek szánt tokban van (BGA meg hasonlók).
Persze, nem csak egy léptetőregiszter, de azzal kezdődik a dolog, annak kell a leggyorsabbnak lennie.
Microchipnek is van ilyen külső FS USB chipje, SPI-n köthető kontrollerhez. De szerintem több erőforrást igényel a kezelése, és biztosan lassúbb, mint a belső SIE. Persze ha nincs belső (mint mondjuk Ethernet vagy CAN buszos PIC kontrollereknél), akkor jól jöhet a külső is. Amit lehet, a chip elintéz hardverben, de ezt ugyanúgy megtenné akkor is, ha a kontrollerrel egy tokban van. A HS jó kérdés, még nem láttam olyant.
Lenne egy kérdésem.
Én az ICD 2-t laptopról működtetem. Befolyásolja e az égetőfeszültséget, hogy nem a "normális" usb-ről működtetem? Olvastam, hogy az ilyen emulált vagy milyen usb portok elég kevés teljesítményt adnak le, és ezért nem bírja nekem meghajtani az ICD-m. Kicsit zagyván sikerült, bocsi.
Mérd meg az 5V-ot. Ha az megvan ,akkor a Vpp áramkörének(DC/DC átalakító) elő kell tudnia állítani a feszt. Ha nincs, akkor gáz van.
Szerintem az USB az USB, mindegy, hogy laptop vagy desktop gépről van szó. Az USB-n 5V-nak kellene lennie, ezt mérd meg egy multiméterrel!
Az is lehet, hogy nagy az áramfelvétele az ICD2-nek, és emiatt leesik a tápfesz, esetleg az USB kábel ellenállása miatt (nálam volt ilyen). Mérd meg az USB feszültséget üresen és ICD2-vel terhelve is, valamint mérd meg ohmmérővel az USB kábeled ereinek ellenállását!
Olyan nincs, hogy emulált és normális usb. Esetleg lehet hub útközben, de én is hub-ról használom az ICD2-t, és megy így is.
Befolyásolja, ha a porton a feszültség jelentősen alacsonyabb, mint 5V. A Vpp feszültség beállításához az ICD2 tápját használja referenciaként, és így pl. 4,5V-os tápnál a 11,7V-ról azt hiszi, hogy az 13V. Ha ez a helyzet, akkor kösd ki az ICD2 táplálását az USB portról, és adj neki valahonnan stabil 5V-ot, például egy 7805-ös stabkockával.
Feszultsegben is lehet elteres, 4.5V - 5V -ig minden elofordulhat, meg leadott aramban is, foleg a mobil keszulekek hajlamosak arra, hogy nem adjak le a kivant aramot. Mericskeles az elektromosok modszere, meg kell merni mindent - de ezt nem irtuk mar? Ha megvannak a feszultsegek (iras kozben, nem elotte es nem utana!), szoval ha megvannak akkor nem az a gond, persze ettol meg lehet zaj a vonalon, de ha ott vannak a szuresek akkor csak nem lesz gond azzal sem. Hibakeresesben amugy a szisztematikussag a lenyeg, ki kell zarni a lehetosegeket, az egyszerubtol megy az ember a bonyolultabb hibak fele, hatha az egyszerubb eset all fent - pl szakadas, hideg forrasztas, nem megfelelo tap stb...
Sziasztok,
megint én vagyok. Ha van egy táblázatom pl a 560h programmemória címen,akkor melyik adat hova kerül? A köv.kóddal tárolom: db 0x20,0x30 Tehát melyik érték lesz az 560h címen,és melyik érték lesz az 561h címen?Kiolvasáskor tudnom kell. köszi üdv
Szimulátorral próbáld ki, én is úgy csinálnám.
Most ha olyanokat mondok, hogy 'little endian', meg 'alignment' meg 'packed data' akkor ezeknek utana olvasol? Mert lehet az 561h cimen neked egy hatalmas nulla lesz... MPLAB help, MPASM Assembly szekcio, ott keress ra ezekre a szavakra, peldak is vannak boven!
Ledvillogtatás FlashForth-ban, HPC Explorer kártyán (mert mivel is kezdje az az emberfia a programozást, ha nem a led-ek villogtatásával? )
A D portra vannak kötve a ledek, ezért TRISD és PORTD matatás kell a villogtatáshoz. A regiszterek szimbolikus címzéséhez ennyivel beérhetjük: A regiszterbe írás a "!" utasítással, olvasása a "@" utasítással történik. Kézivezérléssel így meg a villantás:
Persze, bitenként is matathatjuk a portot, az mclr és az mset (ez a maszkolt bit törlés és bit beállítás). Írjunk egy rövid programot... akarom mondani definiáljunk egy blink parancsot, ami a harmadik ledet villogtatja kb. 400 ms periódusidővel, végtelen ciklusban, amíg egy billentyűt le nem ütünk. Utána próbáljuk is ki.
Természetesen a késleltetést változtathatónak is hagyhatjuk. Ekkor a villogtatás előtt be kell írni, hogy hány ms legyen a Ton és Toff idő. Háromféle késleltetéssel is kipróbálom.
Idézet: „Én az ICD 2-t laptopról működtetem.” Én meg a PICkit2-t. Múltkor mértem, s csak 4,74 V jött ki belőle 5,0 V helyett. Ehhez képest elég jól szuperál... Idézet: „Azt nem tudom, hogy high speed SIE önálló chipben létezik-e.” Nehéz meghúzni a határvonalat, de jószerivel ez az Oxford chip is csak arról regél, hogy DMA-n keresztül 16 bites szélességben nyomja az adatot a processzorba. Tehát csak USB vezérlőnektekintik. Ehhez képest sok mindent önállóan elvégez. Potyo-nak: Természetesen az Oxford chip is kapható BGA tokozásban...
Üdv
Hogyan lehet fordulatszám mérő progit írni PIC-be? A progit meg tudom írni, csak az elméletben nem tudom, hogy mit és hogyan. Úgy kellene hogy ha közben jön egy IOC akkor is folytassa a számolást, illetve lehet olyat hogy közben a lábakon jel is változik? A fordulatot egy optokapu érzékelné. Tehát az elmélete kellene hogy min alapszik a mérés. Köszi |
Bejelentkezés
Hirdetés |