Fórum témák
» Több friss téma |
Na, én már kicsit megkavarodtam. Most akkor 8MHz-en megy vagy nem? És 8Mhz-en ha megy akkor milyen Baud-al? Ha 8-on megy 32-n is mennie kell. Mindkét frekvencián beállítható a 100 és a 400 kHz Baud is. Próbáld ki 8Mhz-en 100-al is meg 400-al is.
Ellenőrizd le a kódot, hogy a KK jól legenerálta e. Engem a múltkor átvert, igaz csak szimulációban, de a PLL-t valahogy nem vette be.
Ezekkel a kódokkal megy. A legelsőre felvázolt "Primery oscillator" beállítással.
Feltöltöttem a kódot amit az mcc csinál. Az mcc.h -ban a lényeges sor: #define _XTAL_FREQ 24000000UL (a két baud érték az a 100 és 400kHz) Az I2C:
Például az UART:
Hali!
És egy idézőjel is mintha hiányozna... meg floatba, nem %x-el kell tenni szerintem... Hibaüzenet nincs?
Hello!
Nincs hiba, csak 0 marad a változók értéke. Soros porton kapok adatot ebben a fotmában pl: “r34AB0500,12CE0500” Ha az r nem teszem a tömbbe akkor is ugyanaz
Szia!
char temp[]={"12CE0500 34AB0500"}; sscanf(temp,"%lX %lX", &a, &b); Ha a és b float: a=1.300166E-27, b=3.185487E-7 értéket kap. Ha a és b unsigned long: értékük a temp-ben lévő két hexadecimális érték.
Ma tudtam kipróbálni a kapott ötleteket, sikerrel jártam, hála a tippeknek, segítségnek. Rendben megy, sikerült. Köszönök minden gondolatot.
A megoldást az hozta, hogy a CLKDIV <DOZEN> bitet bekapcsoltam és mellé modosítottam a DOZE<2:0> bitkombinációt 1:2 -höz arány létrehozásához. Az MCC 1:4 -hez arányt állított be és, ami furcsa, egyébként kikapcsolja a DOZEN bitet, amitől ugyebár nem is számít, na de mindegy. Az adatlap 95-ödik oldalán található ezeket a biteket tartalmazó regiszter leírása.
Mondtam, hogy az órajelet nem jól állítja be, de ettől függetlenül 1:1-el is mennie kellene.
Szerintem MC-éknél nagyon kutyulnak. A PIC24HJ doksiban jó az órajel előállítását mutató ábra, de a 24F és 24FJ esetében már nem igazán, ugyanis nincs feltüntetve a 2-es osztás, amiből Fcy következik. Valamint az I2C BRG előállításánál mindig Fcy-re hivatkoznak, holott a perifériák órajele az Fp-ből származik, ami nem feltétlenül azonos Fcy-vel.
A 24HJ esetében Fp=Fcy, viszont 24F és 24FJ esetében Fp=2*Fcy. (DOZE= 1:1 esetén)
Kíváncsiságból csináltam pár I2C időzítéssel kapcsolatos mérést PIC24HJ256GP210A mikrovezérlővel. A tapasztalatok:
1.) CP=40MHz, DOZE= 1:1, (PLL) mellett nem megy az I2C 2.) CP=40MHz, DOZE= 1:2, (PLL, FCY=20MHz) mellett viszont működik 3.) CP=25MHz (DOZE= 1:1, PLL) a max. frekvencia, amin még jó 4.) CP=26,25MHz (DOZE= 1:1, PLL) frekvenciától már nem megy Képek mellékelve a 4 esetről. Az I2C alapfrekvenciája FI2C=2*FP. FI2C=50MHz és BRG=15 mellet a magas periódus ideje 24 ciklus, az alacsony periódusé pedig 16 ciklus. Érdekesen működik a DOZE, ugyanis az aránytól függően csak minden második, negyedik, nyolcadik, stb. alacsony impulzust engedi át. Az I2C időzítése (TBRG) nem függ a TCY-tól (DOZE beállítástól), mégis TCY=40MHz mellett nem működik. Érdekes, pedig a korábbi adatlapban ehhez is megadnak BRG értéket.
Sziasztok
![]() ![]()
Sziasztok!
Egy kis segítséget szeretnék kérni. Adott egy JDM égető, ami megfelelően működik. 16F876A IC-t kellene felprogramoznom. Ezzel az égetővel eddig még soha nem programoztam be 16F876A - s IC-t, ezért kérném a segítségeteket. A kérdésem az lenne, hogy az égető számozott lábait,melyik lábakra kössem a 16F876A esetén? Köszönöm! A hozzászólás módosítva: Aug 4, 2018
A 84-esen feltüntetett nevű lábakat ugyanugy megtalálod a 876-on
Köszönöm. A felprogramozás sikerrel járt.
![]() Azt hittem ennél a PIC-nél más lábakat is használni kell. A hozzászólás módosítva: Aug 4, 2018
Volt kis időm, így PIC24F08KA101 mikrovezérlővel is csináltam pár mérést:
FP-t kitettem a REFO, FCY-t pedig a CLKO lábra, így mértem őket szkóppal. SCL és SDA lábakat 910ohmmal húztam fel tápra. FCY=16MHz (FP=32MHz) mellett nem megy az I2C, csak 8MHz-nél. DOZE= 1:2 beállításnál viszont FP=32MHz esetében is jó. FCY=8MHz frekvencián (FP=16MHz, DOZE=1:1) a legkisebb működő BRG érték a 6, viszont 1MHz-es FSCL-hez 5-öt kellene beállítani, de akkor a BRG 9 impulzus helyett csupán 1-et állít elő adatküldésnél. Ugyanez a helyzet FCY=8MHz és DOZE=1:2 (FP=32MHz) esetében is: a legkisebb működő érték a 13, de 12 kellene 1MHz-es FSCL-hez, ahol is megint csak 1 BRG impulzus jön ki a 9 helyett. Tehát PIC24F mikrovezérlőn - az adatlap ellenkező állításával szemben - nem működik 1MHz-en az I2C busz, de kisebb sebességen sem, ha 16MIPS-en járatjuk azt. Képek: 1.) FP=16MHz (PLL), DOZE= 1:1, FCY=8MHz, BRG=6 2.) FP=32MHz (PLL), DOZE= 1:2, FCY=8MHz, BRG=13 (Sárga jel az FCY, kék jel az FSCL.)
Hali!
Erratát nézted? Én a sorosnál futottam bele a KA sorozatnáll, a transmit buffer bit nem jól működik
Üdv!
Néztem, de nem ír semmit az I2C-ről, sem a 24F/KA-nál, sem a 24HJ/GP-nél. Növeltem a felhúzó ellenállásokat 2,4kohmra (ez közel a megadott "tipikus" 2,2Kohm érték); azzal a felfutási idő megnőtt, a lefutási pedig csökkent, közel azonos hosszra. Viszont az teljes periódus ideje 1/2 TCY-vel hosszabb lett és már a korábban írt 13-as és 6-os értékekkel sem megy az I2C, mert így csak 3 impulzust állít elő a BRG a 9 helyett. (8 bit + ACK)
Na... Leesett, hogy miért nem ment az I2C 1MHz-en.
![]() Alapesetben be van kapcsolva a Slew Rate Control, ami arra szolgál hogy megakadályozza a hírtelen áramlökéseket. Ez ugye azzal jár hogy a lefutási idő igencsak megnő, ami szépen látszik is a szkópon. A funkciót letiltva (DISSLW=1) a lefutó él közel függőleges lesz (80ns osztásnál). És láss csodát; máris lejjebb vihető a BRG, elérhető az 1MHz. Megállapítható tehát hogy a fel- és lefutási sebesség hatással van az időzítésre és az I2C modul működésére. Viszont 16MIPS-en (FCY=16MHz) így sem megy. A mellékelt kép az FCY=8MHz (FRCPLL), DOZE=1:1, BRG=4, DISSLW=1 melletti működést mutatja. A pontos 1MHz-hez BRG=5 tartozna, ill. a felhúzó ellenállást kb. 1Kohmra kellene csökkentenem. (Vagy a 4-es érték mellé a felhúzást kellene még jobban növelnem.) A hozzászólás módosítva: Aug 5, 2018
Helló!
Ez lett a meg oldás, A sscanf hexából csak int vagy long vátozóba olvas. A hozzászólás módosítva: Aug 6, 2018
Pláne ha még egy másik PIC-be is csatlakozik. MSSP-t kilőhetem, marad az UART.
Köszi.
Nem feltétlenül! Be kell tenni egy jumpert ami leválaszt a lábáról mindent a programozás idejére.
Én csináltam egy átkapcsolót, hogy ne kelljen mindig széthúzogatni.
Ez az amit nem akartam, de lehet kap egy dip switchet.
Ktamas, ez 2 pólusú? Hol lehet ilyet kapni? A hozzászólás módosítva: Aug 7, 2018
3 áramkörös, a tápokat nem kapcsolja. Valahonnan bontottam.
Nekem a klón pickit3 adott ilyen gondot, ha már a minimálisnál jobban terheltem. Ha teheted, vedd ki a picket, programozd fél és tedd vissza.
Ui: ha van rá mód ahogy írja tápold meg kívűlről és akkor ki se kell szedni talán. A hozzászólás módosítva: Aug 7, 2018
Tulajdonképp terhelve egyáltalán nincs mert csak programot szeretném rárakni
![]() Ezt használom:
Bekötés jó, illetve be van kapcsolva, hogy a pickit adja a tápot?
|
Bejelentkezés
Hirdetés |