Fórum témák
» Több friss téma |
Differenciáló taggal tudsz a le-, és felfutó élekből keskeny impulzust alakítani. A felfutóból pozítívot, a lefutóból negatívot. Diódás szintillessztővel a negatívot át tudod tenni a pozitív tartományba. Ha szükséges némi inverteres jelformálás után használhatod az impulzust.
Ez eszembe sem jutott :pirul: Annyiran profin akarom megoldani azt a jelfeldolgozósdit, hogy túlkomplikálom... :pirul: Köszi
![]()
Az, hogy a C-s az azthiszem egyszer írható. Még az F az a Flash-rövidítése, az többször írható.
Aztamindenségit!
Volt egy general a teljes gépen. Eltűnt a jelenlegi projektem, asm file-jai a projekt file-ok megvannak. A picecből visszaolvasva visszafordítva meglehet még a programom azzal az arccal ahogyan megvolt a balfsz lépésem előtt?
Úgy nem, mert a változónevek, címkék, stb. nem lesznek meg, hanem csak memóriacímek lesznek a helyükön. Kivéve az SFR zónát, annak a nevei meglesznek, illetve, az utasításokat tudja visszafordítani.
Igen , megnéztem ez így szinte követhetetlen. ááá. Najó végülis nyugvóponton van, azaz minden rendben csináltam is most azonnal másolatot ha valamelyikbe villám csapna, de a komolyabb beavatkozás, módosítás szerintem bajosabb mint újraírni az egészet.
Nekem így áll a PS2-USB átalakító kódom. Maga a kód tökéletesen működik, viszont csak egy kontrollerben van meg, mert a forráskódot elvesztettem, amikor egyszer újratelepítettem a windows-t...
A 16C84 a 16F84 ose volt, es szinten tobbszor irhato. Le lehet tolteni a doksijat mind a kettonek. A 16C84 kisebb RAM memoriaval rendelkezik, de amugy elvileg egyezik a ketto.
Szia, annyi volt a problémám, hogy az adatlapban valahogy nem találtam a 16F627A belső oszcillátor módot, de a dolog érdekessége, hogy a __config _INTRC_IO val lefordul, viszont a pickit2-m meggajdul tőle..Tehát, éetés után a konfiguráció miatt reklamál, utána pedig nem ismeri fel a picet, csak 3-4 újra csatlakozás és vakon törlés után. (már új pickitet akartam építni) De kipróbáltam más piccel és azt égeti rendesen... Lehet hogy nincs is belső rc oszcija a 627A-nak? Üdv!
16F627A Internal oscillator 4MHZ [/quote];----- CONFIG Options --------------------------------------------------
_LP_OSC EQU H'3FEC' ; LP oscillator: Low-power crystal on RA6/OSC2/CLKOUT and RA7/OSC1/CLKIN _XT_OSC EQU H'3FED' ; XT oscillator: Crystal/resonator on RA6/OSC2/CLKOUT and RA7/OSC1/CLKIN _HS_OSC EQU H'3FEE' ; HS oscillator: High-speed crystal/resonator on RA6/OSC2/CLKOUT and RA7/OSC1/CLKIN _EXTCLK_OSC EQU H'3FEF' ; EC: I/O function on RA6/OSC2/CLKOUT pin, CLKIN on RA7/OSC1/CLKIN _INTRC_OSC_NOCLKOUT EQU H'3FFC' ; INTRC oscillator: I/O function on RA6/OSC2/CLKOUT pin, I/O function on RA7/OSC1/CLKIN _INTRC_OSC_CLKOUT EQU H'3FFD' ; INTRC oscillator: CLKOUT function on RA6/OSC2/CLKOUT pin, I/O function on RA7/OSC1/CLKIN _ER_OSC_NOCLKOUT EQU H'3FFE' ; ER oscillator: I/O function on RA6/OSC2/CLKOUT pin, Resistor on RA7/OSC1/CLKIN _ER_OSC_CLKOUT EQU H'3FFF' ; ER oscillator: CLKOUT function on RA6/OSC2/CLKOUT pin, Resistor on RA7/OSC1/CLKIN
Köszi!
Sziasztok,
az lenne a kérdésem, hogy hogyan lehetne azt megoldani aszinkron soros kommunikációval, hogy a PIC-ben egy beérkező adat által okozott megszakításkor a megszakítás rutinban kiolvasni azt az adatot majd vissza is küldeni és ezt a műveletet még 5-ször egymás után gyorsan megismételni ugyanabban a rutinban. A számítógépen CVI-ban fut egy program ami folyamatosan szabályzojelet számol és küldi ki soros porton a PIC-nek (18F4620 + FT232), a küldés úgy megy, hogy kiküld egy bájtot, majd ha az vissza is jött akkor küldi a következőt ugyanígy (összesen 6 bájt). Csak ezzel a módszerrel érkezik meg jól minden adat, ha csak úgy csináltam, hogy kiküldi egymás után a 6 bájtot és nem kér visszajelzést akkor gyakran elszállt a kommunikáció. Azért szeretném, ha a megszakításban egymás után el tudnám végezni 6 beolvasást és visszaküldést, mert ha minden beérkező bájtra generálódik megszakítás akkor nagyon lelassul a kommunikácíó, mert a PIC-ben még sok megszakítás van és azokra is nagy szükség van (4 szervójel szoftveres PWM jel generálása 2 időzítővel, 2 AD konverzió 2ms-onként, szervójel "ramp"-elés egy harmadik időzítővel és a kommunikációs megszakítás). Ebben szeretném a segítségeteket kérni. A PIC programjának ezzel kapcsolatos megszakítása:
Ha az 'i' karakter jött akkor a PC kéri az AD konverziók eredményét, ha a t_x 1-es akkor a main-ben kiküldi azt. A CVI ezzel kapcsolatos része:
Előre is köszönöm.
Idézet: Utánaszámoltál már, hogy ez mennyi idő? Gondolom, hogy nem, mert akkor már tudnád, hogy ez értelmetlenség. „szeretném, ha a megszakításban egymás után el tudnám végezni 6 beolvasást és visszaküldést”
Értem, de így is nagyon lassú, mert a 6 egymás utáni csomag beolvasása és kiírása között is sok idő telik el (kb 100ms mire mind a 6 bájtot kiolvassa majd visszaküldi), és így nem tudom számítógépről vezérelni a szervók pozícióját.
Arról lenne szó, hogy egy távírányítós autóra tettem egy gyorsulásmérő szenzort és ezzel mérem az autó dőlésszögét a PC-n majd kiszámítja a vezérlőjelet a szervóknak és kiküldi azokat, ezáltal a 4 szervó mindig vízszintesen kellene tartsa az autót. A kérdésem az, hogy akkor milyen módon tudnám megvalósítani a gyors kommunikációt?
Ezt a programot ami a szenzorok allapotabol vezerli a szervot, azt kellene a PIC-be egetned, igy nincs is ehhez szukseged a PC oldalra... A PC-t hasznalhatnad iranyitasra inkabb, illetve ha kell parameterek feltoltesere, loggolasra -- pl a PIC felol a PC fele torteno kuldest (is) megoldhatod megszakitasosan, igy az nem blokkolja az alap funkciokat.
Megpróbálom esetleg úgy is, hogy a pic-ben legyen a szabályzás, de mivel ez lenne majd az államvizsga dolgozatom egyelőre PC-n kellett volna megvalósítani, a szenzorból érkező lejeket grafikusan ábrázolni, állományba menteni, többféle szabályzót implementálni és bizonyítani, hogy melyik a jobb.
Akkor arra nincs megoldás, hogy egy megszakításban tudjam lekezelni a 6 bájt beolvasását és visszaküldést?
Idézet: „Akkor arra nincs megoldás, hogy egy megszakításban tudjam lekezelni a 6 bájt beolvasását és visszaküldést?” Dehogynem! Byte-ot mikor elkuldod, akkor a kuldes ideje alatt csinalhatsz barmit is. Mikor az kiment kapsz egy megszakitast es elindithatod a kovetkezo byte-ot, es rogton vissza tersz meintcsak. Nem kotelezo ott varakozni. A masik gondolat pedig, hogy a szervok 20ms-es keretei kozott mindig lesz annyi idod, hogy kiolvasd a szenzort, elkuldd a PC fele, es onnan vissza olvasd. Ha maskepp nem akkor minden keretben csak 1-et, igy 6 keret kell egy teljes korbefordulashoz. Ugy is elegendo lesz a sebesseg, hogy szabalyozhato maradjon a modelled... Megoldas mindig van mindenre...
Hát akkor majd valahogy megoldom, s ha nem akkor így marad.
Köszönöm szépen a segítségeteket!
Azt hiszem megoldódótt a probléma, úgy néz ki, hogy nem teljesen a kommunikáció a hibás, hanem a CVI-ban a függvény hívás, ha az adat küldést egy függvényben (amit beillesztettem kicsivel fentebb) intézem el akkor van szó a belassulásról, ha visszont ugyanott küldöm ki az adatokat ahol a szabályzójelet számolom ki akkor szinte semmit nem lassul a szabályzás.
sziasztok dolgom akadt egy18f2550 es pic el
A PDFSUSB progi a PIC-et felismeri PICDEM FS USB 0 (Boot) eszközként. olvasni tudom ,viszont mikor irni akarom bele a hex. fájlt a következö hibákat dobja: usb write failed error -997:átlapolt I/O művelet van folyamatban -Failed with error 6: a leiró érvénytelen. olvasgattam az oldalon egykét választ rá de eddig még nem sikerült egyikkel se működésre birni a segitségeteket elöre is köszönöm!
Sziasztok!
Két pic16f690 között szeretnék soros kommunikációt megvalósítani. Még soha sem csináltam ilyet. Tudnátok segíteni, hogy hogyan kezdjem el? Még azt sem tudom biztosan, hogy elég-e ha csak szimplán összekötöm az egyik rx-jét a másik tx-jével. Hi-tech C-ben szeretnék programozni.
Rovid tavon elegseges a sima osszekotes. Felkonfiguralod az UART-ot es gyi. Lehet irni a programot.
Hogy érted, hogy felkonfigurálom az uartot. Azt, hogyan kell csinálni? Nézem az adatlapot, de nem egészen értem, hogy akkor most meik registert kell piszkálnom.
Keresd a "To set up an Asynchronous Transmission" és a "To set up an Asynchronous Reception" kifejezéseket az adatlapban. Alattuk pontokba van szedve a szükséges beállítás.
A letölteni kívánt programot a Microchip USB stack MHCPUSB mintaprogramja mellett található rm18f4550 - MCHPUSB Bootload.lkr linker állománnyal kell fordítani - természetesen minden 4550 előfordulást 2550-re cserélve! A lényeg az alábbi sorokban van: eltolja a kódterületet 0x800 bájttal.
A RESET és interrupt vektorok áthelyezését az USB mintaprogramokból vagy a PICCOLO projektemből is ki lehet lesni.
Hali!
18F4550 PIC-el próbálkozom a PICCOLO project alapjain, I2C-n több LM75 hőszenzor és MCP23017 portbővítő (I=60/O=10). Online kommunikáció a PC-vel, CDC USB-vel, küldött adat feldolgozás és visszaküldés VB programmal. Gyors impulzus számlálás miatt a B-port felső 4 bitjének figyelését megszakításba kellett tennem. Ekkor jelentkezett a problémám, amihez a segítséget kérem. Ugyanis esetenként impulzus érkezéskor zavar támad a küldött adatokban és ez természetesen lehetetlené teszi a PC program működését. Milyen megoldással oldható meg a probléma? Üdv. Idézet: Nagy valószínűséggel az interrupt lekezelésénél valami bibi van, azt a programrészt kell tüzetesen átnézni. „Ugyanis esetenként impulzus érkezéskor zavar támad a küldött adatokban”
Akor az egyik 16f690-es RB7-es lábát kel összekötnöm a másik RB5-ös lábával, ugye? Vagy, az RB7-et kell összekötni az RB6-tal? Mert az első a logikus da az adatlp mintha a második lehetőséget mondaná. (EUSART-ot szeretnék csinálni)
Az RB6-tól mit akarsz? RB5 az RX (vevő), RB7 a TX (adó) vonal.
|
Bejelentkezés
Hirdetés |