Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Sziasztok!
Az alábbi problémára szeretnék pic programot írni assembly-ben: Adott egy mágnes szelep, ami változó szélességű négyszögjellel vezérelve. Ennek szeretném az átfolyását mérni. A következőt gondoltam ki: Ismert mennyiségű folyadékot engednék ki a szelepen, pl 1 litert. Mérem az időt a felfutó éltől a lefutó élig, ez lesz a nyitott szelep ideje. Ezt ismételném ameddig ki nem fogy az 1 liter folyadék, és folyamatosan összegezném, görgetve a nyitott időket. Így az idő és mennyiség ismeretében tudnám az átfolyást. A kódot nem tudom hozzá megalkotni, az idő mérése megy, de összegezni, görgetni nem tudom az értéket! Ebben tudnátok segíteni? 16F84A PIC-et használok.
Hol sikerült beszerezni az MCP2200-at?
Csak nem érkezett a ChipCAD-hoz meg egy készlet? Amúgy a konfig program nélkül is tudja a dolgát az IC? Vagy esetleg ekkor csak egy fix baudon?
Egy globális változóban meg tudod oldani. Ezt még a fügvények előtt kell megadni.
Ha nekem most ez lenne a feladatom, rögtön egy másik PIC-et választanék, mert ez erre nagyon buta. Olyan PIC kéne amiben legalább CCP modul van.
Aztán nem összegezni a mért időket, hanem átlagot kéne számolni, ami arányos lenne a mennyiséggel.
10MHz-s quartz, 18pF kondikkal.
Próbáltam azt is hogy az oszcillátor hiba, cím hiba és a többi hiba megyszakításra ledet kapcsolok, de nem kapcsolt egyik sem, amikor a jelenség előjött. A BOR emelés majd megpróbálom . Köszi a tippeket. Idézet: Nem az enyém, csak kipróbálásra van nálam a demókártyája. A Farnelltől rendelték. A sebességet szerintem az alkalmazásból lehet/kell beállítani (pl. Hyperterm).„Hol sikerült beszerezni az MCP2200-at? Csak nem érkezett a ChipCAD-hoz meg egy készlet?” A konfigurációs programmal olyanokat lehet beállítani, hogy mi legyen az alapértelmezett sebesség, mi legyen a Vid/Pid, mit csináljon a két LED, stb. (Megjegyzés: azóta kiderült, hogy a konfigurációs programnak nem jó a 2.0 .NET keretrendszer, újabb változat, pl. .NET3.5 kell neki)
Megjött a pk3 -am. Persze nem bírtam ki, belenéztem.
Ez is csak úgy tudja a programmer to go -t, ha megtápolják usb felől. Szerintetek mennyire lenne gáz, ha az icsp csati felől egy diódával visszavezetném a tápot az usb csatira ? Esetleg egy kapcsolót rá ?
Gondolom ma jött meg, mivel tegnap még nem említetted. Ha már most így frissen felnyitottad, és már most az upgrade-elésen gondolkozol, szerintem mondhatunk akármit, amekkora lendületben vagy.
De szerintem nem ártanál vele.
Igen, a végén átlagot számolnék. Pl. az összegzés eredménye: 1000 ms alatt megy ki egy liter, akkor 1 ms-os jelhez 1 ml áramlás tartozik. Ebből az állandóból tudom monitorozni a pillanatnyi átfolyást a változó szélességű vezérlő jeleknél, felszorozva liter/óra értékre.
Ha jól gondoltam, akkor egy ciklust kell készíteni, ami mért időt hozzáadja a változóhoz, és ez ismétlődik, míg a megszakítás egy gomb lenne, amihez figyelnék egy bitet, ha 1-re vált akkor megszakad a ciklus, és továbblép a szorzásra és a kiírásra. Sajnos eléggé kezdő vagyok a PIC témában, de a LED villogtatás, gombnyomogatáson túl vagyok, angollal sincs gondom, de ilyen specifikus problémára nem találtam megoldást, ahhoz meg még kevés a tudásom, hogy magamtól összerakjam a programot. Milyen PIC-et ajánlotok erre a feladatra? Jó lenne, ha rendelkezne A/D átalakítóval is, később szükségem lenne rá, és akkor nem kellene bajlódnom a külső A/D átalakító illesztésével, ami még szintén magas nekem. Köszi a segítséget!
Hehe, áá, inkább nem bántom most még. Meggyőztél. Vicces viszont benne az Atmel eeprom.
Szia!
Miért nem készítesz egy ICSP kábelt, aminek egy kimustrált USB kábelből készült leágazása adná a tápot? A nyár elején a Microchip fel szerette volna vásárolni az Atmel -t... Idézet: A jelek szerint néhány EEPROM-ot már meg is vettek. Kis lépések taktikája... „A nyár elején a Microchip fel szerette volna vásárolni az Atmel -t...”
De az is lehet, hogy saját gyártmány... A szándék is korábban volt .. Bővebben: Link
Idézet: PIC18F4550, s akkor a számítógéppel való kommunikáció sem lesz gond (USB). Nálam tananyagot is találsz hozzá... „Milyen PIC-et ajánlotok erre a feladatra?” Idézet: Jó lenne tisztázni, hogy milyen pontosságú mérést akarsz végezni! PIC beépített ADC-vel 10 vagy 12 bites felbontással mérhetsz, a pontossága szerényebb. Külső ADC viszont 18-24 bites is kapható, s az illesztése sem nagy kunszt (pl. SPI-vel). „Jó lenne, ha rendelkezne A/D átalakítóval is”
Ha nem kell A/D és csak ez a feladat,amit felvázoltál, akkor 16F628A
A/D-s 16F690. Ha az impulzus szélessége egyenesen arányos az átfolyó mennyiséggel, akkor elég néhány impulzust megmérni és átlagolni, majd kijelezni. A szorzót(kalibrációs állandó) elég később beállítani. Ha nem lehet arányosságot felállítani, akkor több mérési pontot kell felvenni és erre egy 3-ad fokú polinomot illeszteni. A polinommal így meg lehet kapni a köztes értékeket is. Ha túl sok impulzust mérsz meg és adsz össze, hatalmas számokkal kell dolgoznod, ami nem túl egyszerű ASM-ben. Persze a polinom kiszámítása, illetve a tört együtthatók kezelése sem leányálom! Ha ilyenre lenne szükség, akkor javasolt a 18F-es széria és a C nyelv használata.
Igen, pont arról próbálom lebeszélni! (meg az összes többi PIC16-ról...)
Át fogom nézni a 18F4550-es anyagait, jó befektetésnek tűnik, egy darabig biztosan nem "növöm" ki. 16F84-ről sokat olvastam, rengeteg anyag van róla magyarul is, ezen szereztem az ismeretim javát, biztosan sokkal durvább a 18F4550-es, meg a C nyelvet sem nagyon ismerem. Anno Pascalt tanultam suliban, az assemblyvel most barátkoztam meg, de úgy néz ki át kell állnom a C re.
Elvileg arányos az átfolyás az impulzus szélességével, ezzel nem hinném, hogy gond lenne. Másik megoldás lehet, hogy 555-tel generélni egy kalibrált 50%-os négyszögjelet és azzal vezérelni a szelepet, megmérni úgy mennyi idő alatt enged ki 1 litert állandó üzemben. Ezután már csak az aktuális üzem közbeni négyszögjel kitöltési tényezőjét kell figyelni, és azzal szorozni az előbb meghatározott értéket. A nagy számokat lebegőpontosként kezelném, láttam valahol erre példát. De inkább programoznék, szeretem fejben intézni az ilyen dolgokat, nem külön hardvert építeni mindenre, ha egy programmal is meg lehet oldani. Az A/D átalakítás meg rezisztív elven működő nyomásadó értékének olvasására kellene. Idézet: Akkor meg csak egy oszcillátor és egy kapuzott számláló kell (az impulzusokkal kell kapuzni). A PIC időzítőivel/számlálóival is kivitelezhető.„Elvileg arányos az átfolyás az impulzus szélességével” Idézet: Kár lenne! A gyakorlati célokra egyszerűbb az ún. fixpontos ábrázolás, ahol a fizikai mennyiségek törtrészeiben (pl. V helyett mV, liter helyett milliliter...) egész számként ábrázoljuk a (felszorzott) mennyiséget. A PICCOLO projekt Analóg perifériák c. fejezetében a hőmérő programok is így működnek. „A nagy számokat lebegőpontosként kezelném”
Nagyon szépen köszönöm a segítséget! El fogok mélyedni a témában!
Szeretem egy könyvet: Embedded C programming and the Microchip PIC Tudnátok még ajánlani jó könyvet/oldalt ahol a C nyelvet alapoktól lehetne elsajátítani? Sajnos sosem tanultam iskolában.
Szét kell választani a programozási ismereteket és a nyelv(fejlesztő környezet) ismeretét. Ha bármilyen nyelven programoztál már megfelelő szinten, akkor C nyelven is fogsz tudni.
A feladat megismerni a C nyelv szintaktikáját(a fejlesztő környezet helpje ebben segít) és a fejlesztő környezetet, az abban lévő lehetőségeket, deklarálásokat, oszályokat, project kezelését stb. Ez utóbbihoz egy adott környezetet ki kell választani, és azt megtanulni. Javasolt a gyári környezetek választása.
Egy másik topikban már ajánlottam ezt a könyvet: A C programozás alapjai
Ez pedig egy angol nyelvű könyv: The C book
Kifejezetten a Microchip C18-ról szóló tutorial:
tutorial de C del compilador C18 (a kép alatt a 2. Opción de Descarga... linkre kattintva PDF-ben letölthető a Cretive Common licenszelésű könyv). Azt ne kérdezd tőlem, hogy spanyol vagy portugál, de jó könyvnek látszik! Itt pedig egy rövid lélegzetű angol nyelvű C18 tutorial található.
Itt van egy oldal ami az alapoktól indul. C tanuláshoz szerintem szedd le a dev-cpp nevű programot és abba gyakorolj. Ha mennek a kis konzolos programok akkor érdemes PIC en próbálkozni vele. De ez csak az én véleményem.
Üdv!
DS1621-et ugye nem lehet kiolvasni úgy hogy az értéket külön számokra osztjuk? Tehát arra gondolok hogy például a 25,5 fokot 2-5-5-re olvassuk be a PIC-be. Sajnos a programban nem lehet az érték két számjegyű a kijelzés miatt. Ha más nem akkor valamilyen módón a programban kéne szétosztani.
Egyrészt nem lehet, másrészt bármilyen számot lehet kerekíteni, vagy átalakítani olyan formátumúvá, ami megfelel a kijelzésnek. Inkább ilyen irányba törd a fejed.
Hali,
Van egy C-ben , PIC16F877 -re írt kódom. Eléggé egyszerű: inicializálom a pikket és a megszakítást. Alapból a D portra kötött 8 LED-re 0x55 -t küldök ki, ha a timer2 megszakítást generál, akkor pedig 0xff -t. A gondom az, hogy a számláló megszakítás bitje beáll, de a megszakítás rutin nem fut le. Valaki látja a kódban a hibát? (Környezet: pickit2 -s panel, HI-TECH forditó, MPLAB)
|
Bejelentkezés
Hirdetés |