Fórum témák
» Több friss téma |
Előkotortam egy sokéves programomat és ezt makrót találtam, igaz ez 18f-re van, de némi módosítással átvihető 16f-re:
A felhasználása pedig:
Köszi, ezt elteszem későbbre. Most csak kétjegyű számot kellett szétbontani, jelenleg felesleges egy ilyen hosszú kód.
Sziasztok
Egy pic-ről, ha nincs semmiféle visszajelzés, hogy tudom megállapítani, hogy megy-e? Ha egy multival rámérek az oszcillátorra frekvenciamérőjével akkor akkor blokkolja, tehát az nem mérvadó, dse mégis, hogy tudom megállapítani scrödinger macskájáról, hogy él/halott egy egyszerű multiméterrel? A Vss - Vdd között nem mérek terhelést. Gyári áramkörökről van szó. Üdv
Szia!
Hát kicsit többet kellene tudni az áramkörről és annak működéséről. Ha van kimenet valamelyik lábon akkor az mérhető, de lehet, hogy ahhoz a multi kevés lesz, esetleg ha tud frekit mérni akkor mutathat valamit, de egy oszcilloszkóppal többre mennél. A hozzászólás módosítva: Jún 7, 2016
Használtál már feltételes fordítást? Érdemes használni, mert lehetőséged van arra, hogy a kódodat többféle felhasználási módnak is eleget téve készítsd el, aztán a paraméterezéstől függ, hogy a végleges kódba mely részek kerülnek bele és mely részek nem. Így ha pl. a fenti példában csak a WriteuByte2-t rakod bele, akkor csak a kétszámjegy átalakításához szükséges kód kerül bele, a többi pedig nem.
Szia
pic16c57c-ről van szó, máskor is futottam bele más uC-be ami kérdéses volt, mert oké kiszedem rákötöm pk2-re, esetleg fölismeri, kódot nem tudom kiolvasni, mert biztos, hogy read protectes, nem biztos, hogy előrébb vagyok. Egyébként kapunyitó, a pic kivétele után a kimeneteket tudom kapcsolgatni 5 voltal, tehát itt már hiba nincs, viszont az, hogy biztosítékokra tettek ledeket, hogy lássa az ember, hogy kiment-e, de hogy az pic-re sajnáltak ráakasztani, hogy villog vagy valami az elég vicces, arra már nem futotta ![]() Milyen árkategóriájú egy olyan szkóp amit ha rákötök a oscillátorra, (4-20 mhz-ról van szó) és tutira megmondja, hogy az a pic fut/nem él? Üdv
Talán ilyesmit keresel. Bővebben: Link
Hogy lehet ellene védekezni.
Időnként leakassza a PIC-et, sajnos. Tuti a motor zavar be ilyenkor.
Jó volna tudni mi kerül rá a mért részre.
Gyanítom, hogy időnként nagyobb feszültségű zaj jut a PIC -re mint amit fel tudna dolgozni. Én talán valami műveleti erősítős megoldással próbálkoznék aminek a kimenete semmiképp nem lehet magasabb 5V-nál. Esetleg a bemenetén még szűrni a tüskéket.
Az oszcillátor egyik kivezetése kimenet, a másik pedig bemenet. Értelemszerűen a kimenetre kell csatlakoznod a frekvenciamérővel.
Akkor lehet egy 5v-os zéner és egy 100nF-es kondi meg is oldaná a dolgot nem?
Még az is lehet.
Srácok!
Köszönöm mindenkinek a segítséget, sikerült a távcső mechanika PIC-ét Flashelnem csere után tökéletesen működik! Idézet: „Beépített a hőmérő a motorba, nem tudom cserélni.” Idézet: „Időnként leakassza a PIC-et, sajnos.” Le is fogja. A gyári beépített hőfokmérő analóg műszerhez készül többnyire, így a testet a motor adja. De még ha kétvezetékes is, akkor sincs rendesen elszigetelve. Galvanikus leválasztás híján minden zavart összegyűjt. Próbálj meg megfelelő mérőhelyet keresni a motoron, és fogadd meg Elektro.on tanácsát. A DS 1820-asnak van ilyen változata is.
Nem kell megfogadnom a tanácsát, mert eddig is DS18B20-al volt mérve a hőfok, de gondoltam kipróbálom a beépített szenzorát.
De be-be üt véletlenszerűen és gyakorlatilag megbolondul a program.
Sziasztok!
Egy dsPIC33EV256GM102 PLL-jével számolgatok és a 9.1 CPU Clocking System alatt van a PLL blokk diagramja és ott a FOSC < 140MHz van írva de a 70MIPS-hez nem 140MHz kell? Vagy csak hibázott az M és <= nem fért oda? Valamint nem igazán értem, hogy lehet a 140MHz-t kihozni a PLL-ből 4MHz vagy 8MHz-el számolva se tudtam kihozni mert ha az N1 N2 M hez hozzáadok, szorzok ahogy a doksi írja sehogy se jön ki. És egy kép is ne kelljen keresni ![]() Szerk.: Most nézem az oszcillátor reference manuál-ját és ott nincs benne semmi hozzáadás meg szorzás. De akkor a FOSC CALCULATION-ba mért van benne ez: Where: N1 = PLLPRE<4:0> + 2 N2 = 2 x (PLLPOST<1:0> + 1) M = PLLDIV<8:0> + 2 ? A hozzászólás módosítva: Jún 7, 2016
Közben rájöttem az N1 N2 M hozzáadás, szorzás problémára. A bináris értékhez hozzá kell adni vagy szorozni, hogy a leírásban megfelelő értéket kapjuk (pl.: PLLPRE = 0 az 2-nek számít).
De az első kérdés még fent áll, de szerintem 140MHz tud menni a PIC, csak nem akarok szívni vele.
A 140MHz-hez a 4 MHz-es órajelet oszt le 4-el (PLLPRE=2) így 1 MHz-et kapsz, majd a PLL feedback osztó legyen M=140 (PLLDIV=138). A PLLPOST maradhat 2. Jitter szempontjából lehet az PLLPRE=0 (N1=2), PLLDIV=68 (M=70) jobb.
A "+" jelek csak azt jelölik, hogy a regiszterbe beírt értékekhez hozzá kell adni egyet vagy kettőt hogy megkapd az N1,N2, M értékeket. Ennek az az oka, hogy pl. a 0-ás és 1-es értéknek nincs értelme a PLL szorzás, osztásnál.
Tapasztalatom szerint simán megy 170MHz-en (85MIPS) is.
Hallottam már ilyesmit, hogy a PIC tud nagyobb frekin menni mint ami rá van írva csak a Microchip eddig garantálja mert 85MIPS-re lehet az egyik felmegy a másik nem. De így így legalább iztos, hogy a 70MIPS megvan.
Egyértelműen elírás.
Egy tipp: olvasgasd a dsPIC33E/PIC24E Family Reference Manualt is, ne csak az adatlapot. Abban bővebben leírnak mindent.
Felmerült egy újabb kérdés, de lehet már a haladóba kéne írjak ezzel kapcsolatban.
Az előbb említett dsPIC-el szeretnék C-ben egy 8 bites változóban bit cím fordítást 7->1 6->2 ... és tudom, hogy tudja hw-san is. Valamennyire már megértem a 16 bites assembly-t de még nem vettem rá magam, hogy megtanuljam. Nem is értem teljesen ezt a reversed addressing dolgot, de assembly-ben van egy csomó példa csak nem igazán tudom, hogy pakoljam át C-be, próbálkoztam C-s kóddal és inline assembly-vel is egyik se lett jó. Nem FFT-hez kellene amit mindenhol elmondanak, hogy arra van, de e mondjuk, ha egy váltó 0xC0 akkor abból 0x03-mat kellene kapjak és szerintem ezzel a hw-s modullal megoldható gyorsabban mint bit vizsgálattal. Valakinek nincs erre kódja, esetleg Zsora neked (láttam, hogy elég sokat foglalkozol 16 bittel)? Idézet: „On dsPIC33EPXXX(GP/MC/MU)806/810/814 devices, overhead-free circular buffers (Modulo Addressing) are supported in both X and Y address spaces. The Modulo Addressing removes the software boundary checking overhead for DSP algorithms. The X AGU circular addressing can be used with any of the MCU class of instructions. The X AGU also supports Bit-Reversed Addressing to greatly simplify input or output data reordering for radix-2 FFT algorithms. PIC24EPXXX(GP/GU)810/814 devices do not support Modulo and Bit-Reversed Addressing.”
Ez a funkció adatterületek átrendezéséhez való, és csak [Wx]++ és ++[Wx] címzésmódokkal, ill. szavas (16-bites) mérettel (az X adat RAM területen) használható. Konkrét adat bitjeinek átrendezéséhez nem használható!
Milyen célra kellene neked? Leírnád pontosan a feladatot?
Bocsi! A címzésmódokat mindig keverem az MC68000 címzésmódjaival, mivel korábban sokat programoztam Amigán.
![]() Tehát: [Wn++] és [++Wn]
Kényelmesebb a kikötés egy HD44780-ra, ha az LCD d0->RB15 d1->RB14 ... megy (mondjuk) és fel akartam cserélni a biteket. Ezt tudom, hogy C-ben megoldható sok féle módon, de free-ben egy bit fordítása 6 vagy 7 sor, 3 vagy s optimalizációval 4 sorra hozza ki, de ezt assembly-ben meglehetne oldani gyorsabban nekem egy ilyen az elképzelésem:
De ez a kód csak 0-ás optimalizációnál működik és ott mivel ezt se direkten assembly-ben rakja be a C az is 4 sor. Mint a 3/s optimalizációnál C-ben. Az 1,2,3,s optimalizációnál ezt adja a disassembly:
De ez 0-ás optim.-nál nem így néz ki(nem akarom bemásolni az működik ![]() Tudom, hogy az a 7 vagy 4 vagy 2 sor majdnem mindegy egy LCD-nél, de a későbbiekben jól jöhet hogy itt megértek valamit. Ja és még mielőtt rám szólna valaki, hogy mért nem írom assembly-ben, mert sose írtam assemblyben 16 bitre kódot csak a sok disassemblyből kicsit megértettem. |
Bejelentkezés
Hirdetés |