Fórum témák

» Több friss téma
Fórum » PIC kezdőknek
 
Témaindító: Placi84, idő: Okt 3, 2005
Témakörök:
- A PIC ÖSSZES Vdd és Vss (AVdd és AVss) (tápfeszültség) lábát be kell kötni!
- A táplábak mellé a lehető legközelebb 100nF-os KERÁMIA kondenzátorokat kell elhelyezni.
- Az MCLR lábat, 10kohm-mal fel kell húzni a Vdd tápfeszültségre.
- Külső kvarc használatakor 4MHz-ig XT, a fölött pedig HS konfigurációt kell beállítani.
- Stabilizált tápegységet kell használni, a kapcsoló üzemű "telefon töltő" adapterek okozhatnak hibákat.
- Programozáshoz, használj lehetőleg PICKIT2 vagy 3 programozót. Kerülendő a JDM (soros porti) programozó.
- A PIC adatlapja (PDF), tartalmazza a lábak kiosztását és a PIC minden paraméterét. Az adatlap ingyen letölthető!
- Egyes PIC típusoknál az RA4 nyitott nyelőelektródás (Csak lefelé húz L szintre, H szintet nem ad ki!)
- Ha a PGM lábat digitális ki-/bemenetnek használod, az alacsony feszültségű programozási lehetőséget le kell tiltani.
Lapozás: OK   767 / 1203
(#) pajti2 válasza lastewer hozzászólására (») Márc 30, 2016 /
 
Idézet:
„még indítható marad az autó”


Ezt hogyan kellene érteni? Az autóra amikor ráindítasz, olyan brutál áramot leszív hirtelen, hogy ihaj. Azt csak nagyon modern akkuknál lehet megállapítani pusztán a feszültség alapján, hogy vélhetően van-e benne akkora töltés, ami elég lesz. Egy normál savas akkunál, ami mondjuk pár éves, ember legyen a talpán bármit is megjósolni az üresjárási feszültsége alapján. És akkor még nem is filoztunk azon, hogy még meleg volt-e a motor, vagy már hideg, mert elég rendesen eltérő áram kell neki mondjuk a téli hideg éjszakákon. Pörgeted némelyik kocsinál az indító motort 10 másodpercig is, míg eszi a 100 ampert. És ott van az a kérdés is, milyen műszaki állapotban vannak azok az indító elektronikák / mechanikák, mert tudnak azok is kopottak lenni, stb. Mindent összevetve, ha azon filozol, amire gondoltam, lehet, hogy egy kicsit nagy fába vágtad a fejszédet.
(#) don_peter válasza pajti2 hozzászólására (») Márc 30, 2016 /
 
Ja persze, azt hittem képben vagy a projektek, 29F800-at használtam elsőnek most 29LV640 a kiszemelt memória. Tsop48-as tokozásban.
(#) apromax válasza pajti2 hozzászólására (») Márc 30, 2016 /
 
Igen, tudom hogy C ben nincs bites változó. A példa kódot is értem, köszönöm is.
Ugyanakkor még mindig nem világos hogy például az alábbi kódban hogyan kezelem az IF ágat. A zavart az okozza, hogy szimulátorban én teljesen vad értéket láttam visszatérési értékként.

char fv_1 (void)
{
...
...
return AAAbits.yyyy;
}


int fv_2 (void)
{
fv_1 ();
if (fv_1) {......}
}
(#) pajti2 válasza don_peter hozzászólására (») Márc 30, 2016 /
 
Öööö ez nor flash. Ha nor flash kell, miért nem elég egy spi buszos? Ha lassú magot használnál, amúgy sem lesz olyan nagyon gyors az adat kezelése. Bőven lassabb lesz az usb-d. Pláne ahogy ezt a típust elnézem, még olcsónak sem mondanám. Esetleg ezt a listát ha megnézed: mc flash 64 mbit még 8 lábú is akad közte, és bár nem nor flash, de azért sokat téveszteni ezekre sem jellemző, ha nem hulladék irstabil tápot adsz neki.
(#) pajti2 válasza apromax hozzászólására (») Márc 30, 2016 /
 
Idézet:
„fv_1 ();
if (fv_1) {......}”


Az első sorban ráhívtál a függvényre, és sehova nem raktad el a visszatérési értéket.

A második sorban nem a függvényre hívtál rá, hanem a függvény címét adtad át logikai ellenőrzésre. Esetleg próbáld így: if (fv_1()) {......}
(#) ktamas66 válasza don_peter hozzászólására (») Márc 30, 2016 /
 
Példa PIC24-re, persze párhuzamos port van PIC18-as sorozatban is.
(#) don_peter válasza pajti2 hozzászólására (») Márc 31, 2016 /
 
Ez nem ilyen egyszerű.
A fix címlábak kellenek mert a SEGA Motorola 68K-s MCU közvetlen olvassa a memóriából az adatot.
Csak a 16Bit-es memória jó aminek fix a címbusza és fix az adatbusza.
A hozzászólás módosítva: Márc 31, 2016
(#) Hp41C válasza don_peter hozzászólására (») Márc 31, 2016 /
 
Idézet:
„Az általad említett IC-éket nem ismerem és nem is tudom jelenleg, hogy miképpen lehetne a hasznomra.”

Egy gyorstalpaló TTL - CMOS család áttekintés rádférne...
Egyébként 8 egységből álló D tároló sor, 3 állapotú kimenettel.
Alkalmazási példa: A kontroller 8 lábán byte -osan adod ki a címet. A címet alkotó 3 byte -ot három darab ilyen IC -be írod be. Sőt egymás ulán is kötheted őket: az első bemenete a kontrollerre, a hásodik bemenete az első kimenetére, a harmadik bemenete a második kimenetére kapcsolódik. Egy közös beírő órajellel vezérli őket a kontroller. A harmadikhoz tartozó adatot kiteszed egy 8 bites portra, kiadsz egy órajelet (felfutó élre tárolnak), kiteszed a másodikhoz tartozó adatot, kiadsz egy órajelet, kiteszed az elsőhöz tartozó adatot, kiadsz egy órajelet. A harmadik órajel kiadása után mindhárom IC kimenetén a kívánt adat jelenik meg. A művelet alatt a kimenetüket engedélyezni kell, de ez nem számít, mivel a memória csak az írás vagy olvasás vezérlőjel aktív állaota alatt követeli meg a cím állandóságát.
A hozzászólás módosítva: Márc 31, 2016
(#) hg0npj válasza pajti2 hozzászólására (») Márc 31, 2016 /
 
Szia pajti2!

Köszi a választ. Megnézem.
(#) hg0npj válasza icserny hozzászólására (») Márc 31, 2016 /
 
Szia icserny!

Köszi a választ, megnézem az általad javasoltakat.
(#) don_peter válasza Hp41C hozzászólására (») Márc 31, 2016 /
 
Ugyan így csinálom, a shift regiszterrel a címzést, csak annyival másabb, hogy nem egyszerre adom ki a 8bit-et, hanem csak 3 lábon, illetve a 2vezérlőbittel tudom állítani a 3 állapotot.
Sajnos nincs elég láb a 8bit egyszerre való vezérléséhez.
De most már értem mire való.
Szerinted ez mennyivel lenne gyorsabb mint a shift regiszteres megoldás?
Persze azon kívül, hogy a shift regiszternél bitenként kell kiadnom az adatot itt meg byte-onként.
Bár gondolom, ha van elég láb a PIC-en akkor ezekre úgy sem lenne szükség, és a közvetlen vezérlésnél meg nincs gyorsabb.
Alternatívának viszont jó lehet.
Köszi.
(#) pajti2 válasza don_peter hozzászólására (») Márc 31, 2016 /
 
A jelek szerint csak azért nézek furcsán a cím shift regiszteres tárolására, mert tényleg gőzöm sincs, hogyan épülne fel az egész, de szerintem a motorola 68k-k jellemzően párhuzamosan címeznek mindent, nincsen rajtuk támogatás shift regiszter vezérlésére. Ahhoz egy külön vezérlő kell nekik.
(#) sonajkniz válasza lastewer hozzászólására (») Márc 31, 2016 /
 
Szia!
Kb 2-5 percenként kapcsoltasd be egy külön relével a reflektorokat. Kb 0,2 másodperc múlva mérj bele az akufeszbe. A mérés után a refit már ki is kapcsohatod. Az izzók a felkapcsolás pillanatában megrántják annyira az akkut, hogy tudj mérni. Persze ez még csak viszonyítási alap. Sokat kell kisérletezni, hogy megtudd, hol a határérték. Ráadásul hosszútávon a lámpák ezt nem tolerálják.
(#) don_peter válasza pajti2 hozzászólására (») Márc 31, 2016 /
 
Húúúú, akkor hamar átfutom még egyszer.
PIC-el töltöm fel a memóriát adattal:
PIC cím küldése -> 3db shifreg. -> memória
PC Adat küldés -> PIC adat fogadása -> PIC adat küldés (16bit) -> memória
Ez a PIC-es oldal, de olyankor mikor feltöltöm az adatot, akkor 68K nincs jelen mert ez egy kártya, ha jelen lenne beleoszol a kommunikációba.
Csatolok egy képet.

Amikor 68K jelen van akkor PIC mindent lekapcsol, így nem szól közbe sem a címbuszba sem az adatbuszba.
De a memóriát 68K csak akkor tudja olvasni, ha az őáltala gyárilag meghatározott módon történik az adatcsere.
Tehát fix cím és fix adatbuszok.
(#) pajti2 válasza don_peter hozzászólására (») Márc 31, 2016 /
 
Oké, így már világosabb.

A pic < - > memória kommunikációra én is Hp41C véleményét osztom. Ahogyan vezérled a shitft regisztereket is, meg a 16 bitnyi memóriát is, az az egyik lehetőség, de annak a hátránya, hogy találnod kell egy nagyon sok lábas pic-et, amihez kész usb projected is van, és az lesz a valóban nehéz része. Kész usb projectet egyébként nagyon sok pichez találsz, de hogy akad-e közöttük, amelyiknek elég sok lába van, azt nem tudom.

_Ha_ nem találsz olyat, akkor a latch regiszter dióhéjban annyi, hogy halom sok külső áramkörrel egészíted ki a pic-ed lábszámait, és összesen 10 pic lábról egy javarészt akárhány tagnyi párhuzamos buszt vezérelni tudsz. +10 lába ugyanis bármelyik kiforrott usb-s pic-nek lesz. Pld pic18f4550 usb projectekkel tele az egész net, akár ennyire szájbarágós projectekkel. Nagyon mellé lőni vele simán csak képtelenség.

Hasonló _ha_ esetre lehetőség, hogy ha túl soknak találod a kezelendő vezetékszámot, nem egyszerű logikai áramköröket használsz fel, hanem pic-eket fürtözöl mondjuk i2c buszon. Úgy soros buszra van minden felfűzve, de az nem éppen olcsó (minden tag egy külön pic), mindegyiket külön programozni is kell, és az i2c egy ocsmány dolog szokott lenni. Jobb, ha csak 1 eszközt kell programozni, és minden más buta kis logikai kiszolgáló.
(#) sonajkniz hozzászólása Márc 31, 2016 /
 
Sziasztok!

Tudna valaki segíteni?
MPlab X ide v3.20-ast használok. Hol lehet beállítani, hogy programmódosításnál hagyja békén az eeprom memóriát? Nem szeretnék több mint 100 adatot újra beírni.
(#) don_peter válasza pajti2 hozzászólására (») Márc 31, 2016 /
 
Na igen, pont ezektől tartok.
Ezért kértem a segítségeteket, hogy jó PIC-et válasszak.
USB-vel még nem foglalkoztam eddig, csak egyszer akkor is csak a bootloader-t próbáltam és azt is csak 18F4550-en.
Szóval nagyon jól meg kell vizsgálnom mindent, nehogy na fába vágjam a fejszémet.
(#) Hp41C válasza don_peter hozzászólására (») Márc 31, 2016 /
 
PIC32MZ -ben az "External Memory via EBI" memóriua retületem írhatod / olvashatod a külső áramkört. A 100 és 124 lábúakon 20, a 144 lábúakon 24 címbitet használhatsz. Ha jó látom, fel van készítve a NOR-FLASH -ra. Minimum PICKit3 kell a feljesztéséhez. Sajno s az Errata elég hosszú...

Ha külső tárolóval oldod meg a címzést elég lehet a 18F4xK50 és 4 db 74HC574. Páronként vezéreld: Cím 23..16 és Cím 15..8 tárolójának beírását egy port lábbal is megvalósíthatod. A felfutó él a magasabb helyiértékű, a lefutó él az alacsonyabb helyiértékű 8 bitet tárolja - mondjuk a D port vezetékeiről. Ugyanígy állíthatod elő a 16 bites adatvanalat is a memória számára, szintén a D portot használva. Hasonlóan lehetne beolvasni is az adatot, két byte-ot multiplexerrel a PORTD -n keresztül. Kellene még 8 bit cím (PORTB) és néhány vezérlő jel (PORTA). A kommunikációra megmarada a PORTC (usb, uart, led -ek).

Ha port kivezetésekkel közvetlenül címzed a memóriát, a 18F86J94 .. 18F97J99 lehet a megoldás. Jó sok lábuk van és USB -vel renelkeznek.

Az utóbbiakat lehet külső memóriával is járatni. A nagy kapacitás igény miatt lapokra kell osztani a teljes memóriáti és csak egy lapnyit illeszteni. A lapokat más portbittel vezérelni.

A 18F4x50 nem megoldás, 3.3V -ról nem megy a FS USB kommunikáció.
A hozzászólás módosítva: Márc 31, 2016
(#) pajti2 válasza don_peter hozzászólására (») Márc 31, 2016 /
 
Van még egy tényező, amit figyelmen kívül hagytál. A fejlesztési kényelem.

Nem csak az lesz kérdés, hogy biztosan találj példa projectet, hanem az is, hogy ha ilyen nagyon sok lábas cuccokat tucat szám forrasztasz fel, hányszor fogod megégetni valamelyik ujjadat a forrasztópákával

Abból a szempontból az lesz fontos, hogy tisztán lásd a reális költségvetést. Mindig mindenki úgy kezd neki, hogy összelejmolt cuccokból építkezni, de azt csak a nagyon gyakorlottak tudják tényleg megcsinálni. Ha kell belőle összesen pár darab, és csak funny cucc a haveroknak, nem emiatt mész csődbe akkor sem, ha nem a spártai vérmocsok-megerőszakolós stílusban raksz össze mindent, hanem rászánsz valamennyi pénzt fejlesztési kényelemre, és előregyártott boardokat használsz.
(#) wincso hozzászólása Márc 31, 2016 /
 
Sziasztok!
Van valakinek tapasztalata pic18f26k80 szériás pic ADC életre keltésével kapcsolatban?
Minden configurációt kipróbáltam , de még a lábat se tudom beállítani analóg bemenetre.
Köszönettel Wincso
beállitásaim
ADCON0 = 1
ADCON1 = 0
ADCON2 = %10100001
ANCON0 = 1
ANCON1 = 0
ADCON0.1 = 1
WaitUs 20
while ADCON0.1 = 1
wend
fenyero= ADRESL
Endif
(#) Zsora válasza don_peter hozzászólására (») Márc 31, 2016 /
 
A kártya Flash ROM-ját a működő SEGA konzolba dugva is tudod írni, úgy nem kell mindig ki-be rakosgatni, ha új játékot akarsz. Törlés és újraírás előtt csak resetbe húzod a 68000-est, (vagy a Halt lábát rántod le földre) akkor a kimenetei nagyimpedanciásra váltanak és szabadon hozzáférhetsz a PIC-kel az adat-, cím- és vezérlőbuszhoz. (Nem tudom hogy milyen vezetékek vannak kivezetve a kártya portra.) Persze azért jó tudni hogy más részegységek ilyenkor szintén inaktívvá válnak-e, és nem pofázhatnak bele a kommunikációba. Így a Flash helyett SRAM-ot is használhatsz, aminek írása gyorsabb, viszont az elveszti a tartalmát kikapcsoláskor. Az írás után csak lekapcsolódik a PIC a buszról, Reset láb felenged és már indulhat is a móka.
A hozzászólás módosítva: Márc 31, 2016
(#) usane válasza don_peter hozzászólására (») Márc 31, 2016 /
 
Azt csak oéldának mondtam, , de van nagyobb lábszámú 8 bites is.

Nézzük a másik oldalról.
Tegyük fel nem akarsz a CDC-hez drivert írni, így elég a HID által elérhető 64kB/s sebesség.
A leggyorsabb 8 bites MCU manapság 16 MIPS.
Ez azt jelenti, hogy egy bájt feldolgozására 250 utasítás ciklusod van. Nem tudom, mit kell csinálnia a programnak a byteokkal, de gyanítom még az ingyenes XC8 is tud olyan kódot fordítani amibe ez belefér.
Ergo elég kellene hogy legyen egy 8 bites is.
Megnéztem az árát meglepő módon nem drágábbak egy 4550-nél.
Még a legnagyobb is (P18F97J97) is kb ugyanannyiba kerül.

Mindezektől függetlenül játszhatsz a 16 vagy 32 bites procikkal is, C-ben nem észvesztő az eltérés (és árban sem). Rajtad áll.

Szerk.: A memóriakezelés részét nem tudom mennyire időigényes, de ha párhuzamosan kell küldeni gondolom még az is belefér.
A hozzászólás módosítva: Márc 31, 2016
(#) apromax válasza pajti2 hozzászólására (») Márc 31, 2016 /
 
Idézet:

„fv_1 ();
if (fv_1) {......}”


Ha így használom error: too few arguments to function hibajelzést kapok.

Csak emlékeztetőül a kérdés az alábbi volt:
Hogyan kell feldolgozni a visszatérési értékként kapott bitet?

char fv_1 (void)
{
...
...
return AAAbits.yyyy;
}


int fv_2 (void)
{
fv_1 ();
if (fv_1) {......}
}
(#) lastewer válasza sonajkniz hozzászólására (») Márc 31, 2016 /
 
Szia!

A feszt mértem már , az szinte mindig 12V , tehát az nem jó ebből a szempontból. Az Amper-t kell mérni.
(#) lastewer válasza pajti2 hozzászólására (») Márc 31, 2016 /
 
Szia!

Azon filózok , hogy ha bekapcsolom az autóban a rádiót , akkor az kapcsoljon le akkor , ha már éppen annyi energia van az akkumlátorba , hogy elindul az autó. ( Tehát ne tudjam addig hallgatni a rádiót álló helyzetben , hogy indításképtelen legyen a kocsi.)

Erre gondoltam mérni a feszt , de az mint kiderült , szinte mindig 12 , helyette Ampert kell mérni.
(#) bbalazs_ válasza lastewer hozzászólására (») Márc 31, 2016 /
 
Szerintem nem jo az ampermeres. Te az akku allapotat akarod tulajdonkeppen monitorozni, amit terhelovillaval tudnak egyedul normalis modon merni, inditasi aram szempontjabol.
Terheles hatasara az akku feszultsege leesik. A terheles az inditomotornal kb egy nagysagrenddel nagyobb, mintha az osszes lampat bekapcsolod, ergo sokkal nagyobbat esik az akkufesz. Szerintem a kerdesed nem oldhato meg hetkoznapi eszkozokkel.

pl. miutan az autod elsore elindult, orulsz, am ha hosszabban kell inditozni (kicsit csiposebb reggel), mar elegtelen lehet az akku. En nem eleznem ki ennyire az akkuhasznalatot, nagyon nem tesz jot neki.

A helyedben beepitenek egy kulon akkut, aztan otthon toltenem, ha kell.
(#) pajti2 válasza lastewer hozzászólására (») Márc 31, 2016 /
 
Mint én is, és @bbalazs_ is leírtuk, az igazi baj, hogy nincs mihez viszonyítani. Még ha hipermodern akkud is van, ami tökéletesen egyezik egy mikrovoltig kimérhető karakterisztikával, és ki tudod számolni, mennyi töltés van az akkuban, még azzal sem mész semmire, mert nem tudod biztosan meghatározni, mennyi töltésre lesz szükség az autó elindításához, ami mechanikai műszaki állapotoknak is alá van rendelve.
(#) pajti2 válasza apromax hozzászólására (») Márc 31, 2016 /
 
Esetleg ha az én válaszomat olvasnád el, és nem az általad feltett kérdést akarnád válaszként értelmezni - ami valóban nem válaszolja meg önmagát - akkor egy kicsit előrébb lennél
(#) don_peter válasza Hp41C hozzászólására (») Márc 31, 2016 /
 
Hp41C: 74HC574-ből miért kell 4?
Abból csak 3 kellene a 24Bit címzéshez, nem?
Amúgy egyre szimpatikusabb amit írsz és ez a 74HC574.

pajti2: Egy kis új begy pörkölés belefér, ha sok lába van
Van egy csomó PIC-em a fiókba és most ez a 8MBit-es a fiókból lett összeollózva, de ez a mostani 64MBit-es verzió, nem tudom fiókból össze pakolni.
Bele kell nyúlnom a zsebembe, de azért csak ésszel szeretném, mert mint mondottam profitot nem fog hajtani.. Inkább csak kőkemény hobbi és szórakozás gyanánt gondoltam és persze mert ezzel a 64MBit-es verzióval lefedném a teljes SEGA játék palettát, és a fejleszthető demó full méretét is.

Zsora: Igen, a reset lábbal tudom szabályozni, ha akarom, de felesleges.
Arra az időre még a játék fel lesz töltve kihúzzuk a konzolból.
És persze praktikusabb is kihúzva, mert a kazettát, csak könnyebb a PC-éhez vinni mint a PC-ét a SEGA géphez..
Kényelmesebb
Amúgy persze megoldható lenne, és ötletnek sem rossz, de úgy fest a megírt és tesztelt 8MBit-es változat jó és stabil működését és elveit nem vetném el.
És persze, nem kell mindig beírással kezdeni a mókát, ha flash memóriát használunk.
Érv és ellenérv mindegyiknél van, de talán most a flash előnyben van..

usane: Ne tegyük fel, mert ez biztos
Nem akarok CDC-hez drivert írni...
Gyakorlatilag a programnak semmi mást nem kell csinálnia, mint a megkapott byte-okat beírja a flash memóriába.
Ehhez ki kell adni mindent 1-es beírásnál a megfelelő szekvenciákat (sajnos ez minden ciklusnál ismételni kell) és ez után a címzést majd az adatot, persze a vezérlőlábak is.
Nem nagy feladat, de még is hosszú időt igényel.
(#) apromax válasza pajti2 hozzászólására (») Márc 31, 2016 /
 
Teljesen igazad van, a saját megoldásomat másoltam vissza tévedésből.
Ugyanakkor a javasolt megoldással

if (fv_1()) {......}

Írja ki az
error: too few arguments to function
hibaüzenetet. Szóval valami biztosan nem jó meg, nem tudom mi lehet.



És megnéztem szimulátorban valóban ha így használom
if (fv_1) {......}
az fv_1 címe kerül az If argumentumába.
Következő: »»   767 / 1203
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem