Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Idézet: „Mellesleg kis trükközéssel a PIC12F Timer0 is használható 16 bites timerkén” Na jol van mar ![]() Ill. ahogy emlitetted a 24H-s csaladbol kivalasztani egy megfelelot... Idézet: „kis trükközéssel a PIC12F Timer0 is használható 16 bites timerként” Ja, ezt csak azért említettem, hogy jelezzem: nem kell feltétlenül 5 db PIC12F az 5 db. 16 bites timerhez, mert egynek ott a Timer1, a másiknak meg a Timer0. ![]() A PIC24 azért nyűgös egy cseppet, mert 3,3 V-os és kicsi a kimenetek terhelhetősége (~4 mA). Így egy kicsivel körülményesebb a külső áramkörökhöz történő illesztése. Idézet: „ Ezt majd akkor veszem komolyan,ha bemutatod a forráskódot, meg a csinált #include fájlt! ” Persze nem én csináltam, úgy értettem, hogy a progi könyvtárába bele kellett csempésznem egy delay.h filet és ezt includolni. Tény így most működik minden, ahogy szerettem volna. ![]() Idézet: „Van olyan 18F-es PIC, aminek két PWM kimenete van?” Legjobb tudomásom szerint annak is pont kettő van, amit most építesz be a laminálódba. ![]()
Sziasztok!
Egy olyan kérdésem lenne, hogy írtatok-e már olyat, h lekérdezitek a PIC I2C-s eszközeit? Én próbálkozok ezzel, mert nem látok egy szenzort, de csak annyi van, hogy 0-tól 255 ig elszámol és UART-on ezt kiírja. Ha van ötletetek mit rontottam el azt szivesen fogadom. A kódrészlet:
Idézet: „bele kellett csempésznem egy delay.h filet és ezt includolni” Kelleni ugyan nem kellett, de megteheted... Mivel nem csatoltál be egy mintaprogramot sem, csak találgatni tudok: ez valamelyik, az Interneten keringő delay.h és delay.c, amelyik új függvényeket vezet be? (pl. DelayMs() ) Bővebben: Link A kapott mintaprogramnál egyszerűbb lett volna a __delay_ms(250) függvényhívást két részre bontani, így:
s akkor nem kell(ett volna) sem inkludálni sem deklinálni... ![]() Idézet: „Ha van ötletetek mit rontottam el” A kérdést azzal rontottad el, hogy kihagytad, hogy milyen PIC-ről és fordítóról van szó. (Vagy a topikot tévesztetted el, s ezt a Parafenomének keresetetnek c.topikba szántad ![]() Ha PIC18-ról és MCC18-ról van szó, akkor nézd meg a könyvtári függvények forrását! Úgy látom, hogy pl. a WriteI2C2() függvény már tartalmazza az IdleI2C2(); hívást és a SSP2CON2bits.ACKSTAT vizsgálatát, tehát az előbbit fölöslegesen adod ki, az utóbbit viszont a WriteI2C2() függvény visszatérési értékeként kapod meg (0, vagy -2). Azt most nem látom át, hogy a WriteI2C2(j); mire jó. Nem csak az érvényes címeken kellene végigfuttatni? Nem kellene egy StartI2C() az írási próbálkozás előtt, egy StopI2C2() meg utána?
MCC18 fordító és PIC18F46J50-es kontroller.
Azt szeretném ezzel elérni, hogy megtudjam milyen cimeken vannak a szenzorok, mert ami az adatlapban van, azzal nem látom ![]() Idézet: „MCC18 fordító és PIC18F46J50-es kontroller.” Ok, akkor eltaláltam... Ami a címzést illeti: nézd meg ezt az oldalt! A hullámformából látszik, hogy kell egy idle és egy start szakasz, ezután jöhet egy bájt küldése, az ACK figyelése és a stop bit küldése. Nálad a start és a stop feltétel hiányzik, így semmilyen címre sem fog reagálni semmi! Ami a kiküldött adatbájtot illeti: elvileg 7 bit van a címzésre, a 8. bit az R/W parancsbit. A 7 db címbit egyes kombinációi azonban fenntartottak, azokat ki kellene hagynod!
Köszönöm a választ!
Megpróbálom leprogramozni... Idézet: „ami az adatlapban van, azzal nem látom (0x39 nekem nem tetszik, mert shiftelni kell, de akkor 0x74 és akkor szintén nem látom. Adtak más cimeket is,de azt szeretném, ha láthatnám , hogy milyen eszközök vannak.)” Ha azzal sem latod ami az adatlapban van, es ezzel a scannelos modszerrel sem, akkor nyilvan a programoddal van a gond es nem a cimzessel ![]() Azt pedig vegkepp nem ertem, hogy hogy-hogy nem tudod, hogy milyen eszkozeid vannak? Valamit hackelsz?
Űdv,
Nem hekkelek... ![]() Egy olyan kütyüt probálok összehozni ami kezel I2C-s szenzorokat és van egy SM buszos szenzor is. Az egyik hőmérő TMP101, ezt látom, tudom kezelni is. De van egy fényszenzor, amit nem tudok, Ez TCS3414-es. Ezért szeretném lekérdezni milyen működő címek vannak... ![]()
Sajnos nem megy így sem...
Sziasztok!Az lenne a kérdésem hogy mennyire bajos hálózatról trafo nélkül egy PIC12FXXX-et táplálni,úgy hogy legyen ~12V -is egy kis relenek?Mennyire lenne gond a zavarokkal?(pl:lámpa kapcsolgatás a közelben)
Jó lenne egy rajz,vagy vélemény,hogy megéri e szenvedni vele.5db-ot építenék.
Ha viszonylag állandó a terhelés, akkor nem probléma. Soros kondenzátor az üzemi áram +25%-ra méretezve, majd graetz, puffer, utána valami párhuzamos szabályzó, mint pl. TL431, és arról mehet a kontroller. Namost az a gond, hogy a relé jóval nagyobb áramot fog húzni, mint a kontroller. Nem lehetne triakot használni? Annak a gyujtását lehetne szinkronizálni a hálózatra, és akkor csak kis impulzusokban lehetne nagyobb áram.
Idézet: „0x39 nekem nem tetszik, mert shiftelni kell, de akkor 0x74 és akkor szintén nem látom.” Nem csodálom! Ugyanis 0x39 * 2 = 0x72 (nem 0x74!!!)
Inkább így:
A for ciklusod előtt, ugye, konfiguráltad az I2C2 csatornát? (OpenI2C2() )
Sima 7805-el nem menne a dolog?A triak szerintem megfelelne,60w-os elektronikus transzformatorokat kapcsolna...
Nemjó, mert ha leveszed róla a terhelést, akkor a 7805 előtt felszalad a feszültség és eldurran a 7805. Vagy ha a 7805 elé teszel valamit, ami megfogja a feszültséget 10V körül, akkor az is jó lesz.
Üdv!
A 16F876-tal van egy kis gondom. Nem igazán tudom, hogy mi lehet a probléma. Az eeprom rész összesen 2 bájt-ját akarnám olvasni és ha nem megfellő az érték, akkor írni. Na most az első renben lezajlik, a 2. olvasás is, de a második írás olyan szinten kiakasztja a PIC-et, hogy a program el sem éri a végét (végtelen loop) ... a bankváltó utasításokat 10X leellenőriztem, elvileg nem a bankváltással van a gond. Hozzászólásokat előre is köszönöm! Üdv The_Saint
Sziasztok!
Lenne egy kérdésem az, hogy a PIC-et egy régi PC táppal szeretném ellátni 5v-tal és ha jó tudom akkor a PC táp tud 12v-ot és 5v-ot, úgye jól gondolom? smrtln
Szia!
Igen jól tudod, sőt -12V-ot, -5V-ot és +3.3V-ot is tud. Ezen kívül ha ATX-es a táp akkor készenléti üzemben is ad +5V-ot.
Jól gondolod. De a PIC fogyasztásához felesleges a PC táp, kell egy egyszerű 7-12V-os dugasztáp, és arra egy 7805 stabilizátor és persze a hozzávaló kondenzátorok. Felesleges a nagy tápot zörgetni ilyen kis teljesítményre, ráadásul annak ilyen kis terhelésnél rossz a hatásfoka is. Esetleg ha ATX a táp, akkor a készenléti 5V-os ágát használhatod.
Sziasztok!
Köszönöm a válaszokat, akkor jól gondoltam. "Esetleg ha ATX a táp, akkor a készenléti 5V-os ágát használhatod." Ja és potyo megtudnád mondani melyik az a készenléti ág és hogy kell használni azt? smrtln
Szia!
szinte a gyári írá olvasás rutinok: write_eeprom bcf STATUS,RP0 ; Bank 3 bcf STATUS,RP1 movf eepdat,w banksel EEDATA movwf EEDATA ; write movf eepadr,w ; Address to movwf EEADR ; write to banksel EECON1 ; Bank 3 bcf EECON1, EEPGD ; Point to Data memory bsf EECON1, WREN ; Enable writes bcf INTCON, GIE ; if already enabled, movlw 0x55 ; Write 55h to movwf EECON2 ; EECON2 movlw 0xAA ; Write AAh to movwf EECON2 ; EECON2 bsf EECON1, WR ; Start write operation bsf INTCON, GIE ; if using interrupts, wtw btfsc EECON1, WR ; Wait for goto wtw ; write to finish banksel PORTA return read_eeprom movf eepadr,w banksel EEADR movwf EEADR ; to read from banksel EECON1 bcf EECON1, EEPGD ; Point to Data memory bsf EECON1, RD ; Start read operation banksel EEDATA movf EEDATA,w ; W = EEDATA banksel PORTA return és a két bájt hoz tartozó cucc: get_language_code movlw 0xFF movwf eepadr call read_eeprom movwf language movf language,w sublw 0x04 btfss STATUS,C goto set_language return set_language clrf language bsf language,0 movf language,w movwf eepdat movlw 0xFF movwf eepadr call write_eeprom return get_unit_code bcf STATUS,C movlw 0xFE movwf eepadr call read_eeprom movwf unit movf unit,w sublw 0x02 btfss STATUS,C goto set_unit return set_unit clrf unit movf unit,w movwf eepdat movlw 0xFE movwf eepadr call write_eeprom return a jelenség pontosan a következő: minden rendben, addig amíg a második íráshoz nem kezd, de ha igen akkor az nem zajlik le és az első bájtot is nullára írja hát ennyi...röviden ![]()
Huu... bocs, ez hosszu lett, legközelebb csatolom inkább....sorry
Kis módosítás...nem kinullázza, hanem az FE adatát írja az FF helyre... mintha az EEADR nem módosulna....
Előre is köszönöm ha megfejti valaki.... Üdv! |
Bejelentkezés
Hirdetés |