Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Sziasztok!
Valaki lenne olyan kedves és meg mondaná hogyan tudok 18F25K80 at programozni, mert a PK2 nem ismeri fel a PIC-et, álítolag van valami kiegészítő amivel tudja, próbáltam beilleszteni a könyvtárába de semmi változás továbbra sem ismeri fel? Köszönöm a segítségeteket. A hozzászólás módosítva: Dec 20, 2013
Nem beilleszteni kell, lecserélni a meglevővel. Van egy olyan hogy PK2DeviceFile.dat, azt kell erre lecserélni. Gondolom ezt letöltötted valahonnan.
PK2DeviceFile.dat <- ezzel a névvel? A verziónevet töröld ki a végéről. Ha nem megy próbálj egy másikat letölteni. Sajnos tesztelni nem tudom neked, PK3-am van.
Próbáld ezt.
Szia!
Igen így sikerült, csak az volt a lényeg, hogy az új dat file-t át kellet nevezni a régi dat file nevére, és lás csodát bent van a listába ez a pic is, igaz még pic-et nem csatlakoztattam, de majd meglesem. Még egyszer köszönöm!
Üdv. Ezt a függvényt szeretném átalakítani úgy , hogy pár nyomógombbal tudjam a függvényben levő hexadecimális értéket változtatni fel és le teszem azt 45 és 90 fok között és egy nyugtázó gombbal elmenteni az eeprom memóriában amit majd a következő indításkor a szenzor programja fog meghívni az eepromból.Mivel most csak azt tudtam megoldani hogy egy fix előre megadott értéken kapcsoltatok egy kimenetet. A progi 18f4550-en készülget. Előre is köszönöm a segítséget.
A hozzászólás módosítva: Dec 21, 2013
PIC18-nál a kimenetvezérléshez a LATA regisztert kellene használni a PORTA helyett.
Ez oké is , de még ha csak ennyi lenne
Hol akadtál el?
65 helyére egy változó. Csinálsz 3 bemeneti portot, és figyeled őket megszakítással, vagy szerintem a 4550 tud interrupt on change-t is, de ez nem biztos nem néztem meg. Bemenet 1 ->UP, Bemenet 2 -> DOWN, 3-as bemenet nem is szükséges, megcsinálhatod késleltetéssel is a nyugtázást. Nagyjából ennyi, finomítva kicsit hosszabb. szerk.: Na megnéztem, PortB-n tud inerrupt on change opciót. A hozzászólás módosítva: Dec 22, 2013
Pont a b portom van tele. Amúgy magát azt a függvényt nem tudom megoldani már próbáltam a példatárban levő pwm szabályzó programját felhasználni és átalakítani , nagyjából jó is lenne mert a kijelzőre is kiíratja az aktuális értéket csak a programjában nincs hol hivatkoznom a módosuló értékre . Amúgy az RD6 lenne a növelés az RD7 pedig az érték csökkentés gombja. Most úgy van hogy ha beteszem a növelő gombját if függvénnyel az oké működik, de ha még egyet beteszek a csökkentő függvénynek akkor túlcsordul a proci. Azzal próbálkoztam tegnap este , hogy figyelek egy gombot és ha lenyomom törli a kijelző tartalmát és belép egy almenübe és közben megállítom az összes többi funkciót amiben ugye bent a sok if függvény. Ha pedig ebben az almenüben beállítottam az értéket akkor elmenti az eepromba és adok egy reset parancsot neki. A kijelző törlésig el is jutottam, de az almenü létrehozásán agyalok most ami megint nagy tészta lesz (nekem). (És tudom sok felesleges dolog van a rajzomon de állandóan módosítgatom azért ilyen szétszórt.)
A hozzászólás módosítva: Dec 23, 2013
Üdvözletem mindenkinek és Boldog Karácsonyt
1 kérdésem lenne ha tud valaki segíteni megköszönném. Csatolom a File-t ami egy PIC24F256GA106 os procira készülő program. (Nem egyszerű és asm be van írva ) A gondom az , hogy az Analog Digital átalakító nem akar működni, elindulni. Most a progiban csak az AN5 ös csatornát konvertálná és főprogram résznél el is van indítva, a szimulátor szerint minden jól van beállítva de ha a csipbe beégetem minden működik de az A/D az nem. nem fut le és nem kér megszakítást sem. Ha tud valaki segíteni mi lehet a hiba még megköszönném, mert már vagy 2 hete ezzel görcsölök, és nm találom az okát miért nem működik az A/D. Illetve ha csinált már valaki folyamatos A/D átalakítást amikor a proci csinálja folyamatosan és a ADC1BUFx regiszterekbe rakja az eredményeket. Köszi előre is a segítséget.
A honlapomon találsz információt az ADC használatával kapcsolatban. A ConfigADC függvényeket nézegesd! Bár nálam C-ben van, ugyanazokat a regisztereket kell matatnod assemblyben neked is.
Gondosan meg kell nézni az adatlapot, mert különbség van a DMA-t tartalmazó és a DMA nélküli mikrovezérlő típusoknál. További különbségek vannak a 24F és 24H típuscsaládok között is, elvileg mindegyikre találsz mintapéldát.
Köszönöm szépen, hasznos honlapod van egyébként de már átnéztem egy párszor, amúgy egy két dolgot a honlapod szerint csináltam ( pl. inicializálás sorrendje ) de így sem akar máködni. De ha esetleg van pici időd belenézni a progimba, elég lenne az inicializálást megnézni, a progi közepe tájékától hátha hiba van benne és azért nem működik eggyáltalán az A/D. Én erre tippelek . Köszi
Idézet: Ha nem haragszol, ezt most kihagynám. Utoljára kb. 5 évvel ezelőtt foglalkoztam assemblyvel, túl sok munka volna most újrakezdeni.„De ha esetleg van pici időd belenézni a progimba” Utóirat: Egy dolog csak feltűnt, az assembly ismeretek felelevenítése nélkül is: nem látom az
beállítás megfelelőjét az inicializálás elején. A hozzászólás módosítva: Dec 24, 2013
Köszi semmi baj nem haragszom
Az A/D be van kapcsolva a következő sorok csinálják: ; A/D Engedelyezese !!!!!!! bset AD1CON1,#2 ;ASAM AD sample auto start enable bset AD1CON1,#13 ;ADSIDL AD modul idle modban nem mukodik bset AD1CON1,#15 ;ADON AD modul bekapcsolva Legalábbis PIC adatlap szerint a 15 bit az engedélyezés. Mplab szimulációjában az FSR regisztereknél látni hogy be van kapcsolva mikor futtatom. Köszi szépen a segítséget.
Én így csináltam az SD kártyás hangdigitalizálónál (PIC24FJ256GB108).
Biztos van benne ami kihagyható, nem optimalizáltam ki. Inicializálás:
Megszakítás:
Én arra céloztam, hogy konfigurálás előtt le kell tiltani az ADC-t (AD1CON1 ADON bitjébe 0), s majd a konfigurálás után lehet ismét engedélyezni (AD1CON1 ADON bitjébe 1).
Értem, de amúgy amit belinkeltem sorokat az programomban az A/D beállítások legutolsó sora, magyarul utoljára kapcsolom be az A/D-t Processzor Reset után meg az adatlap szerint az A/D tiltott ezért nem kapcsolom ki az inicializálás elején mert elvileg ki van kapcsolva. De most, hogy mondod megpróbálom azt is kikapcsolom az elején .
Köszi nézem és gondolom neked ez működik rendesen..
A CCP modul Capture módjánál nem tiszta egy dolog nekem: amikor egyezés van a CCPR1 és a TMR1 között, akkor a CCP1 lábat csak az egyezés idejére húzza magasba a kontroller, vagy pedig onnan kezdve magasan marad? Ha mondjuk a Timer1-et a chip órajelével hajtom előosztó nélkül, akkor csupán egy utasitásciklus idejére marad magasan a CCP1 láb?
Szia!
Egyezéskor bebillen a (PIR1<2>) bit, és ha a megszakítás engedélyezve van, akkor bekövetkezik, ha nem akkor bebillenve marad, programból kell visszaállítani.
Ha Compare módra gondoltál, akkor választható:
Idézet: „In Compare mode, the 16-bit CCPRx register value is constantly compared against either the TMR1 register pair value or the TMR3 register pair value. When a match occurs, the CCPx pin can have one of the following actions: • Driven high • Driven low • Toggle output (high-to-low or low-to-high) • Remains unchanged” Ha nem, akkor nem értem a kérdést. Nem írtad hogy milyen kontroller, ez 18F6xxx Vagyis olyan lehetőség nincs, hogy csak az egyezés idejére aktív... A hozzászólás módosítva: Dec 25, 2013
30F6012A, MPLAB C30
PowerLatchArray -t szeretném EEPROM-ba másolni. Az optimalizációt kikapcsolva tökéletesen működik, de opt.: 1. szinten bent ragad a for ciklusban, mindig teljesül az "if", nem sikerül az írás. Mit csinálok rosszul? (Nem a while -okban áll, hanem próbál törölni, írni, de nem sikerül)
Működött, csak jelenleg ez egy félbehagyott project része. Annyit még hozzátennék, hogy ezzel a beállítással (AD1CON1bits.SSRC = 2) Timer3 compare fogja az A/D átalakítást elindítani, így a mintavételi frekvenciát Timer3-al kell beállítani.
Fázishasításra PIC-el van valami bevált módszer? Ugye kell hozzá nullátmenet detektálás, majd meghatározott idő után egy triak vagy SSR irányába gyújtóimpulzus kiadása egy rövid időre. Én eddig ott tartok, hogy pl. INT0 vagy RBIF megszakítás bekövetkeztekor Timer indul, túlcsorduláskor egyesre húzom az egyik lábat, majd némi idő után vissza nullába. Ezt lehet pl. úgy, hogy pl. Timer1-et indítom, CCPR1H:CCPR1L regiszterekbe beírom, hogy mennyi idő után kellene a lábat egyesre állítani, CCP1IF megszakításkor pedig visszaváltom a lábat nullába. Persze a gyújtás nyílván nem tud így pontosan nullátmenetkor indulni, de ha pl. 4us késés van, akkor még mindig csak 4V-nál tart a színusz, ha jól számolom, az meg bőven belefér. Vagy van erre van valami jobb/bevált megoldás?
Szia!
Én úgy csináltam, hogy a komparátor okoz megszakítást, ekkor indítom a Timert. A komparátor osztóról kapja a szinkront egy trafóról(AC), de elvileg egy nagy ellenállás osztóról is működne a hálózatról közvetlenül is. Nem érzékeny a csúszásokra.
Én közvetlenül adtam neki soros 220k-220k-220k ellenállásról a szinkronjelet, direktben az RB1 lábra. Mivel a végső alkalmazásban mérni kell majd a kapott hullám középértékét is, és nem szempont a galvanikus leválasztás, ezért megy így direktben. De akkor kb. azt csináltad te is, amit én. Közben rájöttem, hogy más okozza a vibrálást nálam, mert ha fix gyújtással járatom, akkor szép állandó fénye van az izzónak. Csak bekötöttem egy potmétert, amit mérek AD-vel, és attól függően állítottam a gyújtást, de ezzel úgy tűnik, valami nem stimmel.
Az AD közben nem tiltod a megszakítást? Vagy esetleg nem a megszakításban indítod az AD-t?
Az AD a főprogramban van, lehet, hogy csak nem várok elég időt a konverzió végéig. Majd átnézem mégegyszer, de ez a rész nemis lényeges, csak a teszteléshez kellett, hogy ne kelljen mindig átírnom a gyújtáskésleltetés értékét. Fix késleltetéssel stabil az izzó fényereje, így a lényegi rész stimmel.
|
Bejelentkezés
Hirdetés |