Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Sziasztok!
Átfutottam a 24F és a 24H sorozat gyártásban levő típusait... Úgy néz ki, hogy a 16 bits modul van elszúrva, az átfutott 20-40 típus errata -ban mindben van utalás, hogy x4 mód nem működik rendesen. Legfeljebb néhány típus legújabb reviziójában látni némi javulást. Nem sok jó van az errata -kban más modulokról sem (IRDA, I2C, SPI, ECAN, USB, stb.) Sziasztok
Hát köszönöm az észrevételeket, a 22 oldalas errata nem semmi! Amikor ezt a chipet vettem (kb. 1 éve) akkor jöttek ki.
Egyébként 16Mhz-vel és 9600-al a barátságos c-ben (Mikroc) ennyi és megy:
Megpróbáltam feljebb tornázni, 19200-vel ment, 38400-al is ment, 57600-nál kezdett hibázni. Mondjuk nekem a 19200 elég, de még most megpróbálom felvenni 4*pll-re és megnézni ugyan ezeket. Azért ez a barátságos c tényleg nagyon barátságos, a helpben kapcsolási rajzok vannak.
Kipróbáltam, a lentebb tanultak szerint beállítottam ezeket a biteket:
CLKDIVbits.RCDIV0=0; CLKDIVbits.RCDIV1=0; CLKDIVbits.RCDIV1=0; Ettől ugye hajlandó lett 4*pll-re azaz felment a belső oscillátor 32Mhz-re és láss csodát 115200-al is simán elzakatolt a ketyere. Holnap megpróbálom mindezen tudást amit összehordtatok mindenki (de főleg az Én) okulásomra beintegrálni a c30 alá, mert azért csak az a hivatalos. A holnapi napom szabadidejét rászánom. Ja és közben az explorer16 demóboardról átköltöztem a saját boardomra, a 24fj128ga008-ra és ott is kasán fut a mikroc-s kód.
És mielőtt elmennék aludni el ne felejtsem megköszönni az értékes hozzászólásokat szilva-nak, icserny-nek, Hp41C-nek, trudnai-nak. :worship: :worship:
Azoknak is köszönöm akik segítettek életet lehelni a chip-be, és a múltkor megtanították hogy lesz a 32Mhz a belső oszcillátor. Innentől már elboldogulok, a motorokat tudom vezérelni ,a pc-től megkapom a fúróadatokat, ezek a részek már nem annyira pic specifikusak. Ha egyszer elkészül a ketyere, teszek fel linket és megnézhetitek miben segítettetek.
Egy kérdés: ha elég a 19200bps, akkor miért kellett a 115200?
Mellesleg a "barátságtalan" C30 esetében is írhattad volna így... Csak bele kellene nézni az MPLAB C30 telepítési könyvtáradba.
Megj: 8 MHz, 4x PLL, BRGH=0, 9600 b/s-re vonatkozó adatok.
Arra volt példám, és az hogy elég nem azt jelenti, hogy nem kell egyszer több. Most elég, mert átmegy egy x meg egy y koordináta, erre 9600 is elég, mer a fúró lassabban ér oda mint ez a pár byte, de ha sosros tudja ezt a speedet, akkor tessék neki tényleg tudni.
Hát ez szép. Belenéztem egyébként és láttam, hogy vannak benne kódok, de ezt pl. nem láttam. Rákerestem az openuart-ra *.c-kben az egész c30 könyvtárben de nem talált csak 2 c-t egyik sem ez a példa volt. Hol találtad ezt a c30-on belül?
Nálam a lib-ben csak .a-k vannak, az src-ben pedig az uart függvényei, de ilyen példa nincs. Mondom rákerestem a *.c-kben erre az openuart-ra és nem hozott rá csak a két openuart2.c-t ami nem ez a példa, hanem az openuart2 leírása. Nincs neked valami plussz feltelepítve ami nálam nincs fent?
Idézet: „az src-ben pedig az uart függvényei, de ilyen példa nincs.” Mondtam én, hogy "ilyen példa" van? A PIC24F perifériakezelő könyvtári függvényei vannak ott. Forráskódban is, tehát ellenőrizhető, hogy mit csinálnak... A példaprogramot te hoztad valahonnan, én csak behelyettesítettem a fenti könyvtár függvényeit.
Akkor azért nem találtam. Szólj a mikrochipnek, hogy a következő kiadásba rakják bele az icserny usart2.c-t
Akkor beincludolom az usart.h-t és megnézem lefordul e. Idézet: „Akkor beincludolom az usart.h-t és megnézem lefordul e.” Ennél szerintem több kell, mert a könyvtárat is be kell linkelni!
Igen rájöttem, mert a linker kiszólt miattuk. Mondjuk még soha nem raktam be +libet az mplab-ba de ezt is meg kell tanulni egyszer.
Beraktam lefordult, felírtam, futtatom valami a sebességgel nem jó. Ilyen kapcsolókkal megy:
_CONFIG1(JTAGEN_OFF & FWDTEN_OFF) _CONFIG2(FNOSC_FRC & POSCMOD_NONE) mivel az RCDIV0 reset után bebillen és a 8 ból lehet hogy csak 4 lesz, ezért a mainban van egy ilyen rész: _RCDIV0=0; _RCDIV1=0; _RCDIV2=0; Tehát ez most tuti 8Mhz-n fut de még a > helyett is 2 & jel jön. A 103-as baudot melyik képlettel számoltad ki?
A helyes érték 8Mhz-re és 9600-ra 25 .
Az általatok belinkelt manuálból számoltam ki és fut. És jó adatok jönnek vissza, mindjárt nekilátok 32Mh-re átírni. A képlet helyesen ha BRGH=0: Idézet: „FCY UxBRG =------------------ -1 16*Baud Rate” FCY pedig az oszcillátor frekvencia /2 Idézet: „Tehát ez most tuti 8Mhz-n fut de még a > helyett is 2 & jel jön.” Lehet digrafrokra kodolja az az usart rutin a kuldendo szovegedet?
[off]
Idézet: „8Mhz ... 32Mh” Ne vedd kotozkodesnek, de a Hertz az nagy Hz (es -vel, nyilvan ez utobbi csak elutes volt) -- nem tudom masok hogy vannak vele, de legalabbis szamomra zavaro mikor kis h-val latom.
Ehh nem látszik jól a képlet, mire való az idézet ha erre sem. Helyesen
UxBRG=(FCY/(16*Baud Rate))-1
Elütés, meg sietség.. Én is tudom hogy kell írni, csak nehezen áll rá a kezem és közben még 3 dolgot csinálok.
Rájöttem, te a 32MHz-re számoltad ki a 103-at. Most számoltam ki én is.
Sziasztok!
Most kezdenék el foglalkozni PIC-ekkel, és lenne egy projektem amihez egy megfelelő kontrollert kéne választanom, ebben szeretnék segítséget kérni. A feladat az lenne, hogy: - 8 helyen kellene áramot mérni, egy 12bites A/D kéne (max. 200mV-os jel) - 8 digitális potmétert kéne vezérelni I2C-vel vagy SPI-al (potikat lehessen kiválasztani két gombbal, és másik kettővel lehessen csökkentetni növelni az értéket) - az áramokat egy 2x40 LCD-n kéne megjeleníteni - kell majd usb-s kommunikáció (egy programból kell majd adatokat átvenni) és még maradjon pár szabad I/O esetleges fejlesztésekhez. Tudom elsőre elég nagy falat, de majd szépen fokozatosan próbálom elsajátítani a programozást. Szóval milyen kontrollert javasoltok? Üdv.
Na megy a c30-al is baudok helyes értékei 32MHz-hoz
9600:103 19200:52 115200:8 Ahogy elnézem efölé már nem nagyon lehet menni BREGH=0-val, de kísérletezni lehet. BREGH=1-el fejre áll, küldeni tud, de a fogadást megzagyválja, pedig újraszámoltam a képleteket és annyi jött ki mint a Di Jasio-nak, csak azt nem értem, hogy ez nála hogy nem jött elő? Na mindegy, a lényeg, hogy ezt is tudjuk, akinek pic24FJ128 sorozattal kell dolgoznia annak már tudunk a soros porton segíteni.
A PIC18F4553 adatlapját nézd meg!
Idézet: „8 digitális potmétert kéne vezérelni I2C-vel vagy SPI-al” SPI esetén szempont lehet a digitális potméterek felfűzhetősége (daisy chain).
Van a microchipnek egy segédprogramja, ami a választást segíti a szükséges paraméterek alapján: Link. Ha itt kiválasztottam, hogy 12-bites AD-t akarok, és USB-t, akkor négy chip maradt: 18F4553/2553/4458/2458. A kettessel kezdődők eleve kilőve, mert nincs elég lábuk, a négyessel kezdődők jók lesznek neked. A 4553 és 4458 között csak a memóriamennyiség az eltérés.
Tegnap már ajánlottam a PIC24F Family Reference Manual 21.fejezetét, ott van a 21-1 Táblázatban kilistázva minden szabványos sebességre BRG értéke, nem kell számolni semmit.
Meg had fuzzek hozza ahhoz amit icserny ill potyo leirtak:
Kulso aramkoroket is lehet alkalmazni adott esetben, pl kulso A/D es/vagy USB modul. Nyilvan a feladat irja elo, hogy mi a jo megoldas. Pl a max 200mV miatt nyilvan kell egy OPA vagy mas erosites (van olyan PIC is amiben van OPA) USB-nel pedig ra lehet tenni egy FTDI chip-et is ami a PC fele egy virtualis soros portot valosit meg, PIC oldalrol pedig UART modul. Ezt tehat nagyon egyszeruen lehet megvalositani mig ha USB-vel kellene bajlodni annak a tanulasi fazisa eleg meredek lehet. Persze nem tudom milyen eloismeretekkel rendelkezel, de a kerdesbol itelve talan nem ujdonsag szamodra az elektronika es talan mas mikrovezerlokkel mar dolgoztal?
Szia!
A sok és pontos mérés miatt célszerű olyan kapcsolatot felhasználni a pc-vel való kommunikációban, ahol a galvanikus leválasztás könnyen megvalósítható. A pic uart - ftdi - usb - pc járható, hiszen a soros átvitelnél 2 db optocsatolóval megoldható az elválasztás. Szia.
Igaz, de annyira megörültem egy jó képletnek, BRGH=0-ra, hogy tovább nem lapoztam, nem gondoltam, hogy kiszámolták az összes értéket. Mondjuk azért nagyon nem baj, hogy a képlet alapján ugyan az jött ki, mert amit beszúrtál kódot, ott pont elírtad, és 32MHz-hez írtad az adatot, miközben alul 8MHz-re hivatkoztál, ami semmit nem von le a segítőkészségedből, és legalább megtanultam egy életre hogy kell kiszámolni.
A 200mV azért ennyi mert eredetileg ICL7136 végezte a konverziót és a megjelenítést. Igazság szerint ez az első PIC-es projektem, korábban programoztunk suliba aduc842-őt, de őszintén szólva nem jeleskedtem a programozásba (sose voltam erős belőle), meg különösebben nem is érdekelt... Most, hogy szakdogába már muszáj lesz használnom és már agyilag is eljutottam arra a szintre, hogy szeretném is megtanulni, így elkezdem.
Ha az USB-s dolog ennyire macerás akkor lehet az mellőzőm egyelőre, amúgy aducnál is az TFDI csipet használtuk . Ma mondjuk elkezdek ismerkedni a PIC-ek adatlapjával, megvettem a Kónya féle PIC könyvet annak is nekikezdtem, meg elkezdem itt az oldal lévő cikkeket bújni. A programozást C-be gondoltam. Úgy gondolom lehet átugrok egy két lépcsőt (kevés idő lévén) és kezdem a kijelző illesztéssel majd egy csatorna áramának mérésével és megjelenítésével folytatom. Nem lesz könnyű dolgom, mert C-hez sincs sok közöm, de kitartó vagyok , úgyhogy valószínűleg még sokszor felbukkanok itt. |
Bejelentkezés
Hirdetés |