Fórum témák
» Több friss téma |
Szia!
Az első kérdésedre a válasz nem. Egyszerre csak egy PGD és PGC lábat használhatsz amit a konfigurációs bitekben be kell állítani. Programozásban nagyon sok különbség van a PIC18-as szériájához képest. Tölts le egy adatlapot és nézzed meg az utasításkészletet. Nem bonyolult az egész csak meg kell szokni. Én most már a PIC24-eseket tanulom assemblyben és azt kell hogy mondjam nem bonyolultabb mint a PIC18 vagy PIC16 sőt szerintem sokkal jobb. Igaz hogy nagy szívás volt vele az elején mire rájöttem mit hogyan kell csinálni, de utánaolvastam kérdeztem és elindult az első program. Ha át akarsz állni mindenképp elölről kell kezdeni, tehát programokban is a LED villogtatástól nem pedig egyből egy atomreaktor irányítóközponntal. Ha pedig kérdéseid lesznek nyugodtan felteheted ide mert már többen foglalkoznak a PIC24-es szériájával és tudnak segíteni.
"egy 24-es sorozatú PIC bármelyik PGED és PGEC lábain programozható, ha három is van ezekből?"
Igen, bármelyikről (természetesen mindig az egymással párban levő lábakon) programozható. Debug-olni viszont csak a konfigurációs biteknél előzetesen kiválasztott bemeneten lehet. PIC24 vs. PIC18: Más a felépítése, más a programozói modellje, de nem egetverően bonyolult. Assemblyben kell szokni hogy több regiszter van, több megszakítási szint, inicializálni kell a veremtárat és bizonyos perifériák használatba vétele előtt előbb kivezetés(eke)t kell rendelni hozzá (nincs eleve megszabva, hogy hol van kivezetve). Tananyag a honlapomon: PIC-kwik projekt
Köszönöm a válaszaitokat!
Még annyi kérdésem lenne, hogy a bootloader a PIC18F4550-nél milyen hardveres kiépítést igényel? Vagyis az USB csatlakozó "self power only" szerinti bekötésével használható úgy a bootloader, hogy közben állandó tápfeszültséget kap a PIC egy stabilizátorról, vagy ez a bekötés csakis a kommunikációhoz elegendő, a bootloaderes programozáshoz az USB-től igényli a tápfeszültséget, illetve azt meg kell tudnia szakítani?
Nem kell megszakítani a tápfeszültséget. Egy lehetőséget kell biztosítani a bootloader -be való visszatérésre a program frissítésének elvégzésére.
A bootloaderes programozáshoz csak USB kommunikáció kell, a tápfeszültséget onnan adod, ahonnan tetszik. Külső táplálás esetén annyival bonyolódik a helyzet, hogy az USB kapcsolódást figyelni kell (USB-only táplálás esetén erre nekem nem volt szükségem, hiszen ha nincs USB kapcsolódás, akkor a mikrovezérlő sem kap tápot). A gyári FSUSB demókártya dokumentációjából ki lehet nézni, hogy mi kell ehhez.
icserny: A következő oldalon található leírásod alapján összeállítottam egy kapcsolást: Bővebben: Link
A 24LC515 helyett egy 24LC512-est használok, ez gondolom nem okozhatna problémát. Mindent a leírás szerint van, a linkelt rutinokat kigyűjtöttem és azokkal próbálkozom, de sajnos annak ellenére, hogy hibát nem hoz fel a fordító nem működik az i2c kommunikáció. C18 és PIC18F4550-es chipet használok, pont mint a leírásban. Debugból kiderül, hogy MCP24LC515_write() rutinba ragad a program. Csatoltam egy proteust, amiben lehet tesztelni, rápillantanál, hogy mi lehet a gond? Illetve aki vágja az i2c-t és tudna segíteni az is nézze meg. Eddig sajnos nem volt dolgom az i2c-vel, és ez csak egy tanuló program. Osztom külön a fájlokat is, hogy könnyebb legyen. Előre is köszönöm.
Nagy kérés lenne, de valaki rá tudna erre a kapcsolásra nézni, hogy a digitális részét tekintve működőképes, vagyis az SPI bekötés így megfelelő (késleltetések és SDI közösítés?, használható lassabb galvanikus izolátor?) és a PIC bekötött lábai is alkalmasok erre, azaz esetleg nem használható bizonyos láb, ha megy pl az SPI?
Ezer köszönet!
A két IC (515 vs. 512) címzésmódja különbözik, ezért pl. az alábbi függvényben a feltételes rész neked nem kell!
Ugyanígy vedd ki a többi függvényből is ezt a részt, ahol szerepel.
Kétféle címet kell beállítani írás előtt. Nálad a word cím átvitele kimaradt.
Írás: <I2C start> <slave cím és W> <WORD ADDR Low> <WORD ADDR High> <adat><adat><adat> ... <I2C Stop> Olvasás: <I2C start> <slave cím és W> <WORD ADDR Low> <WORD ADDR High> <I2C Restart><slave cím és R> <adat><ack>...<adat><nack> <I2C Stop>
Az a címzési két adat benne van a tömb elején, ezért 2bájt-tal nagyobb, legalább is ezt látom és a leírás is erre utal, illetve az elején annak a feltöltésével kezdünk, nyilván itt ez a nulla lesz az első cím.
icserny: kivettem, de ez nem oldotta meg a gondot. Továbbra sem lép ki a várakozó rutinból. Nem jön válasz. A hozzászólás módosítva: Nov 1, 2015
Közben tovább kísérleteztem és debugoltam az adatvonalat is.
Továbbra sincs eredmény, nem működik. Csatolok egy képet a debugról is. Ebben a rutinba ragad be, és forog végtelen. A hozzászólás módosítva: Nov 2, 2015
A kép alapján már a megszólításkor is NAK a válasz. Nincs felhúzva az I2C két vonala, nem kap tápfeszt az IC, vagy nincsenek lekötve földre az A0, A1, A2 címválasztó bemenetek?
A hozzászólás módosítva: Nov 2, 2015
Közben megjavult.
A Memória cím lábain kellett variálnom (föld-re kellett húzni mind) és rögtön működött. Köszi a segítséget. A lényege nem a memória volt, hanem az I2C kommunikáció működése. Egy DS1338-as naptár IC-ét akarok használni és ehhez kell az I2C. A hozzászólás módosítva: Nov 2, 2015
Uraim, most megpróbáltam átültetni a megoldást egy 18F46k22-re.
Ugyan az minden, de itt nem működik. A regisztereket átnéztem és átírtam, mivel ebben a PIC-ben 2 i2c van. Van ennek a PIC-nek egy olyan speciális állítása ami befolyásolja a működést? Átnéztem a regisztereket és a beállítások egyeznek a 18F4550-el, bár a 46K22-ben van olyan regiszter is ami az 4550-ben nincs. Mire kell odafigyelnem ami eddig nekem nem tűnt fel? Ahogyan elnézem a SSPxCON3 regiszter nem igen kell, mert csak a SSPxBUF felülírását és az interrupthoz, illetve a slave módhoz kell. Közben megnéztem a gyári könyvtárat is, és aszerint is teljesen rendben van a beállítás, még is az alábbi képet produkálja. PIC18F46K22 adatlap Amennyiben valaki már foglalkozott ezen pic i2c-s vonalon történő adatküldéssel, az segítsen nekem kicsit. Köszönöm. Az érdekes kódok:
És a rutinok:
A hozzászólás módosítva: Nov 2, 2015
A 18F46K22 -ben két MSSI van. Sajnos egyik sem azokat a lábakat használja, amit a 18F4550 -nél az MSSI.
Felhúzóellenállsa, címlábak, stb.
Mármint a regiszterekre gondoltam.
18F46K22 C3 és C4-en vannak a SCL és SDA lábak. Ezek megvannak.
Ha bemeno lab nem megy, akkor erdemes megnezni az ANSEL regiszterek erteket, mert alapbol mindegyik analog bemenetre van allitva, ezeket a progi elejen torolni kell, azon kivul arra is figyelni kell, ha assemblyben programozol, hogy az ANSEL-eknel a regiszterbankot a 0f-re allitsd, mert ezek mar kivul vannak a normal regiszterek tartomanyan.
A regiszterek szerintem rendben vannak, más lesz a gond, bár lehet valamit elnézek.
18F4550-en szépen fut már az I2C, de ugyan az a kód 18F46K22-őn már nem akar. Pedig a regiszterek át vannak írva és minden más az adatlap szerint egyezik. Legalább is én ezt látom ki belőlük. Mostanában darabosan megy csak a programozás, mint ha butulnék és nem fejlődnék. A hozzászólás módosítva: Nov 2, 2015
Biztos, hogy jó?
Idézet: „
Igen.
Az első dolga az i2c_init()-nek, hogy ezt rendbe vágja:
Nos megvan a hiba.
Már mindent 100szor átnéztem és kiderült, hogy a felhúzó ellenállás értéke volt kicsi. 4.7K-os ellenállással már egyből jó lett. Köszi a segítséget.
Mit értesz a kicsi alatt? 1.5k-tól 10k-ig működni szokott az IIC, de láttam már 1k-s rajzot is. Én általában 2k2-t szoktam használni, azzal eddig mindig ment minden PIC beleétve a 24 és DSpic-et is.
1K már nem tetszett neki.
18F4550-nél elég volt, de 18K46K22-nek kevés volt.
Üdv.
Van valahol a neten egy oldal ahol a 16F887 el megoldott pices kapcsolások vannak C, assembly nyelven. Az elektronikához kapcsolási rajzok is voltak, a programok levannak vezetve magyarázattal együtt. Nem találom sehol sem. Esetleg valaki tud rá linket? Eleve annak idején itt ajánlotta nekem valaki azt az oldalt 2x is Előre is kösz!
Esetleg ez volt Bővebben: Link ?!
Köszönöm! igen ez volt
Sziasztok
Kezdő vagyok a PIC-ezésben ezért szeretném a segítségeteket kérni. Van nekem egy panelom kapcsolási rajz mellékelve, ezt szeretném programozni. Olyat szeretnék vele csinálni, hogy kapcsolókat figyelne és különböző logikai műveletek és késleltetések után a kimeneteken lévő reléket kapcsolná. Plusz a kijelzőn különböző feliratok jelennének meg a kapcsoló vagy nyomógomb megnyomásakor. Ha lehet még azt is szeretném, hogy üzemórát számolna amit ha nincs táp alatt a PIC akkor is eltárol és aztán onnan folytatja a számolást. Ha valakinek van ötlete és kedve kérem segítsetek. Köszi előre is.
Szia!
Mennyire vagy kezdő? Milyen nyelven szeretnéd programozni?
Nagyon egy kis basic ismeretem van de nem sok úgyhogy szerintem mindegy a nyelv.
Én assemblyben tudok segíteni, de egy totál kezdő PIC-esnek ez nagyon nagy falat.
|
Bejelentkezés
Hirdetés |