Fórum témák
» Több friss téma |
Mint tudjuk a SPI eszkozoknek van 4 uzemmodja. Ezek a adatvonal mintavetelezesben ternek el, valmint az adasnal az adat a CLK melyik elenel ervenyes. A melleklet a 16F690 SPI modul mukodesi modjait szemlelteti.
A mukodesi modok definicioi egy CCS C mintapeldabol:
Remelem ertheto.
Kedves Vilmos
![]() Pontosan erre volt szükségem , a kiragadott részlet is az említett Picre lett megírva. Köszönöm szépen.
Sziasztok, mennyire vagytok járatosak az MPLABX assemblerében?
Két dolog volna: Láttam egy ilyen megoldást CONFIG-ra:
Szerintetek elfogadja, vagy inkább maradjak a bevállt "__config _HS_OSC & _WDT_OFF & _LVP_OFF..." formátumnál? A másik:
Tudnék egyszerűen csak a "LED1" kifejezéssel hivatkozni a PORTB,1-re? Idézet: „Szerintetek elfogadja, vagy inkább maradjak a bevállt "__config _HS_OSC & _WDT_OFF & _LVP_OFF..." formátumnál?” Miért cserélnéd le az olvasható formát egy kevésbé olvashatóra? Egyébként pontosan ugyanazt csinálja mindkettő, mert a header fájlban a _HS_OSC, _WDT_OFF mind egy-egy konstansként van definiálva, és amikor az & jelekkel összeállítja a fordító, akkor az említett konstans formát kapja. Idézet: „Tudnék egyszerűen csak a "LED1" kifejezéssel hivatkozni a PORTB,1-re?” Szerintem így kellene (nem próbáltam ki, csak így próbálnám):
Így nem jó?
Szerintem amit te akarsz, az már felesleges bonyolítás. Idézet: „Sziasztok, mennyire vagytok járatosak az MPLABX assemblerében?” Ezeknek semmi koze sincsen az MPLABX-hez, ez az MPASM-tol (Assembly fordito) fugg... __config-nal (es masnal se) hasznalj beegetett szamokat ha lehet. Nehez atlatni es igy a problema okozojat megtalalni is nehezebb, nem beszelve az esetleges portolasi problemakrol. Masik: Tudnal #define LED1 PORTB,1 -et is irni, de mint emlitettem nem erdemes 'drotozni' a programodat. Tulajdonkepp minel magasabb az absztrakcio annal konnyebb kesobb a kodot megerteni es modositani. Ha ugy konyebb neked akkor lehet igy is csinalni:
vagy:
Amelyik szimpatikusabb... Lenyeg, hogy kesobb ha atteszed a LED-eket egy masik portra akkor egyszeruan csak egyetlen helyen megvaltoztatod a definiciot es minden mukodik ugy ahogy eddig (mar feltetelezve a port inicializalas stb is megfeleloen van modositva)
Lenne egy kérdésem az A/D-átalakítóval kapcsolatban. A szoftveres részét értem, de a hardverben nem vagyok biztos egy dologban. A PicKit2-höz kapott demoboardon van egy 10k-s potméter, és úgy van bekötve, hogy a középső láb nem közvetlenül megy a PIC A/D-lábára, hanem előbb van egy párhuzamos kondenzátor a föld felé, és egy 1k-s ellenállás sorosan a PIC felé. Jól gondolom, hogy zajszűrés miatt van? Amikor forgatom a potmétert, akkor ugrálna nagyon a mért érték? A gyakorlatban kell szűrés, vagy ráköthetem simán a potmétert a PIC-re? (Azért kérdezem, mert elég kevés helyem van.)
Csak kíváncsi vagyok, hogy mennyire rugalmas az MPLAB... egyébként egy oldalon találkoztam ezzel a formával, csak nem volt feltüntetve, hogy milyen fejlesztőkörnyezetet használtak.
Potyo, trudnai: köszönöm a válaszokat!
Igen eleg fontos az AD bemenojel szurese. Eleg rossz gyakorlat, hogy kondi nelkul, nagy belso ellenallasu forrast akarnak merni az AD-vel. Ezen segit a kapacitas, mert mintavetelezeskor a kondibol tolti fel a mintavetelezo kondit. Amugy egy 1206 SMD nem nagy helyet foglal el, es a panel also oldalara felforraszthato kozvetlen az IC labahoz.
Idézet: A soros ellenállásnak védelmi funkciója is van, mert nagyon kellemetlen volna ha a szélső állásig le- vagy feltekert potenciométer mellet kapcsolná a kedves user kimenetnek az RA0 lábat (gondolom, oda csatlakozik a potméter). „van egy párhuzamos kondenzátor a föld felé, és egy 1k-s ellenállás sorosan a PIC felé. Jól gondolom, hogy zajszűrés miatt van?”
Sziasztok.
Most ismerkedem a soros kommunikációval. Magával az adatcserével nincs is problémám minden egész jól megy. Viszont nem tudom, hogy lehetne megoldani, hogy a kommunikáció kezdetét a PIC megszakításként kezelje. A konkrét problémám az hogy mondjuk küldök a PIC-nek ASCII-ban egy 1-es jelet és ekkor egy 3LED-es futófény indul.Na de nemigazán tudom kikapcsolni. Ehhez kéne egy megszakítás, hogy az RX fogadja az adatokat és az egyik változóba beírja azt. Valaki tud forráskódrészletet ilyesféle megszakításhoz?
Szia!
A megoldás: Megszakításosan kell kezelni az UART -ot. A megszakítás a hibaellenőrzés, lekezelés után a jó vett karaktereket egy bufferbe helyezze el. Az adás is így történhet. Az adási megszakítás kiszolálója a soron következő karaktert küldi el az adó bufferból, ha van még, egyébként eltiltja az adási megszakítást. A program a vételi bufferből olvas ki karaktereket, táviratokat, feldolgozza és elkészíti a választ, az adási bufferbe külsi az elküldendő karaktereket - és endegélyezi az adási megszakítást, ha van küldeni való. Ebben a hozzászólásban levő linken szereplő programban benne van a megoldás 16F628 -ra...
Nézegettem a linken lévő hozzászólásokat.Nem értettem miért nem találom a "nekem valót". Hát rájöttem...
Elfelejtettem írni hogy CCS fordítót használok ![]() ![]() Mindenesetre köszönöm a választ. Az ASM forrás egy kollégámnak fog jól jönni.
Szerintem a problémádat nem a CCS -beli buffer kezelés okozza... A többit (mikor mit kell tenni) fel lehet használni C -ben is. A fordítóval szállított uart kezelés megvárja, amíg megjön a karakter / elküldi az uart a karaktert, ha egy csomót egyszerre kell fogadni / küldeni.
A CCS C eseten a megoldas a Te gepeden talalhato. CCS telepitokonyvtara tartalmaz sok mintapeldat es kozte az Ex_sisr.c peldat. Soros vonal IT- bufferos kezeleset mutatja be. Ajanlatos vegignezni meg a "drivers" alkonyvtarat is mert sok HW eszkozhoz talalsz mintapeldat.
Az Ex_sisr.c tényleg egész jó példa. Már csak át kell értelmezni az én programomba. Nagyon szépen köszönöm!
Egy16f628 ról le akartam olvasi az adatokat . olvasáskor 0lák jelentek meg tisztán
EEPROM Data. 00 01 77 05 B7 04 5F 40 FF FF stb Miez?
A kodvedelem jotekony hatasa, hogy az olvasasnal csak 0 a kiolvasott ertek.
gondoltam . azt kérdezém, azt nem lehet kivédei valahogy?
Idézet: „azt nem lehet kivédei valahogy?” Semmi értelme nem volna, ha ki lehetne!
Dehogynem, Nekiallsz es megirod a programot.
![]()
Ez lehet, hogy egy kicsit furcsa kérdés lesz.De egy PIC -nél ki lehet kapcsolni egy adott lábat, úgy hogy sem alacsony jelszint sem pedig pozitív jelszint ne jelenjen meg rajta. Tehát lebegtetni , mint egy 3 állapotú kapu kimenetét?
A választ köszönöm.
Persze...ilyenkor nevezzük bemenetnek
![]() Steve
Bemenetnek konfiguralva kivulrol magas impedancianak latszik.
Üdv!
Azt szeretném kérdezni, hogy a PIC-ek adatlapján hol találom , hogy a kvarcokhoz hány farádos kondit rakjak, + a táplábaknál lévő kondit? Melyik menüpont a Pdf fájloknál, pl.: a 18F4520 nál?
Kvarchoz ennél a típusnál konkrétan a Table 2-1 és Table 2-2-ben találod.
Táplábakhoz 100nF kell típustól függetlenül.
Az oszcillátor tervezés gyakran elhanyagolt téma, még a "profiknál" is:
Ha esetleg mélyebben is érdekel: Microchip AppNote 588 |
Bejelentkezés
Hirdetés |