Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Igen, vagy egy másik PIC-el...
Üdv Mindenkinek!
Problémám akadt az SSPI-vel! Hátha volt már hasonló probléma. SD kártyát szeretném SPI módban használni, de addig el sem jutok, ugyanis már SSPI sem működik. Nem használok megszakítást pollozással működne a dolog. Az eszköz: pic16F877A - 20Mhz osc A konfig:
Lenne ugye az inicializálás:
A ciklus amiben egy SPI szubrutint hívok:
A szubrutin belsejében elakad, egyetlen egyszer sem jut át a SSPSTAT BF bitteszten, mindig 0 marad a bit, végtelen ciklusba kerül. A szerint már megvizsgáltam PIR1 SSPIF és a SSPCON WCOL biteket is minden 0. Az agyam már leolvadt, el sem tudom képzelni miért nem megy. Minden segítséget előre is köszönök: Péter
Az SPI nagyon egyszerű periféria, minden órajelre egy bitet ki és beléptet(léptető regiszter). Ha nincs aki válaszoljon, akkor 0-kat, vagy 1-eket fog beléptetni, a bemenet véletlen állapotától függően. Tehát 8 órajel után a BF-nek át kell billennie, akkor is, ha nincs rákötve eszköz a vonalra. Nézd meg, hogy a movwf SSPBUF kiadása után van-e órajel a kimeneten, esetleg azt, hogy megjelenik-e az adat(55h-kat küldve négyszögjel jelenik meg.)
Még annyit, hogy az RP1-el nem a bank 1-et választod ki, úgy meg pláne nem, ha törlöd! Lehet, hogy a BANKSEL-t kéne használni, még akkor is, ha két sort használ. A végén legfeljebb kiírtod... A hozzászólás módosítva: Máj 3, 2013
Köszönöm a választ. Kijavítom a regiszterbank választást, valószínű ez szerepelt hibásan a kódban. Soha nem vettem volna észre.
Sziasztok!
Lenne egy kérdésem. PIC18F2480-ban szeretném 16MHz belső kvarcot használni. Ugye belső 4 MHz-et lehet négyszerezni PLL segítségével, de sajnos nem tudtam összehozni. Az OSCCON-t beállítom 4MHz-re és a PLL-t is bekapcsolom, de csak 4MHz el megy így is. Van valami trükkje? mert így sajnos nem működött. Segítségeket előre is köszönöm. Üdv.: Tibi
Az OSCTUNE 6. bitje választja ki, hogy a belső oszci menjen a PLL-re.
köszi a választ.
Tudtam , mert azzal kapcsoltam be a PLL-t. És azt a bitet 1-be állítottam, és így sem működik sajnos
Esetleg mellekelhetned a progi elejet valamint a configbitek allapotat.
Kiolvasva a configbiteket ugyanazt kapod vissza, mint amit korabban beirtal?
Csak pontosítok, az adott mikrokontroller nem tartalmaz kvarcot, mindössze egy belső RC oszcillátort.
A hozzászólás módosítva: Máj 3, 2013
Idézet: Az adatlap szerint két feltétele van a PLL bekapcsolhatóságának a belső oszcillátor használata esetén:„Van valami trükkje?” - FOSC<3:0> = 1001 vagy 1000 - OSCCON<6:4> = 111 vagy 110 Bővebben: adatlap 3.6.4 PLL IN INTOSC MODES szekciója
Próbáld kikapcsolni a pic tápját, várj egy kicsit és kapcsold be. Nemtudom, ez is olyan-e, de voltak picek, amiknél a PLL tiltása/engedélyezésekor el kellett venni a tápját is, hogy az új beállítás aktív legyen.
Ez itt nem játszik. Szoftverből kell bekapcsolni a PLL-t, szigorúan az indulást követően.
Szia!
Csak nem sikerült 100%-osan az INTERRUPT-os kommunikáció. Az adás működik, de a vétellel van probléma. Megnéztem a fórumokat, de nem találom a hibát. Segíts nekem, hogy hol rontottam el vagy hol keressem a hibát. (Mellékelem a programot.) Köszönöm a segítségedet előre is! Üdv.:K
Szia!
Csak nem sikerült 100%-osan az INTERRUPT-os kommunikáció. Az adás működik, de a vétellel van probléma. Megnéztem a fórumokat, de nem találom a hibát. Segíts nekem, hogy hol rontottam el vagy hol keressem a hibát. (Mellékelem a programot.) Köszönöm a segítségedet előre is! Üdv.:K
Az a probléma, hogy nem érted az interruptok működését, felhasználási módját.
Az interrupt nem úgy működik, hogy egy regiszterben egy bit jelzi, hogy "most esemény van", neked meg ezt a bitet kell rendszeresen nézegetni (ezt ugyanis pont nem interruptos perifériakezelésnek hívják, hanem az a neve, hogy polling, és ez pont az ellentéte annak). Az interrupt működése úgy néz ki, hogy csinálsz egy függvényt, aminél egy külön fordítási jelzést használsz, amivel tudatod a fordítóval, hogy ez itt "az" interrupt függvény (a függvény elején, a függvény neve elé, az üres visszatérési értéket jelentő "void" mögé kell beszúrni az a szót, hogy "interrupt" ), majd az interruptok beállítása és engedélyezése után NEM csinálsz semmit a programban, hanem csak vársz, ill. foglalkozol más dolgokkal. És amikor jön az interrupt, akkor a program automatikusan az interrupt függvényben "terem" (ezt a hardver megcsinálja magától, nem kell, sőt nem is szabad ezt a függvényt hívogatni függvényként), majd amikor az véget ért, akkor ott folytatódik tovább a programod futása, ahol korábban járt. Ja, és az interrupt függvényben nem szabad semmi olyasmit csinálni, ami sokáig tart. Leginkább a minimálisan szükséges műveleteket elvégezzük, majd távozunk. A hozzászólás módosítva: Máj 8, 2013
Ha jól látom ez ccs c igaz?
Eze kell neked elvileg: Sorosport beállítása: Engedélyezned kell a soros porti megszakítást:
Ezután lehet lekezelni a megszakítást:
Azt hiszem ennyi. Ha nem ccs lenne, akkor elnézést.
Hali!
Eldobom az agyam, hogy nincs 12F-nél RLNCF utasítás. Csak RLF van, és az bizony a carry-n keresztül forgat, aminek biztos van értelme, csak én nem látom. Szóval ha forgatni akarok balra, akkor még a forgatás után a carry bit szerint be kell állítanom a 0. bitet. Vagy van ennél egyszerűbb megoldás? Szerk.: tudom, hogy a carry bit értéke közben berotálódik a 0. helyre, de nekem az nem kell.. Szerk2.: közben megtaláltam. Kétszer kell forgatni, először a WREG-be, aztán a regiszterbe. A hozzászólás módosítva: Máj 11, 2013
Üdv mindenkinek!
Egy kis segítséget kérnék. Real time orát szeretnék összehozni pic-el. A PIC programozás már megy (ASM), de Real T. -al még nem volt dolgom. SPI-vel kommunikál (MCP795W10-I/SL). Fogalmam sincs hogy kellene hozzákezdeni. Minden segítség jól jönne. Előre is köszönöm.
Szia!
Ha az asm megy, akkor először elolvasod az óra adatlapját és azt kell leprogramozni ! Mi a KONKRÉT kérdésed ?!
Csinált már valaki végig engedélyeztetési eljárást pic-es áramkörökre? Az fcc part 15 class A-ra gondolok (rádiofrekvenciás kisugárzás).
Egyáltalán vannak a pic-ek annyira "csendes"-ek, hogy 6-8 pic egy panelen (smd, röviden összekötött, meg minden) még mindig bele tudjon férni a legalacsonyabb sugárzási kategóriába? Vagy eleve kár miatta izzadni? Microchip oldalakon kotortam ilyesmiért, de egy árva szót sem találtam róla. Szerintem kiröhögnek, ha ilyet levélben megkérdezek tőlük
Sziasztok!
Az MPLAB X -hez letölthető GDD-sikerült már valakinek használni? A 8-as alatt még működött, de ezt sehogy se sikerül elindítani. Köszi kszabi
Köszönöm a válaszodat és utána néztem az interrupt-nak. Az alábbi módon csináltam egy interrupt-ot, de nem történt semmi.
Röviden annyit csinálna a megszakítás, hogy ha érkezik adat a soros porton keresztül, akkor a Flag = 1 lesz. De nem történik semmi, az adatot az UART-on keresztül elküldöm és nem jön létre az interrupt-olás. (Az interuptot a fentiekben csatolt programban a soros kommunikáció inicializálásánál engedélyezem) Mit csináltam rosszul? Lehet, hogy rossz sorrendben engedélyezem az interuptolást? Üdv.:K
Köszönöm a válaszodat, de nem CCS-t használok.
Engedélyezted a prioritásos megszakítást? Beállítottad, hogy a kérdéses periféria alacsony megszakításban okozzon megszakítást? Elolvastad az adatlapot a megszakításokról?
Köszönöm a kérdéseidet. A fentiekben leírtam, hogy a megszakítási beállítások a csatolt C file-omban vannak. Beállítási gondjaim voltak, mert jelenleg működik a megszakítás. De legalább a kérdéseid hatására újra átnéztem az interruptal kapcsolatos dolgokat. Üdv.:K
Sziasztok.
Segitséget kérnék. Tudtok olyan anyagot ahol a PIC-ek utasitászkészletét tárgyalják tipusokra bontva példaprogramokkal? Köszi
PICmicro Mid-Range MCU Family Reference Manual
PIC18C Family Reference Manual dsPIC30F/33F Programmer's Reference Manual PIC32MX Family Reference Manual Related MIPS® Documentation • MIPS M4K™ Software User’s Manual – MD00249-2B-M4K-SUM • MIPS® Instruction Set – MD00086-2B-MIPS32BIS-AFP • MIPS16e™ – MD00076-2B-MIPS1632-AFP • MIPS32® Privileged Resource Architecture – MD00090-2B-MIPS32PRA-AFP |
Bejelentkezés
Hirdetés |