Fórum témák
» Több friss téma |
sikerült átállítani a belső rezonátort 8mhz-re, de még mindig nem jó, és az adatlap szerint ez a maximális freki (16f690). hogyan szokták ezt csinálni?
![]()
most így adtam meg TRISIO = 0b00100000;
de semmi, ugyan az
Esetleg lehet gond az áramkörrel?
Ez erről az oldalról néztem: LINK Idézet: Például hardveres támogatással SPI módban.„ez a kód a felfutó élen a byteOUT változó i-edik bitjét küldi el. azonban nagyon nem működik a dolog... hogyan kéne ezt?” Szoftveres kezeléssel inkább assemblyben kellene (legalábbis ezt a részt). Egyébként a programrészletben, amit küldtél, nem látom, hogy valaki léptetné az i változót.
Nem tudom nálam működik igaz simulátorban nincs itthon 12f675-m, nem tudom, hogy te mivel fordítasz nekem ennyi változtatás kellet bele:
De ez XC8-l lett fordíttatva.
Én microC pro val csinálom! De valami nagyon nem jó lehet mikor
átírtam hogy GPI1 et vegye figyelembe mint input akkor furcsa mód a kapcsoló jól működött Fel és le kapcsolgatta a ledet. De nem értem hogy miért van ez. Lehet hogy mással kellene fordítanom a programot mert ez nem egészen azt csinálja amit kellene?
Esetleg a CONFIG biteket próbáld így elhelyezni:
hátha az intosc részen van a baj mert a GPIO5 az a clkin külső oszcillátornál.
Nem akarja az igazságot.
Esetleg megoldható, hogy a forrást lefordítod és a hex kódot visszaküldöd? Hátha azzal lenne a gond. Vagy az áramkörrel akkor minden rendben?
Nekem amint látod mind kettő működik a kapcsolás szerint +hex próbáld meg vele.
JÓ!! Átkapcsolja szépen csak a forrás biztos más mert nekem ugye 3 led van neked pedig csak 2. Az én forrásomat át tudod fordítani?
Mivel írod a programot, illetve mivel fordítod? A hozzászólás módosítva: Ápr 13, 2014
3 LED? Én 2 ledet olvastam de egyébként a felület MPLAB X IDE a fordító meg XC8.
Aham. Tudod egy vasúti sorompót akarok szimulálni.
Két vörös felváltva villog, vagy ugye a fehér villog.
Tessék így sorompó ként működik. Csatoltam a HEX file-t is meg a C file-t is.
Nagyon szépen köszönöm!!!!
Frankón működik!! Be kell szereznem a szükséges programokat, hogy megfelelően tudjak majd programozni! Mégegyszer köszönöm szépen!!!
Sziasztok,
Segítséget kérnék PIC témában.PT4115 led meghajtó dim lábát szeretném PIC-vel vezérelni. A pic 12F629 lábait össze lehet közvetlen kötni a PT4115 dim lábával?Kell-e valamiféle csatoló elem:pl ellenállás vagy tranzisztor. A kapcsolás alapja itt található:http://www.enide.net/webcms/?page=power-pic-rgb-irda Köszi a segítséget.
Üdv!
Igen közvetlenül összeköthető. Sima logikai bemenet.
Szia,
Köszömöm a válaszod.
Hello!
16F887 microchippel szeretnék vezérelni egy relét. A tápfeszültségekkel kapcsolatban lenne egy kérdésem. A microchip 5 V-ot a relé 12 V-ot igényel a működéshez. Egy darab 12 V os trafóval üzemeltethetem mind a kettőt egyszerre? A microchipphez a feszültséget természetesen egy feszültség regulátoron keresztül juttatnám ami a 12 V-ot 5 V ra alakítaná. A relé pedig kapná direktben a 12V-ot. Előre is kösz
Igen, lehet üzemeltetni, de a relét egy tranyón keresztül hajtsd meg.
Uraim, Piccolo projektből tanulva és felhasználva részeit megírtam az SPI memória ki és beolvasást.
Szépen működik is a dolog, de egy valami nem hagy nyugodni ez pedig az union16-os típus definíció. Tudom hogy ki lehet majd váltani a ledefiniált adatstruktúrát, nem is azzal van bajom hanem azzal, hogy nem értem a működését. Mutatom: Típusdefiníció:
Ez eddig rendben is van. Aztán jön a függvény:
A meghívás pedig így:
A BLKSIZE tartama 32 tehát elvileg 32bájtonként lépked előre és olvassa ki a következő 32bájtot a memóriából. 2 dolog zavar össze. 1. amikor növeljük ReadAddr.word BLKSIZE-vel akkor az adatstruktúrában lévő változók egyforma értéket kapnak? Tehát így történik az érték átadás?: ReadAddr.hi_byte += BLKSIZE; ReadAddr.lo_byte += BLKSIZE; Léptetésnél miként változik az értékük? Mindig 32-vel nagyobb lesz a hi és a lo érték is? Vagy a ReadAddr.lo_byte hogy kap értéket? Ezt nem értem. 2. ha beolvastunk 32bájt adatot akkor a léptetésnél nem 33-tól kellene kezdenünk? Hiszen a 32-iket már beolvadtul előtte.. Az utolsó kérdésem az már csak, hogy tényleg tiszta legyen. A memória címzéseket számokba adjuk meg decimális számokba (vagy bájtokba), tehát, ha azt adom meg hogy 123-tól írjon be 10bájt-ot akkor ha ezt a részt ki akarom olvasni így kell megadnom: ReadAddr.hi_byte = 123; ReadAddr.lo_byte = 133; Kérlek rázzátok gatyába, hogy nekem is tiszta legyen...Köszi A hozzászólás módosítva: Ápr 15, 2014
A cím 16 bites, ami 2 bájtból áll össze. A hi_byte a 16 bites szó felső 8 (magasabb helyiértékű 8) bitje, a lo_byte az alacsonyabb helyiérték.
A hozzászólás módosítva: Ápr 15, 2014
Az union azt jelenti, hogy ugyanhhoz a memóriaterülettel többféle módon is hozzá lehet nyúlni. Szavanként, bájtonént, bitcsoportonként vagy bitenként.
Idézet: Nem. A lo_byte inkrementálódi, a hi_byte pedig csak akkor, ha átvitel van (tehát csak minden 256-ik esetben).„Tehát így történik az érték átadás?: ReadAddr.hi_byte += BLKSIZE; ReadAddr.lo_byte += BLKSIZE;” Idézet: Ha a sorszámozás 0-nál kezdődik, akkor a 32-es sorszámú már a 33-ik. „2. ha beolvastunk 32bájt adatot akkor a léptetésnél nem 33-tól kellene kezdenünk?”
Tehát a címzés 16bites (2x8) vagy is hexánban lehet a legjobban megadni.
Ha 1bájtot akarok kiolvasni a memória elejéről akkor így nézne ki? 0x00FF ez 16bites bináris ábrázolásban : 00000000 11111111 A 00-tól FF-ig történik a beolvasás? ReadAddr.word kezdő értéke 0x0000 lesz Tehát ha jól értem akkor a ReadAddr.hi_byte = 0x00; //magasabb helyi érték 15-8-ig ReadAddr.lo_byte = 0xFF; //alacsonyabb helyi érték 7-0-ig Lesz 1 bájt beolvasása esetén? A lo_byte értéke léptetésnél emelkedik 1bájt hexális értékkel és a hi_byte pedig csak akkor emelkedik 1bájt hexális értékkel, ha megtörtént az 1bájt beolvasása. Jól értelmezem? Ez icserny-nek is válasz. Illetve a sorszámozásnál benéztem a nullát így ez teljesen világossá vált. A hozzászólás módosítva: Ápr 15, 2014
Közben rájöttem, hogy teljesen rossza amit írtam és így továbbra sem értem miként történik a címezés.
A hozzászólás módosítva: Ápr 15, 2014
Pedig nem egészen rossz amit írtál.
A cím növekedése: 0x00FF, 0x0100, 0x0101 =255,256,257 stb.
Közben tovább agyaltam és rájöttem, hogy nekem nem kell megadnom mettől meddig akarok olvasni.
Nekem csak a kezdő címet kell megadjam (ahonnét kezdem az olvasást) ami 16bites, mind ezek után a for() ciklusban megadott ez esetben "BLKSIZE = 64" változó tartamáig fog kiolvasást végezni. Tehát nekem csak a kezdő címet kell megadjam és, hogy hány bájtot akarok olvasni.. Ennyi. A léptetés pedig annyi bájtonként történik amekkora szeletett egyszerre ki akarok olvasni. Puff neki. ![]() Jól mondom? Igazoljatok vissza nehogy rossz irányban kezdjek el haladni. Köszi.
Valószínűleg így van, de én a C-hez nem értek. Ezt döntse el más.
Sraco, lenne egy buta kerdesem.
25lc640-es memoria ic-t rendeltem, es eszembe jutott a bovites lehetseges modjai. Ezt vagy ezen ic-ket lehet ugy parhuzmba kotni, hogy a kapacitasuk osszeadodjon? Tehat ne keljen chip select lab, cimzessel lehetne elerni a kovekezo 64KB memoria teruletet.
Nem lehet. Egyszerűb, bölcsebb megoldás szerintem félretenni, és egy olyan alkalommal felhasználni, amikor elég.
As SPI-vel szemben az I2C memória használata előnyösebb lehet, ha nem látjuk a fejlesztés végét. A szoftver minimális módosításával, buszrendszerű hardverfelépítéssel a kontroller több memóriacsipet tud kezelni. SPI esetén minden egyes, a buszra kötött periféria egy külön (engedélyező) lábat igényel a kontroller erőforrásaiból. A hozzászólás módosítva: Ápr 15, 2014
Boven eleg a 64 csak erdekelt a dolog, ha netan logot terveznek a kesobiekben.
Akkor spi es chip select a megoldas. Egyelore az I2C meg nem megy bar gondolom nem sokkal komplikaltabb mint a soros. Mas: elmeletben egy 4*4-es gombsorral hogyan tudnek legegyszerubben szoveget kiirni egy lcd kijelzore? Illetve azt utana valtozoba eltarolni? |
Bejelentkezés
Hirdetés |