Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   601 / 1319
(#) efiscp válasza watt hozzászólására (») Nov 7, 2009 /
 
Le van. Nem a programban, hanem a configuration bits panelon átraktam disabled-re. Gondolom ez nem nagyon számít.
(#) bbalazs_ válasza efiscp hozzászólására (») Nov 7, 2009 /
 
Milyen PIC?
A probapanel fem resze hova csatlakozik?
Probald sima elemrol.
Belso oszci sem megy, akkor nagy gaz van. Elso lepeskent CHIP ERASE, aztan egy
"minden lab kimenet,
minden labra HI szint,
goto vegtelen ciklusba"
tartalmu egyszeru programot beirni (ellenorizni, hogy jo-e)
config biteket belso oszcira es ertelemszeruen beallitani.

Erre lep-e valamit? Ha nem, masik PIC-el megprobalni, mert valoszinuleg ez rossz. Lehet ilyen.

Ha ez jo, akkor irj egy egyszeru villogot, hogy meddig megy. Ha leall, akkor valami kapacitiv problema lehet, de szerintem olcsobb masik PIC-et venni.

Ha megy a villogoval, akkor a hiba mashol van, valoszinuleg a programban...


(#) efiscp válasza bbalazs_ hozzászólására (») Nov 7, 2009 /
 
Megírtam a villogót PORTC-re, szépen villog. Eredetileg is teljesítette a kezdőfeltételeket, meg a főprogramot, de megszakításban viselkedett hülyén. Mindjárt megírom a villogót timer0 megszakításra, aztán ha az is megy, akkor én vagyok a hülye...
(#) efiscp válasza efiscp hozzászólására (») Nov 7, 2009 /
 
Na megszakításban előjön a hiba. Ráadásul az az érdekes, hogy az OPTION_REG-ben az előosztó 011-re van beállítva, és kb 5 másodpercenként invertálódik a kimenet (4 MHz az órajel). Ha van igény, bemásolom a kódot.
(#) Moderátor hozzászólása Nov 7, 2009
 
Van Apróhirdetés részleg, oda legyen szíves mindenki írni az oda tartozókat!
(#) bbalazs_ válasza efiscp hozzászólására (») Nov 8, 2009 /
 
Hat, akkor nezzuk...remelem, asm a kod.
De szerintem, ha atnezed meg egyszer, be fog ugrani a hiba. Vagy ha van keznel egy masik PIC, abba is betoltod es ha ott is rossz, akkor programhiba.
Talan nem torlod a flaget vagy tul gyorsan jonnek a megszakitasok. A regiszterek mentese helyesen tortenik?

(#) efiscp válasza bbalazs_ hozzászólására (») Nov 8, 2009 /
 
Itt a kód, amúgy 16F884

cblock 0x20
seged1
endc

org 0x00
goto init

org 0x04
bcf INTCON,T0IF ;T0IF törlés
movlw b'11111111'
xorwf seged1,W
movwf PORTC
movwf seged1 ;seged1&PORTC invertálás
retfie

init
bsf STATUS,RP0 ;BANK1-be lapozás
movlw 0x00
movwf TRISC ;PORTC kimenet
bsf OPTION_REG,PS0
bsf OPTION_REG,PS1
bcf OPTION_REG,PS2 ;előosztó=011
bsf INTCON,GIE ;GIE 1
bsf INTCON,T0IE ;T0IE 1
bcf STATUS,RP0 ;BANK0-ba lapozás
movwf PORTC ;PORTC=0
movwf seged1 ;seged1=0
goto loop

loop
nop
goto loop

end

Szerk: a tabokat kiszedte a fórum motor, de benne vannak.
(#) trudnai válasza efiscp hozzászólására (») Nov 8, 2009 /
 
Config hogy nez ki? WDT, BOR stb ki van kapcsolva? Kellene bele tenned valami "debug"-ot, hogy resetelodik-e a chip-ed -- azaz ha barmi mas reset esemeny tortenik mint POR, akkor egy LED-et ki kellene gyujtanod.

Amugy az interruptban nincs context savings, ami jelen esetben elmegy hisz a fo ciklusban nem csinalsz semmit, azonban mar ideje-koran erdemes raszokni, hogy az interrupt korrektul van megirva.

A masik aprosag, hogy letezik COMF utasitas is, tehat a
  1. movlw b'11111111'
  2.     xorwf seged1,W

helyett azt irhatnad, hogy:
  1. comf seged1,W


Idézet:
„Szerk: a tabokat kiszedte a fórum motor, de benne vannak.”


1. Elsoszamu okolszabaly, hogy programozashoz sohase hasznalt TAB-ot! Az MPLAB editorjat allitsd at, hogy space-eket tegyen be TAB helyett...

2. Raboksz a "Kod" gomocskara a szerkeszto mezo alatt kozvetlen, az betesz neked egy (code) tagot, ill ha megegyszer raboksz akkor egy (/code) tagot -- nyilvan a kod elejet es veget jelolve... Az elso tagot kicsit meg kell szerkeszteni, es betenni, hogy (code=asm) legyen... Termeszetesen a normal zarojalak helyett szogletes van ott
(#) watt válasza efiscp hozzászólására (») Nov 8, 2009 /
 
Akkor most leírom, hogy mi az a context savings.
A fontos regiszterek mentése a megszakítás lekezelése előtt, majd visszaállítása a végén.

Megtalálod a módját az adatlapban!

A kódot pedig a legegyszerűbben úgy tudod megmutatni nekünk, hogy csatolod fájlként(tallózás), akkor nem marad le semmi.
(#) efiscp válasza trudnai hozzászólására (») Nov 8, 2009 /
 
Ki van belőle kapcsolva minden. Pontosabban a BOR- nál ki lehetett választani, hogy 2,1V-nál reseteljen, ne 4-nél. Az interrputba bele szoktam rakni a W mentést, csak most fölösleges volt. Mindjárt megpróbálkozom a reset jelzéssel.

Egyébként szerintem nem resetel, mert kezdeti feltételnek az van benne, hogy oltsa el a ledeket. Ha nem fogom a panelt, vagy a pic-et, akkor csak megáll, de nem inicializálja magát újra. Mindjárt meglátjuk.
(#) watt válasza efiscp hozzászólására (») Nov 8, 2009 /
 
Idézet:
„Az interrputba bele szoktam rakni a W mentést, csak most fölösleges volt.”

Ez édeskevés. Mondom, hogy nézd meg, hogyan kell!

Csatold akkor a programot teljesen, főleg, ha változtatsz rajta.
(#) efiscp válasza watt hozzászólására (») Nov 8, 2009 /
 
Na beleraktam egy olyat, ha a PCON BOR bit 0, akkor kigyújtja a ledet. Ki is gyullad. Előtte a config bitsben beállítottam a BOD-hoz SBOREN controls BOR fuction-t.

asm.txt
    
(#) watt válasza efiscp hozzászólására (») Nov 8, 2009 /
 
Nagyon ellenjavalt a programózóban megadni a config biteket. Add meg a program elején, ahogy azt kell.

Ha a BOR csináljaa történenet, akkor a LED-ed irreálisan terhel, vagy a tápod nagyon gyenge! Hogy van a LED bekötve?
(#) efiscp válasza watt hozzászólására (») Nov 8, 2009 /
 
Láb-led-200R-GND. Amúgy egy univerzális adapterről van hajtva, ami 3V-ra van lecsavarva. Üresjárásban így majdnem pontosan 5 voltot ad a multiméter szerint.

szerk.: Van itthon egy kiszerelt számítógép-táp, megpróbálhatom eseteg azzal is.
(#) watt válasza efiscp hozzászólására (») Nov 8, 2009 /
 
Azzal a táppal tönkre fogod tenni a PIC-et, valamint az a táp minden terhelésre beesik! Alkalmatlan!

PIC-et csak és kizárólag stabil és szűrt tápegységről szabad járatni! Használj az univerzális tápod után egy 7805-öt a gyári adatlap szerinti szűrésekkel! Az táp IC bemenő fesze legyen minimum 8V, max. 14V. Addig nem is érdemes többet kérdezned, amig ez nincs meg!
(#) efiscp válasza watt hozzászólására (») Nov 8, 2009 /
 
Pillanatnyilag nincs itthon 7085, és valószínűleg vasárnap nem tudok szerezni. Úgyhogy köszi a segítséget, majd valamikor a jövő héten folytatjuk.
(#) bbalazs_ válasza efiscp hozzászólására (») Nov 8, 2009 /
 
Attol fuggetlenul, hogy Wattnak teljesen igaza van, szerintem nem ez lesz a gond. Ha elemrol jaratod, ezt is kikuszobolheted. De koss a leddel sorba egy akkora ellanallast, amilyen nagynal meg eppen meglatod a fenyet, talan az segit. De ha a foprogramban tud villogni, akkor a elbirja a terhelest.

Az interrupban is csak megerositeni tudom, szamos esetben ORIASI szivasok, hajtepeses teboly varhatnak rad egy egyszeru status flag el nem mentese miatt...

A C portot en a helyedben nem teljes inverzionak vetnem ala, hanem siman egy 1-el novekvo

incf seged1

utasitassal latnam el, aztan tapogatnam a portC labakat egy 330 Ohmmal sorbakotott es tapra vagy foldre huzott leddel.

Ilyenkor atfogsz egy 256-os tartomanyt, amikor a led esetleg allonak latszik, de valojaban veszettul villog csak nagy frekivel.

De mondom, tedd at egy masik ugyanilyen pic-be, ha ott is rossz, akkor a hardverhibat kizarhatjuk.
(#) efiscp válasza bbalazs_ hozzászólására (») Nov 8, 2009 /
 
Oké, mindjárt kipróbálom.
(#) efiscp válasza efiscp hozzászólására (») Nov 8, 2009 /
 
470R ellenállásokkal a helyzet változatlan. Ha fogom a panelt, akkor 5 mp-nként növeli a kimenet értékét. Kicseréltem egy szűz picre, de ugyanezt csinálja.
(#) watt válasza efiscp hozzászólására (») Nov 8, 2009 /
 
A PIC táplábain van 100n-s kondi? A 470ohm is nagy terhelést okozhat, ismerve az univ tápok terhelésre változó feszét. Tegyél 1k-t és tegyél a tápra 1000µF-ot, de mielőtt PIC-et tennél rá, mérd meg a feszt, mert lehet, hogy az univ tápban nincs pufferkondi, ami azt jelenti, hogy a fesz jelentősen emelkedni fog a jelenleginél is jobban.

Mindamellett magam ellen beszélek, mert a végén még tönkreteszel valamit azzal a táppal...
(#) efiscp válasza watt hozzászólására (») Nov 8, 2009 /
 
270ľF a legnagyobb kondim, az be van rakva tápszűrésnek (illetve van mellette még dísznek egy 22 nF). A 100nF-osok meg nem mennek bele a panelba, ezért 10nF van a lábakra rakva. 1k ellenállást beraktam, de most ha fogom a panelt, nem csinál semmit a BOR led kigyújtásán kívül.
(#) efiscp válasza efiscp hozzászólására (») Nov 8, 2009 /
 
Kis korrekció, azt csinálja, mint eddig. Csak nem vártam ki az 5 mp-t.
(#) watt válasza efiscp hozzászólására (») Nov 8, 2009 /
 
Akkor vegyél 100nanókat is, meg 7805-t és azokat az alkatrészeket, amiket az adatlapja ír.
Lehet, hogy a paneled is tele van hibás tervezéssel, azért csinál ilyen dolgokat...
(#) kissi válasza efiscp hozzászólására (») Nov 8, 2009 /
 
Szia!

Nem a WDT van bekapcsolva?! Úgy láttam, hogy a segédváltozódat nem inicializálod induláskor!

Steve
(#) kissi válasza kissi hozzászólására (») Nov 8, 2009 /
 
Már nem tudtam rajta változtatni
Láttam, hogy a w-t berakod a segédbe is, de addig már engedélyezted az INT-t, így a W felülíródhat!

Steve
(#) efiscp válasza kissi hozzászólására (») Nov 8, 2009 /
 
Elvileg pár utasítással később inicializálódik a segédregiszter, azalatt nem hiszem, hogy túlcsordul a timer. A WDT ki van kapcsolva.
(#) kissi válasza efiscp hozzászólására (») Nov 8, 2009 /
 
Induláskor TMR0 határozatlan, akár rögtön átbillenhet ( bár ott az előosztó )!

Steve
(#) Stefan hozzászólása Nov 8, 2009 /
 
Valaki megtudja mondani, hogy:
  1. while (1){                         //ez nem megy
  2. if (RC2==0) RC2=1;
  3. else RC2=0;
  4. del();
  5. }


  1. while (1){                 // ez igen
  2. RC2=1;
  3. del();
  4. RC2=0;
  5. del();
  6. }


Fordító: Hi-Tech C
Ez miért van!?
(#) potyo válasza Stefan hozzászólására (») Nov 8, 2009 /
 
Mi van a lábra rákötve?
(#) Stefan válasza potyo hozzászólására (») Nov 8, 2009 /
 
Egy egyszerű tranyó + LED. De ebben a pillanatban sikerült kibogarászni az adatlapból...
Az volt a baja, hogy a láb másodlagos funkciója AN5, és nullázni kelett az ANSEL regiszter vonatkozó bitjét. Mostmár jó. De akkor se értem miért...
A TRIS bit természetesen 0 volt végig.
Következő: »»   601 / 1319
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