Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Nem akarok venni mert ez volt itthon és gondoltam hogy felhasználom. Nem lényeges hogy sokat fogyaszt mert csak a tanuláshoz kell.
Értem, és pontosan mit nem tudsz megoldani?
A kapcsolás egyszerű.
Fogsz egy MAX 485 vagy 75176 IC-t. Kiválasztól 3 szimpatikus PIC lábat. Egy lesz a soros ki, második az adatirány (DIR), harmadik a soros be. Kész az is az RS485. (Lezáróellenállás, felhúzó ellenállások és esteleg 2 Zener, melyekre példát ezrével találsz)Áttanulmányozod az eszközöd MODBUS-os protokolját és megpróbálsz a PIC-re olyan programot szerkeszteni, mellyel kommunikál.
Az előző hozzászólásomban csatoltam a forráskódot. Nos annyi a gondom hogy CCS C-ben íródott a kód de félig meddig már átalakítottam HITECH C-s kódra. Csak egy kis gond van a RTC regiszterein belül levő bitek definiálásával. A kódban odaírtam hogy pontosan hol vannak ezek a részek.
Nem tudom ilyenre gondolsz-e?
Mondjuk a REGISTER A-nak UIP nevű bitjére, ami a register 7-ik bitje, én így egyszerűen definiálnám: #define UIP 0x80 Amikor ellenőriznem kellene ezt a bitet, akkor pl. egy OR művelettel tesztelni tudom hogy az értéke '1' vagy '0'.
A helyzet nem ennyire egyszerű:
- Éredemes a pic belső UART egységét 9 bites adási / vételi módban használni, az adás és vételi lábak az uart lábai legyenek. - Optikai leválasztás kell az RS485 és az uart lábai között. Ha sok ilyen egységet használunk, a föld eltolódás átlépheti a 0.4V zajtartalékot... - A programban paritásellenőrzás és 16 bites CRC számítás is kell. Ha nem túl nagy távolságokat használsz a paritás elhagyható, de a MODBUS szabvány előírja...
Inkább a
definíciót használnám, mert használható a
formában és az
formában is.
Sziasztok!
Segítséget szeretnék kérni. Van egy pwm-el szinusz jelet előállító program, azt szeretném, hogy a szinusz jelet 10-100hz között lehessen folyamatosan változtatni. A pic18f452 40mhz-el megy. Sajnos nem értem a program működését így nem tudom melyik változó vagy regiszter módosításával lehetne ezt elérni.
Köszönöm szépen mindkettőtöknek a válaszokat. A program működik.
Akadt egy kis újabb probléma. A következő sorok tartalmazzák:
Nos a -> helyére kellene valamit betenni mert ez így nem jó. Szerintetek úgy jó lesz ha megoldom iffel pl így:
Szia!
Mekkora teljesítményt tud a kapcsolásod?//a programozáshoz még nem értek,sajnos//
-> helyett szerintem . (pont) kellene. Bár attól függ, hogy pontosan mi a date nevű változó.
Megszakításos kérdésem volna. Olyan környezetben dolgozok, amelyben egy periféria Low szintű megszakítást ad, ha adat érkezik rá. Ha több adat is érkezik, akkor a megszakítás vezetékét Low ban tartja mindaddig, míg az összes beérkezett adatot ki nem olvasta a PIC. Ahhoz, hogy minden adatot feldolgozzak, nem elég az első megszakításra 1X olvasnom, hanem a megszakítás vége előtt még olvasnom kellene a periféria DATA count regiszterét is, hogy van -e még további adat benne. (Ez időt vesz el, és azzal takarékoskodni akarok)
Én a fentieket úgy oldottam meg, hogy BTFSS -el figyelem az INT0 bemenetet. Amíg Low addig újra fut az olvasó rutin. Működik, de nem tűnik elegáns megoldásnak. Mi a véleményetek?
Lehetne esetleg az IT rutinban egy jelzot beallitani majd tiltani az INT0 IT-t. Utana a foprogramban olvasgatod a periferiat. Amint a periferia kesz, torlod a jelzobitet es ujra engedelyezed az IT-t. Igy mas IT-ket nem fog zavarni a lekezeles hosszu ideje, es a foprogram is csinalhat mas dolgokat.
Szia!
Egyelőre egy hídkapcsolással 1 fázisú kis teljesítményű aszinkron motor fordulatszámát szeretném szabályozni. Igazából kisérletezni szeretnék vele. Csak a program nem világos teljesen.
A pont nem működik. Beillesztem a kódot arra a DS12887_t változóra:
Hali!
Ezt a net-en találtad? Mert ilyet én is keresnék,csak a pic program általában nem publikus.
Szia!
Igen a net-en találtam sajnos már nem tudom, hogy hol, de az eredeti program fájlt felrakom neked. Én időközben módosítgattam ezt azt. Lefordítva proteus-al szimuláltam szépen működik, produkálja a szinusz jelet.
Hát elvileg Hitachi HD44780 kompatibilis kijelző.
Legalább a megadott információk szerint. Adok pár linket. http://zss1.uw.hu/mikrovez/projects/hd44780.pdf http://zss1.uw.hu/mikrovez/projects/lcd.asm http://zss1.uw.hu/mikrovez/index.html Az első a kijelző adatlapja. Nekem 4x20as van. A második egy assembly-ben írt példaprogram. A harmadik pedig egy átfogó lap a MicroMix fejlesztőkörnyezethez. De én nem jöttem rá hogy mit csinálok rosszul
A programot megnézve, érthetőnek látszik mi hogy történik. Viszont egy dolgot nem szabad elfelejteni az LCD modulok kezelésénél, mégpedig azt, hogy egy-egy utasítás végrehajtása, karakter kiíratása időigényes dolog. Ezeket a rendszeridőket figyelembe kell venni. Pl. a kijelző törlés azt hiszem a leglassabb az összes közül. Talán 1.6msec, ami kontroller léptékben rengetegnek számít. Bekapcsolás után érdemes 1-2 másodpercet szánni arra, hogy az LCD modul feléledjen. Ha a gyors kezelést optimalizálni akarjuk van egy Busy flag az LCD státusz regiszterében, ami jelzi hogy pihi van vagy dolgozik éppen. Ezt kell kiolvasni mielőtt munkára fognánk.
Szia!
Sajna a rajz nélkül nem sokat ér. Azért köszi! F
Ebből a sorból a legfontossabb dokumentum hiányzik csak - az adatlap, pedig evvel kellene kezdeni....
Az adatlap Figure 25. ábrájából (212. oldal) jól látható, hogyan kell 8 bites módban inicializálni a kijelzőt. (A 4 bites mód inicializálása a Figure 26. a 213. oldalon látható.) A belinkelt kód hibás, nem tartalmazza az üzemmód beállítására vonatkozó három parancsot. Jótanács: A hálózatról letöltött kódokat fenntartással kezeljük, ellenőrizzük le, több, mint 80% (szándékos vagy véletlen) hibákat tartalmaz...
Sziasztok!
Tanulmanyi illetve hobbi szinten foglalkozok elektronikaval,ez mar a masodik evem. Szeretnek tovabblepni a mikrokontrollerekre,orakon keresztul olvastam tegnap is,ma is a PIC ekrol,de meg mindig nem vagyok elegge tisztaban a PIC ek tipusaval kapcsolatban. Mi szabja meg azt,hogy melyik tipus melyikkel helyettesitheto? Engem speci jelenleg az erdekel,hogy helyettesitheto a 12F675 egy 16F628A val?Ha igen,akkor milyen modositasokat kell tennem? Egy rovid magyarazatot is kerek,hogy ha igen akkor miert vagy minek fugvenyeben allapithatjuk meg ezt. Elore is koszonom a valaszt!
A MCHP oldalarol letolthetoek az adatlapok, majd ezek tanulmanyozasa utan kiderul melyik PIC milyen HW elemeket tartalmaz. Az hogy vegulis a 12F675 helyettesitheto-e 16F628A-val csak az alkalmazas ismereteben lehet donteni. Van a MCHP oldalon egy Productselector, aminek a segitsegevel lehet parametrikus keresest csinalni a PIC-ek csaladjaban. Mert ugye pl tobb mint 325 tipus van a 8 bitesek csaladjaban. Ebbol vannak 6 labastol 100 lab felettiekig. Vannek egeszen keves HW-vel felvertezettektol a komplex uC-ig minden. Viszont az alkalmazas ismerete nelkul eleg nehez segiteni. Mindenesetre a potlas menete, hogy megnezzuk az adatlapban az eltereseket, majd a SW-t atirjuk az uj HW-nek megfeleloen. Utana lefordit, kiprobal majd megvesszuk az eredeti PIC-et es azzal epitjuk meg a kinezett kapcsolast, mert nem sikerult atirni a progit. Persze lehet hogy sikerul az atiras.
A program használja az A/D -t? Ha nem, akkor jó lehet a 16F628A, ha igen, akkor 16F819 vagy 16F88...
Pontosan errol a kapcsolasrol es a hozzatartozo programrol van szo:
a PIC 12F675 -ot alkalmazo Akkuor itt szeretnem a PIC 12F675 ot helyettesiteni PIC 16F628A val.
Itt nem tudod helyettesíteni, mert szükség van analóg-digitális átalakítóra a pic-ben, a 16F628A pedig nem tartalmaz ilyet. Lehetne trükközni a komparátorokkal, ugyanezt a működést el lehetne érni, de ahhoz az áramkört is módosítani kell, és jelentősen át kell írni a pic programját is, így gyakorlatilag nulláról újra kellene tervezni az egészet.
|
Bejelentkezés
Hirdetés |