Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   569 / 1319
(#) Hp41C válasza trudnai hozzászólására (») Szept 7, 2009 /
 
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

(#) gulasoft hozzászólása Szept 7, 2009 /
 
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:
  1. unsigned rx1;
  2.  
  3. void main() {
  4.  
  5.   Uart2_Init(9600);
  6.   Uart2_Write_Char('>');
  7.  
  8.   while(1)
  9.   {
  10.     if (Uart2_Data_Ready())  {
  11.      rx1 = Uart2_Read_Char();
  12.      Uart2_Write_Char(rx1);
  13.     }
  14.   }
  15. }


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.
(#) gulasoft válasza gulasoft hozzászólására (») Szept 7, 2009 /
 
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.
(#) gulasoft hozzászólása Szept 7, 2009 /
 
É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.
(#) potyo válasza gulasoft hozzászólására (») Szept 8, 2009 /
 
Egy kérdés: ha elég a 19200bps, akkor miért kellett a 115200?
(#) icserny válasza gulasoft hozzászólására (») Szept 8, 2009 /
 
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.

  1. unsigned rx1;
  2.  
  3. void main() {
  4.  
  5.   OpenUART2(0x8000,0x0400,103);
  6.   WriteUART2('>');
  7.  
  8.   while(1)
  9.   {
  10.     if (DataRdyUART2())  {
  11.      rx1 = ReadUART2();
  12.      WriteUART2(rx1);
  13.     }
  14.   }
  15. }


Megj: 8 MHz, 4x PLL, BRGH=0, 9600 b/s-re vonatkozó adatok.
(#) gulasoft válasza potyo hozzászólására (») Szept 8, 2009 /
 
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.
(#) gulasoft válasza icserny hozzászólására (») Szept 8, 2009 /
 
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?
(#) icserny válasza gulasoft hozzászólására (») Szept 8, 2009 /
 
Idézet:
„Hol találtad ezt a c30-on belül?”

lib és src

Bővebben: Link (1.5 szakasz)
(#) gulasoft válasza icserny hozzászólására (») Szept 8, 2009 /
 
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?
(#) icserny válasza gulasoft hozzászólására (») Szept 8, 2009 /
 
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.
(#) gulasoft válasza icserny hozzászólására (») Szept 8, 2009 /
 
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.
(#) icserny válasza gulasoft hozzászólására (») Szept 8, 2009 /
 
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!
(#) gulasoft válasza icserny hozzászólására (») Szept 8, 2009 /
 
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.
(#) gulasoft válasza icserny hozzászólására (») Szept 8, 2009 /
 
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?
(#) gulasoft válasza gulasoft hozzászólására (») Szept 8, 2009 /
 
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
(#) trudnai válasza gulasoft hozzászólására (») Szept 8, 2009 /
 
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?
(#) trudnai válasza gulasoft hozzászólására (») Szept 8, 2009 /
 
[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.
(#) gulasoft válasza gulasoft hozzászólására (») Szept 8, 2009 /
 
Ehh nem látszik jól a képlet, mire való az idézet ha erre sem. Helyesen
UxBRG=(FCY/(16*Baud Rate))-1
(#) gulasoft válasza trudnai hozzászólására (») Szept 8, 2009 /
 
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.
(#) gulasoft válasza icserny hozzászólására (») Szept 8, 2009 /
 
Rájöttem, te a 32MHz-re számoltad ki a 103-at. Most számoltam ki én is.
(#) MolnarG hozzászólása Szept 8, 2009 /
 
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.
(#) gulasoft hozzászólása Szept 8, 2009 / 4
 
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.
(#) icserny válasza MolnarG hozzászólására (») Szept 8, 2009 /
 
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).
(#) potyo válasza MolnarG hozzászólására (») Szept 8, 2009 /
 
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.
(#) icserny válasza gulasoft hozzászólására (») Szept 8, 2009 /
 
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.
(#) trudnai válasza MolnarG hozzászólására (») Szept 8, 2009 /
 
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?
(#) Hp41C válasza MolnarG hozzászólására (») Szept 8, 2009 /
 
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.
(#) gulasoft válasza icserny hozzászólására (») Szept 8, 2009 /
 
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.
(#) MolnarG válasza trudnai hozzászólására (») Szept 8, 2009 /
 
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.
Következő: »»   569 / 1319
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem