Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Hány szenzort használsz? Teszel fel kapcsolási rajzot?
Addig keresek neked valamit.
3 szenzort akarok majd használni. De most jelenleg csak 1 van bekötve de az se akar működni. Előbb szeretném életre kelteni ezt az egyet és utána kínlódni a keresgéléssel az 1wire vonalon. Kapcsolást igazán nem tudok feltenni mert próbapanelon van összepakolva a kapcsolás nagy része (mármint a perifériák).
RA0-ra van kötve a DS18B20 középső lába. A középső lábra van még kötve egy 4k7-es ellenállás 5V-al. A jobb oldali lábon +5V, bal oldali lábon pedig GND. Még van egy LCD hozzákötve de ez most jelentéktelen a szenzorhoz képest.
Nekem ez működik. A lényeg látható, hogy hogyan használom fel.
Innen is üdvözletem küldöm Rumcájsz-nak! Ő tudja miért írom. Na erről ennyit.
Köszönöm vicsys így működik. De nem tudom még most se hogy mi lehetett a hiba.
SPI-n keresztül szeretnék két PIC-et összekötni (PIC18F4553), optikailag leválasztva őket. Úgy szeretném megoldani hogy a két mikrovezérlő nyomtatott áramköre teljesen ugyan az legyen és maximum egy kis jumperral kelljen beállítani hogy melyik legyen a mester és melyik a szolga PIC. Az SDO és SDI lábakat sikerült megoldanom, de az SCK leválasztására nincs ötletem. A gond az ugyebár, hogy mint mondtam a két nyáknak azonosnak kell lennie és akármelyik PIC lehet mester.
Az SDI, SDO-t így gondoltam:
Egy másik dolog: Az USB portot hogyan vezessem el a PIC-hez? A D+ és D- lábak közvetlen az USB csatira, a GND a GND-re, az 5V meg nem kell mert van saját tápja az áramkörnek? Mondjuk "ident"-nek használhatnám...
(Nem tudom mi lenne ennek a helyes magyar megnevezése, a Samsung gyárban "ident"-nek nevezik amikor a panel érzékeli hogy be lett dugva egy HDMI, vagy RCA, USB, SCART stb. kábel.) A VUSB-re pedig tényleg csak egy kondi kell a föld felé? Nem kell külső 3,3V?
Szia!
Egy mérőműszernél, tápnál valahogy meg kellene oldani a PC galvanikus leválasztását is - erre ajánlottam a multimasteres I2C-t... Az USB galvanikus elválasztása bonyolultabb, drágább, mint az I2C... Az SPI nem kezeli a több masteres konfigurációt... USB self powered device (saját táppal rendelkező eszköz) kezelésére az USB könyvtár fel van készítve. Az USB tápot (földre húzó ellenállással) egy bemenetre kell kötni. A Vusb -re egy 330 - 470 nF kondenzátor kell csak, a feszültség stabilizátor benne van a pic-ben.
A timernek nem is kell felkeltenie a Sleep üzemmódból. Ezt a következő resetnek kell megtennie.
Idézet: A Microchip "attach sense"-nek (csatlakoztatás érzékelés-nek) nevezi. „Mondjuk "ident"-nek használhatnám...” Használatának módját a PIC18F4550 adatlapjának 17.6.2 (SELF-POWER ONLY) alfejezete írja le. Ezenkívül a PICDEM FSUSB kártyát kellene megnézni (kapcsolási rajz, USer Guide), meg az USB keretrendszer szoftverben azt, hogy a Hardver profilban melyiket kell bekapcsolni az alábbi opciók közül:
Szia!
Persze, ezt el is felejtettem! Milyen sebességű optocsatoló kellene az USB leválasztásához? Idézet: „Az SPI nem kezeli a több masteres konfigurációt...” Nem baj mert csak egy mester lesz és egy szolga. Két mester vagy két szolga nem lehet (ezt majd valahogy ügyesen ki is védem szoftveresen).
Szia!
USB High speed - 480Mbit/s, Full speed - 12Mbit/s, Low speed 1.5Mbit/s. Az optocsatolónak legalább 5-szor gyorsabbnak kellene lennie. 6N134: 10Mbit/s @ 3000 Ft/db
6N137: 10Mbit/s -> 200Ft
---------------------------------------------- Erre van valakinek ötlete? Bővebben: Hozzászólás Idézet: Milyen optocsatoló tudja lebonyolítani a kétirányú adatforgalmat? „Milyen sebességű optocsatoló kellene az USB leválasztásához?” Ha mindenáron az USB kapcsolatot akarod leválasztani, akkor külső USB SIE-t kell használni (pl. MAX3420E), s annak a csatlakozó felületét (SPI) egyszerűbb galvanikusan leválasztani. PIC-PIC kapcsolat esetében pedig UART, RS-485, CAN esetében van egyszerű, standard megoldás az elválasztásra. SPI órajel kétirányú leválasztásra csak azt tudom elképzelni, hogy két, szembekötött leválasztó közül mindig csak az egyiket engedélyezed (az általad említett jumperes irányválasztással szinkronban). Idézet: „Milyen optocsatoló tudja lebonyolítani a kétirányú adatforgalmat?” Na, én azt hittem hogy az egyik éren jön az adat, a másikon megy. Idézet: „PIC-PIC kapcsolat esetében pedig UART, RS-485, CAN esetében van egyszerű, standard megoldás az elválasztásra.” Miért, amit rajzoltam az nem jó? SPI-nél nem kell kétirányú forgalom mert az egyik vezetéken megy az adat a másikon meg visszajön. Idézet: Te magad írtad, hogy a CLK hol erre megy, hol meg amarra... „SPI-nél nem kell kétirányú forgalom mert az egyik vezetéken megy az adat a másikon meg visszajön.”
Szia!
Megnéztem tüzetesebben a programot. Az alábbi helyeken van benne hiba: 1. A sorsol címke után nem olvassa a kód a TMR0-t, hanem írja. 2. és 3. az osztas eljárás visszatérési értékével (retlw 0) felülírja az eredményt két helyen is... 4. A szamok rutin első utasítása:
Ez az utasítás nem a W regisztert növeli, hanem a FSR regiszter tartalma által kijelölt memória rekeszt. Nagyon veszélyes, mert az FSR bármilyen értéket tartalmazhat még táp reset után is. A W és az F szimbólumok a művelet eredménye helyének kijelölésére szolgálnak (0=W azaz a WREG, 1=F azaz a megcímzett memória rekesz). Ne használjuk operandus helyén. A program olvashatóbb, ha a helymegadásnál ezeket a szimbólumokat használjuk csak. A számdékolt műveletet a addlw 1 oldaná meg, ami fölösleges, az addwf PCL,f megteszi.
A sorsol résznél átírtam olvasásra, az osztás eljárás után töröltem a retlw 0 sort és a számok rutin elejéről is töröltem a megadott sort. Sajnos így sem jó. A ledek bekapcsolásnál ugyan úgy felvillannak, a gombnyomáskor nem csinál semmit, csak ha kétszer nyomom meg, akkor is csak csippant egyet. Tehát a kikapcsolás működik a két gombnyomásra.
Szia!
Lehet, hogy nem fogalmaztam világosan: Nem a retlw 0 okozza a problémát, hanem a call osztas utáni sor megint ír az olvasás helyett
A retlw 0 sor kell, törlése további problémákat okoz, a meghívott eljárás nem tér vissza a hívás utáni uatsításhoz.
Most már értem. Ezt is javítottam, de továbbra is ugyan ezt csinálja. Minden más funkciója működik, csak dobást nem szimulál.
Annyira sikerült működésre bírnom, hogy gombnyomásra elkezd csipogni és világít a 3-as lábon lévő LED miután megszűnik a hang az 5-ös lábon lévő LED világít.
Szia!
Ahogy írtam az utóbbi hiba kétszer volt a programban:
Sziasztok!
Adott egy PIC16F877 és a mellékelt egyszerű program, ami elvileg PORTA 4. és 5. bitjeit váltogatja kb. 0.5 sec enként. (4Mhz-es kvarc) Az a gebasz, hogy szimulálva működik, a HW-en viszont nem. Mivel RA4 open drain-es, egy led katódja csatlakozik hozzá, a LED anódja pedig egy 470 ohm-al sorosan +5V-ra. A kérdés: mi nem jó a progiban? A válaszokat előre is köszönöm!
Szerintem az a baj, hogy nincsen beállítva a timer1. A T1CON regisztert az inicializálásnál állítsd be.
Köszönöm a segítséget! Már működik! Úgy ahogy...
Valamiért mindig ugyan azt a számot dobja. a csillagoki együttállása vagy a program hibája okozza?
Hali
Lehet hogy nem rezeg az oszci. Te HS oszcit irtal es 4 MHz kvarcot. ez nem jo parositas. XT kellene. Meg egy dolog: nem tudom hogy mukodott szimulatorban, mert a tmr1 nincs is bekapcsolva, igy a delay rutinbol az eletben sem fog kijonni csak reset eseten. Be kellene kapcsolni a TMR1-et a
Udv Vili
Szia!
Emlékszel még, a Timer0-ra használatát kifogásoltam? A Timer0 nem jár a sleep üzem alatt, így az, hogy mennyivel változik meg az értéke, attól függ, hogy hány utasítást hajt végre a program a futása alatt. Egy léptető regiszteres véletlenszám generátort ajánlanék erről a lapról... |
Bejelentkezés
Hirdetés |