Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   765 / 1320
(#) vicsys válasza atideath hozzászólására (») Jún 28, 2010 /
 
Hány szenzort használsz? Teszel fel kapcsolási rajzot?
Addig keresek neked valamit.
(#) atideath válasza vicsys hozzászólására (») Jún 28, 2010 /
 
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.
(#) vicsys válasza atideath hozzászólására (») Jún 28, 2010 /
 
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.
(#) atideath válasza vicsys hozzászólására (») Jún 28, 2010 /
 
Köszönöm vicsys így működik. De nem tudom még most se hogy mi lehetett a hiba.
(#) vicsys válasza atideath hozzászólására (») Jún 28, 2010 /
 
Nincs mit.
(#) Attila86 hozzászólása Jún 28, 2010 /
 
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:

DSCF5454.JPG
    
(#) Attila86 hozzászólása Jún 28, 2010 /
 
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?
(#) Hp41C válasza icserny hozzászólására (») Jún 28, 2010 /
 
Bocsánat elnéztem a típusszámot...
(#) Hp41C válasza Attila86 hozzászólására (») Jún 28, 2010 /
 
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.
(#) hadnagyakos válasza Hp41C hozzászólására (») Jún 28, 2010 /
 
A timernek nem is kell felkeltenie a Sleep üzemmódból. Ezt a következő resetnek kell megtennie.
(#) icserny válasza Attila86 hozzászólására (») Jún 28, 2010 /
 
Idézet:
„Mondjuk "ident"-nek használhatnám...”
A Microchip "attach sense"-nek (csatlakoztatás érzékelés-nek) nevezi.

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:
  1. #define USE_SELF_POWER_SENSE_IO
  2. #define USE_USB_BUS_SENSE_IO
(#) Attila86 válasza Hp41C hozzászólására (») Jún 28, 2010 /
 
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).
(#) Hp41C válasza Attila86 hozzászólására (») Jún 28, 2010 /
 
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
(#) Attila86 válasza Hp41C hozzászólására (») Jún 28, 2010 /
 
6N137: 10Mbit/s -> 200Ft

----------------------------------------------

Erre van valakinek ötlete? Bővebben: Hozzászólás
(#) icserny válasza Attila86 hozzászólására (») Jún 28, 2010 /
 
Idézet:
„Milyen sebességű optocsatoló kellene az USB leválasztásához?”
Milyen optocsatoló tudja lebonyolítani a kétirányú adatforgalmat?

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).
(#) Hp41C válasza icserny hozzászólására (») Jún 28, 2010 /
 
Szia!

Az I2C kétirányú vonalaira van megoldás...
(#) Attila86 válasza icserny hozzászólására (») Jún 28, 2010 /
 
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.
(#) Attila86 válasza icserny hozzászólására (») Jún 28, 2010 /
 
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.
(#) icserny válasza Attila86 hozzászólására (») Jún 28, 2010 /
 
Idézet:
„SPI-nél nem kell kétirányú forgalom mert az egyik vezetéken megy az adat a másikon meg visszajön.”
Te magad írtad, hogy a CLK hol erre megy, hol meg amarra...
(#) Hp41C válasza hadnagyakos hozzászólására (») Jún 28, 2010 /
 
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:
  1. incf W,1

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.
(#) hadnagyakos válasza Hp41C hozzászólására (») Jún 28, 2010 /
 
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.

dobokocka.asm
    
(#) Hp41C válasza hadnagyakos hozzászólására (») Jún 28, 2010 / 1
 
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
  1. movfw  timer  ; előkészítés a véletlenszám osztásához
  2.         call osztas ; osztási maradék a szam_0 változóban
  3. ; Hiba 2.
  4. ;       movwf szam_0 ; w-ban (0...11) ; Felülírja a szam_0-t az osztas visszatérési értékével - 0 val.
  5.         movf  szam_0,w ; w-ban (0...11)
  6.         call  szamok ; konvertálás (egyes-hatos)


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.
(#) hadnagyakos válasza Hp41C hozzászólására (») Jún 28, 2010 /
 
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.

dobokocka.asm
    
(#) hadnagyakos válasza hadnagyakos hozzászólására (») Jún 28, 2010 /
 
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.
(#) Hp41C válasza hadnagyakos hozzászólására (») Jún 28, 2010 /
 
Szia!
Ahogy írtam az utóbbi hiba kétszer volt a programban:
  1. jmp1:
  2.  
  3.         ; véletlenszám generálás (ez csak a villogás miatt kell)
  4.         call sorsol ; szám: 0...11 a szam_0 változóban
  5. ; Hiba 3.
  6. ;       movwf szam_0 ; w-ban (0...11) ; Felülírja a szam_0-t az osztas visszatérési értékével - 0 val.
  7.         movf szam_0,w ; a dobott érték kijelzése
  8.         call szamok ; konvertálás a LED-ek portra kötése szerinti fotmára
(#) cape-t hozzászólása Jún 28, 2010 /
 
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!

RA4proba.asm
    
(#) miklosch válasza cape-t hozzászólására (») Jún 28, 2010 /
 
Szerintem az a baj, hogy nincsen beállítva a timer1. A T1CON regisztert az inicializálásnál állítsd be.
(#) hadnagyakos válasza Hp41C hozzászólására (») Jún 28, 2010 /
 
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?
(#) vilmosd válasza cape-t hozzászólására (») Jún 28, 2010 /
 
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
  1. BSF T1CON, TMR1ON
utasitassal.
Udv Vili
(#) Hp41C válasza hadnagyakos hozzászólására (») Jún 28, 2010 /
 
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...
Következő: »»   765 / 1320
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem