Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Köszönöm a linket! Még nem ismertem, nem volt szükségem rá, de érdekel, és biztos, hogy kelleni fog!
Az első megoldásod tetszik. Tehát leformázni, létrehozni üres txt-t, stb. PIC18F4550-re gondoltam. Annak a RAM mérete is megfelelő. A kapcsolás már megvan tervezve a fejembe, azt összerakom a héten, mert azon nem kell úgy sem változtatni. Aztán lehet programot írni.
Ha USB/CDC-n keresztül kommunikál az adatgyűjtő a PC-vel, akkor gyakorlatilag bármilyen terminálprogrammal le lehet tölteni az adatokat. A PIC-ben futó alkalmazás elvégezhet minden formázást, akár még x-modem protokollal is küldheti a "file"-t. Ez egy scriptelhető terminálprogival megoldható akár olyan egyszerűen is, hogy csak egy ikonra kelljen kattintani a file letöltéséhez. Persze, ehhez meg a PIC-re kell programot írni
![]()
Mintha azonban lett volna olyan szivas, hogy az USB/CDC olyan portra hazudta be magat amit a terminal program nem volt kepes elerni. Vagy rosszul emlekszem?
Igen, ez jó ötlet! A terminálok képesek fájlba menteni a vett adatokat. A PIC oldalon csak formázni kéne az SD-re tárolt adatokat elküldés előtt.
Egy hátrányt látok, hogy ez egyel több művelet, mint ha az SD-re eleve fájlba írunk és csak beolvassuk egy kártyaolvasóval. Meglátjuk melyik válik be, mert működni mindkettő működhet.
Volt ilyen, igen, de átírtam a portszámát kézzel és működött.
Jó lehet, de ha nem kell annyi láb, akkor a 18F2550 is megfelel. Ezt te látod jobban. Azért is jó, mert ha még is USB kell, akkor ott van benne...
Viszont van egy kis macera az RX és az SDO-val(hardveres SPI kimenet), ami egy lábra került, valami okostojás miatt. Tehát vagy szoftveres usartot használsz, vagy szoftveres SPI-t, vagy külső kapuzást, ami az RX-ről lekapcsolja a MAX232 kimenetét addig, amíg az SD-vel foglalkozik. A szoftos SPI nem bonyolult, én azt választanám ebben az esetben, mert így nem kell külön kapu áramkör. Igazából nem szükséges túl nagy sebesség az SD-hez, elég lehet a 300KHz-is, amihez már időzíteni is kell két órajel között a programban, azaz lenne idő másra is bőven(pl. usart megszakítás lekezelésére), még az SD műveletek alatt is. Tényleg milyen időközönként akarsz adatot kiolvasni és mennyit?
Jelenleg 5 percenkénti kiolvasást tudok végezni éjszakai a kis memória miatt. Napközben percenkéni grafikon rögzítés van. Ha éjszaka is percenként rögzítene az már tökéletes. Egyébként a szélsebesség miatt van az egész macera. Tehát a többi nem annyira változik 5 perc alatt átlag időben. A szélmérést kéne pontosan átlagolni a grafikonon.
Mellékeltem a kiolvasást a gyári progiban. (history) Tehát például amikor nincs bekapcsolva a gép, és reggel benyomom így kerül fel a listára. Egy sor egy időpont. Tehát egy ilyen időpont és a hozzátartozó adatok kerülnének be az sd-be egy kiolvasáskor.
Üdv Szaktársak!
Struktúrák használatával (is) van problémám. Létrehoztam egy struktúrát, de csak a main()-ben férek hozzá. Ennek így kell működnie vagy én deklaráltam rosszul? Esetleg van-e módszer hogy más függvényekből is elérjem? Az üzem közben előforduló hibákat szeretném benne flagként rögzíteni, mivel nem akarok a hibavizsgálatnál maszkolgatni. Tud valaki segíteni?
Sziasztok léptetőmotor vezérléshez (7 db) szeretnék PIC-et használni méghozzá valószínű hogy ezt De van egy kis bajom, mégpedig az hogy itt azt irja "HE"-n belül hogy 36 I/O pinje van, a microchip adatlapja szerint 35.
De én akár hogy számolom csak 34 jön össze mivel a 2Vdd és 2Vss megkapja a tápot meg a testet, mclr jelen esetben kiesik illetve a 18-as pinen Vusb jelzést találok de arra azt írja hogy 3.3 v kimenet, tehát ezt nem feltételezem mint logikai ki bemenet, vagy pedig itt az adattáblába látok olyat hogy a (igaz nem erre a pic-re) de hogy a Vss illetve a Vdd ből egy egy pozitív iletve test logikai pin ként üzemel"-het" igy jöhet össze akkor a 35 I/O logika kimenet bemenet. Tehát az én PIC18F4550-esem esetében a 31-es Vss és a 32-es Vdd kimenetként használható? Köszi a választ. ![]()
Szervusz!
Mert valószínűleg a main()-ben deklaráltad. Deklaráld a struktúrát még a függvények előtt! Feltételezem C-ről van szó, mert egyébként nem sok konkrétumot írtál: programrészlet, programnyelv, stb...
Ha karakterszámokat nézem, akkor 50 bájtba belefér egy sor adat. Ekkor 10 percenként tele lenne az 512-es puffer, lehetne írni egy blokkot, a végén időbélyeggel. Egy 16megás MMC kártyára is 200nap ráférne 1 perces bontásban, de nagyobb SD is kezelhető, szinte ugyanúgy és akkor lehetne tartalékot is hagyni, és mondjuk 100 bájt lenne egy sor helye, és 5 percenként lenne írva egy blokk. Szabadon választott...
Az MCLR-t lehet bemenetként használni, ha letiltod a funkcióját. Így megvan a 35. Az adatlapban egyébként egyenként ott van egy táblázatban, hogy melyik láb mi lehet.
Szia!
A 18F4550 nem igazán jó választás, mert a Vusb kivezetés nem használható digitális ki/bemenetként. Jobb lenne más 40 lábút választani, amelyiken mind a 35 láb lehet digitális ki/bemenet: pl. 18F4420, 18F4520, 18F4620.
Bocs, ez valóban kimaradt.Tehát c-ről lenne szó, MPLAB-ban fejlesztek.
Nem a main()-ben deklaráltam, hanem előtte. Viszont most vettem észre hogy egy másik fv.-ben pedig hozzáférek. Viszont van egy fv. ahol ha piszkálni akarom nem fordul le a kód,leáll a következő üzenettel: Error [1151] struct or union object designator expected
Lehetseges, hogy az a fuggveny meg az elott van deklaralva mielott a strukturad?
Ha latnank a kodod akkor gyorsabban kiderithetnenk mi a problema...
Nem az irtam hogy a main() előtt, hanem hogy,
Idézet: „Deklaráld a struktúrát még a függvények előtt! ” Vagy egyszerűen csak, nem jól hivatkozol a struktura elemére...
A deklarálás közvetlenül az include-ok után van tehát elvileg időben.
......... itt működik, nincs probléma:
.. itt pedig nem:
de most nézem, lehet hogy a hiba[] tömbbel veszik össze?
Ez volt a probléma. Vélhetőleg nem tudta eldönteni hogy a tömbre vagy a struktúrára akarok hivatkozni.
Köszönöm a tanácsot,
![]() ![]() Eagel-be mondjuk nem találtam azt a típust de majd akkor a 18f4420 vagy 4520 adatlapja szerint kötözgetem a lábakat.
őő igen. itt nem az USB volt a lényeg hanem a kivezetés. hét léptetőmocit és plussz 7szer 3 "relét" szerettem volna működtetni, de ez minden féleképpen kevés lesz.
de mivel minden féle képpen kevés ezért változik a konstrukció
![]() hamarosan csatolom a nyáktervet úgy egyszerb lesz megérteni szaktudás nélküli csavaros agymenetemet ![]()
Van 64 meg 80 lábú PIC is, és van perifériabővítő IC is. Nem biztos, hogy érdemes több mikrovezérlőt betervezni, csak akkor, ha van valami haszna a dolognak.
Igazad van, de pl. egy 627 olcsóbb mint egy bővítő majdnem, és még okos is! :yes:
sziasztok
az lenne a kérdésem hogy a 16f628 pic-nél az RB1, RB2 és RB3 lábakon ha bemenetnek vannak deklarálva szintvaltozás létrehoz e megszakitást? Nyomogombok vannak rajta és nem tudom hogy miért nem nem jön létre megszakitás. Az rb6-rb7 labon van egy 32khz-es rezonator és a timer1 tulcsordulasakor létrejön a megszakitás. közben megtalaltam (PortB Change Interrupts (pins RB7:RB4))
Szia!
A PORTB 7..4 bitjeire van csak változásfigyelés megszakításkéréssel. A PORTB 0. bitje pedig a külső megszakítás kérés bemenet.
Mi lehet a gond a "char szoveg..." kezdetű 6. sorral? A fordító állandóan syntax error-t dob arra a sorra.
Csak annyi, hogy rossz helyen van. Bármilyen egyéb művelet előtt kell a változó vagy konstansokat deklarálni. Tehát tedd azt a sort az Init() fölé és akkor menni fog.
|
Bejelentkezés
Hirdetés |