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 Akkor mar inkabb vesz az ember egy 16F1827-eset es annak van 4db 8 bites es egy db 16 bites timere, a 8 bitesekkel megszakitassal lehet novelni a bitszamot. 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 (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.) 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 |