Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Bocsi, rosszul emlékeztem. Úgy emlékeztem a 16 biteseknél is van MCLR kikapcsoló konfigurációs bit, de most látom, hogy nincs.
Sziasztok!
Forrasztottam rá 1 és 10 n kondikat a pic mellé. Semmi nem változott. Üdv Szabolcs A hozzászólás módosítva: Aug 6, 2013
dsPIC30F4012 mennyire melegedhet? Belső RC oszcillátor PLL16 beállítással. 5V-ról megy a tápja. Egy szervó szabályzót csináltam vel, de viszonylag gyorsan (1-2 perc) felmegy a tok hőmérséklete kb 50-60C-ra. Működik miden, csak egy idő után a pwm kimenet "lefagy".
A lábak jól vannak felkonfigolva, és nincsennek leterhelve. Ha a PLL-t leveszem 4x-re akkor már nem melegszik szinte semennyire. Viszont itt meg már kevés a sebesség. A 8x PLL is rendesen melegít. A táp nem gerjed, teli van rakva 100nF és 1uf tantálkondikkal. A hűtőborda vagy zászló kilőve, mert nem fér el, ventillátor sem járható mert kicsi a doboz. Valakinek ötlete, hogy mit lehetne csinálni? A hozzászólás módosítva: Aug 10, 2013
16xPLL mellett 16MIPS->74mA, 30MIPS->132mA szerepel az adatlapon, az 0.4..0.7 Wattot jelent, ami tokozástól függően 15..30 fok dT-t jelent, 25..30 fokos környezetben az 40..60 fokos chippel jár. Szóval nem irreális, amit tapasztaltál.
Idézet: „100nF és 1uf tantálkondikkal.” Na azt a 100nF-os tantálkondit megnézném. Idézet: „Működik miden, csak egy idő után a pwm kimenet "lefagy".” Szerintem nem a meleg miatt van ez. Fénykép/panelrajz alapján többet lehet mondani.
50-60 fokos hőmérséklet teljesen normális hosszú távon is, biztosan nem ez okozza a problémát.
Az már égető érzés a bőrnek. Hobbistaként már a langyosnál melegebb IC hőmérsékletet aggasztónak találtam eddig.
Annyit tennék még hozzá, hogy egy bedobozolt készülékben már 60-70 fok is lehet, ha a környezeti a 40 fok körül jár. Ehhez adódik hozzá a 15 .. 30 fok elemkedés a disszipáció miatt. Egy készülékben nem igen javasolt a tok hőmérsékletet 70 .. 75 fok fölött tartani. A félvezető mag hőmérsékletét pedig 90 . 100 fok alatt kell tartani.
A hozzászólás módosítva: Aug 12, 2013
A doboz egy 300x200x150 mm-es fém szekrény, amiben még van egy PLC. A múlt heti nagy melegben adta ezt elő, azóta viszont megy. A dspic I/SP tehát nem extended hőmérésékletű. Szerkesztek valahogyan rá egy hűtőzászlót, majd meglátom mi lesz belőle.
Az az igazság, hogy általában az újabb, modernebb cuccok sokkal jobb hatásfokkal üzemelnek. Ha egy PIC32-t, vagy egy Cortex M3/M4-et nézel, ott ugyanez a teljesítmény ötöd-tized hőtermeléssel párosul (többek között mert elég nekik 3.3V).
Sziasztok!
dsPIC30F4013-on használom a gyárilag megírt FFTComplexIP(), BitReverseComplex(), SquareMagnitudeCplx() függvényeket C30-as fordítóval MPLABX-ben. X-RAM-ba inicializál TwiddleFactor értékeket és Y-RAM-ba másolom egy ciklusban a program elején a konstans int-ként definiált jel diszkrét értékeit. A diszkrét értékeket -0,5 +0,5 között dsPICworks-v2.1 szoftverrel számolom. A spektrumra kapott értékeket visszaküldöm PICkit2 -re és egy txt-be logolok, majd kirajzoltatom. Az a problémám, hogy amennyiben az fft.h-ban definiálok egy 256 pontos spektrum hosszt akkor a kirajzolásnál 0-128-ig látszik egy két oldalas spektrum, 128-tól elég érdekes értékek vannak. Van valakinek tapasztalata ezekkel a függvényekkel? Előre is köszönöm.
Megoldódott. Az adatok kiküldésével és feldolgozásával volt a probléma.
Sziasztok!
Egy fura XC32 dolog: Amennyire én tudom, a MIPS assemblyben a 'la' pszeudoutasítás egy lui és egy ori utasításra fordul, ahol a lui tölti be a regiszterbe a cím felső két byte-ját, az ori meg ehhez hozzácsapja az alsó kettőt. Namármost az XC32 v1.21 ezt egy egyszerű lui utasításra fordítja. Gondolom azért lehet, mert a la utasítás után általában egy load vagy egy store következik, ahol van offset lehetőség 16 bites tartományon, tehát ez teljesen feleslegessé teszi az ori használatát, viszont ide nem lehet szimbólumot rakni. Az assemblernek ez nem gond, de a mezei felhasználó nem fogja megjegyezni az SFR-ek vagy a változók címét, az utóbbiak ráadásul a kódolásnál nem meghatározottak... Szóval a kérdés: tudja valaki, hogy ezt a viselkedést át lehet-e állítani valahol a klasszikus viselkedésre? Végső soron oda lehet rakni a la utasítás után az ori-t kézzel, megeszi a compiler (mert immediate utasításnál az alsó 16 byte-ot használja csak, a felsőt levágja), de nem tartom túl elegánsnak... A kód, amivel teszteltem (RB5-öt kimenetnek állítja és magas jelszintet ad rá):
A hozzászólás módosítva: Aug 15, 2013
Most akkor XC32, vagy assembler? Mert az XC32 ugye alapvetően C forrás fordítására van kitalálva... (persze, lehet bele assembly betétet rakni - de gcc szintaxissal, nem pedig MPASM szintaxissal).
Szia!
Hát az XC32-vel együtt települt az assembler is (XC32 -as). Az XC32 van kijelölve a project propertiesben, és nem okoz neki gondot lefordítani. Kipróbáltam, kevert C-ASM programot is. ezek is lefordulnak, linkelődnek és még futnak is.
Korábban volt itt belinkelve egy pdf vagy egy weboldal ahol le volt írva és rajzolva egy marék I/O láb trükközgetés. Pl 6 led vezérlése 3 lábon stb. Keresgéltem de nem találtam, megvan esetleg valakinek?
Hirtelen a Microchip Tips'n'Tricks ugrik be. Valamelyik rádiótechnika évkönyvben is volt a PIC cikkek között, de azt most nem tudom megnézni.
Tips ‘n Tricks 2009
A hozzászólás módosítva: Aug 16, 2013
Korábban egyszer már használtam HLVD modult a tápfeszültség megszűnésének indikálására, akkor ott az volt a cél hogy néhány regisztert elmentsek az EEPROM-ba mielőtt leáll a PIC. Azonban az akkor sajnos nem jött össze mert túl gyorsan fogyott el a táp, pontosabban túl hamar elérte azt az értéket amikor még a PIC ugyan ment, de az EEPROM-ot már nem tudta írni.
Végül akkor elfelejtődött a dolog, mert azt mondtam hogy majd teszek be a tápfesszel sorba egy diódát és a dióda előtti puffereletlen feszt vezetem majd rá akár egy sima INT lábra. Most ismét előkerült a probléma, elég fontos lenne hogy tápfesz-megszűnés előtt gyorsan el tudjak menteni 6-8 bájtot az EEPROM-ba hogy majd a következő bekapcsoláskor onnan folytassa a PIC a méréseket ahol abbahagyta. Azonban ez a diódázgatás most 6db alkatrészt (4 dióda, 1db ellenállás és 1db zener) kíván a panelra ami sajnos jelen projekt esetén nagyon nehezen passzírozható rá a panelra mert nagyon kevés a hely. Ráadásul még ha le is pakolgatnám őket, a jel PIC-hez való elhuzalozása megint komoly akadályokba ütközne a panel zsúfoltsága miatt. Nem mellesleg egyébként már nincs is szabad I/O láb hogy beköthessem valahová, úgyhogy valószínűleg az ICSP csati egyik lába lenne erre felhasználva. Ja és nem tetszik nekem ez hogy sorba kötök alkatrészeket a tápfesszel... (Azért kell egyébként a stabkocka előttre és utánra is soros dióda mert az áramkör kaphat betápot a JP3 csatin de a stabkocka után is.) Na szóval, a lényeg hogy nagyon jó lenne ezt megoldani egyszerűbben és elegánsabban. Elméletileg zéró külső alkatrész kell a HLVD modul használatához, csak mondom, nálam túl hamar leesett a tápfesz. Arra gondoltam most, hogy az működhetne szerintetek, ha egyszerűen csak a PIC táplábával kötnék sorba egy diódát? Mert akkor a dióda előtt leeshetne nyugodtan a tápfesz gyorsan is (pl az LCD háttérvilágítása miatt), a PIC-é viszont csak lassan fog. Persze csak ha nincsenek LED-ek vagy más relatíve nagy áramot felvevő elemek, de ezen áramkör esetén ilyesmiről nincs szó. Így akkor csak egyetlen plusz dióda kellene, I/O láb pedig nem is. Na, jól kitaláltam én ezt mire leírtam nektek. Na mindegy, most már elküldöm ha már ennyit körmöltem.
Szerintem mérd meg, hogy az EEPROM írás mennyi idő, és mennyi tápfelvétellel jár. Ebből kiszámolható, hogy mekkora kondi kell oda, hogy ne essen le a tápfesz. Ha irreális méretű kondi (mondjuk 1000µF-ok) jön ki, akkor abból tudhatod, hogy nincs realitása
Idézet: Nem árt az MCLR láb felhúzását is ide kötni! „Arra gondoltam most, hogy az működhetne szerintetek, ha egyszerűen csak a PIC táplábával kötnék sorba egy diódát?”
Az MCLR mijét? Az MCLR láb egy 100Ohm-os soros ellenállással van az ICSP csatira kötve aztán slussz-passz.
Szerencsére nem kell megmérni mert az adatlap írja. Elő is kotorásztam de most nem találom benne hogy hol írná azt hogy az EEPROM írásához mennyi a legalacsonyabb tápfesz. Anno emlékszem hogy valami kb VDD-1V körüli értéket írt, de most a PIC18F25K80 azt írja hogy 1,8V a minimum ahol még ír és olvas az EEPROM. Lehet hogy régebben mikor ezzel szórakoztam akkor valami más típusú PIC-et használtam?! Vagy csak rosszul emlékszem.
Na mindegy, a lényeg hogy ez most azt írja hogy 1,8V (VDRV min=1,8V, 566. oldal, table 31-1). Egy bájt írása szintén az adatlap szerint (pár sorral lejjebb) 4ms. A tápfeszültség az áramkörben 5V, a PIC áramfelvétele 240nA, de legyünk nagyvonalúak és legyen mondjuk 5mA. A PIC mellé közvetlen egy 100µF-os elkó lesz téve és sorba egy BAT46 dióda. A HLVD modult úgy állítom be hogy negyedére ossza a tápfeszt, azaz 4,096V-nál generáljon megszakítást. Összedobtam gyorsan Tinában és leszimuláltam, ha minden igaz kb 70ms alatt esik le a kb 4V a kb 1,8V-ra. Tehát 17 bájtot tudok elmenteni ami kb kétszerese annak amennyire szükség van. Szuper!
Én mindig berakok oda egy ~15kohmot a Vcc-re.
De nekem nem kell mert a reset funkciót nem használom, szoftverből le is van tiltva.
Az úgy korrekt, úgy nem fog kívülről semmilyen zajt összeszedni.
Sziasztok.
Én még annyit hozzátennék, hogy ha tápfeszültségre húzzuk az MCLR lábat viszonylag kis ellenállással (4,7k) tegyük (ne hagyatkozzunk csak a belsőre) és a 100nF kondenzátort se felejtsük el. Amúgy én ki szoktam kapcsolni és testre kötni. Annál jobb zavarvédelem nincs. |
Bejelentkezés
Hirdetés |