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, hallgatok a bölcsebbre
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ó legalábbis egy picit egy 18F4*20 viszi majd a motorokat és egy másik 16f627 es pedig a 7*3 "relét".
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 |