Fórum témák

» Több friss téma
Fórum » PIC16F628A - PORTB ledsor probléma
 
Témaindító: unicorn, idő: Feb 26, 2007
Témakörök:
Lapozás: OK   1 / 1
(#) unicorn hozzászólása Feb 26, 2007 /
 
Van egy PIC 16F628A mc-m. van hozzá egy ledsorom, melynek minden ledje a PORTB egy-egy lábára csatlakozik. Mepróbáltam fel és le kapcsolni ezeket a led-eket, azonban van egy kis problémám: az RB1 és RB3 lábakon lévő LED-ek nem akarnak reagálni.
Az RB1-en lévő led folyamatosan világít, az RB3-as folyamatosan nem világít.
Segítsen, akinek van valami ötlete.

A kód, amely a villogtatásért lenne felelős:

LIST P=PIC16F628A

#INCLUDE

__CONFIG _PWRTE_ON & _MCLRE_ON & _BODEN_OFF & _LVP_OFF & _WDT_OFF & _INTOSC_OSC_NOCLKOUT

ORG 0X0000
GOTO START

ORG 0X0004


START
BSF STATUS,RP0 ;BANK1
CLRF TRISB
BCF STATUS,RP0 ;BANK0
CLRF PORTB
LOOP
BCF STATUS,RP0 ;BANK0
CALL INVERTLED
CALL DELAY1S
GOTO LOOP


INVERTLED
COMF PORTB,F
RETURN


(A "CALL DELAY1S" egy rutin, ami csak a W regisztert írja, tehát azzal nem hiszem, hogy gond lehet).
(#) Topi hozzászólása Feb 26, 2007 /
 
régen ASM-eztem de ha így csinálod akkor is?

  1. LOOP
  2. MOVLW   0x00
  3. MOVWF   PORTB
  4. CALL    DELAY1S
  5. MOVLW   0xFF
  6. MOVWF   PORTB
  7. CALL    DELAY1S
  8. GOTO    LOOP
(#) eSDi válasza unicorn hozzászólására (») Feb 26, 2007 /
 
Nem nagyon vágom az Assembly-t, de az nem lehetséges, hogy arra a két lábra a PIC-nek valamelyik másik modulja van rákonfigurálva és nem csak sima I/O-nak vanak beállítva azok a lábak? Az is előfordulhat, hogy egy kicsit már meghalt szegény PIC.... Nálam ha túlfeszt kapott az a bizonyos láb, akkor csinált ilyeneket...
(#) Topi válasza eSDi hozzászólására (») Feb 26, 2007 /
 
Mondjuk én alapból kiszedném az ORG 4et... Nem kell átlépni interruptba.
Elvileg egyébként nincs rákonfigolva semmi, de meg kell nézni a 16F628-nak az adatlapját és lehet hogy egy INDF regiszterrel kellene hívni egy ZERO_RAM-ot.
Akkor tuti nem vész össze semmivel.
De én 90%-osra mondom hogy HW hiba. Magyarul meghalt a PIC. RB3-at még meg tudnám magyarázni mivel az a LVP láb is. Low Voltage Programming. Szal ha LVP programozót használsz / próbapanelod / tesztlapod fogja az RB3-at akkor még az is lehet...
(#) Topi válasza Topi hozzászólására (») Feb 26, 2007 /
 
Tévedtem 16F628-nak RB4 az LVP-je
(#) MaSTeRFoXX válasza unicorn hozzászólására (») Feb 26, 2007 /
 
A program az jó, hacsak a delay1s nem akad ki valamiért....
Szimulátorban próbáltad a delay1s részt?

Milyen progival programozod?
Ha ICproggal programozol akkor ha felkínálja az LVP pipát akkor azt szedd ki, (nálam így csinált hülyeségeket a 16f871)

Egyébként szerintem hardver hiba van
(#) Norberto válasza unicorn hozzászólására (») Feb 26, 2007 /
 
A megoldás szerintem végtelen egyszerű; körbe kéne nézni a COMF utasítás portáján! Ezt írja az adatlapban:

"The contents of register 'f' are
complemented. If 'd' is 0 the
result is stored in W. If 'd' is 1 the
result is stored back in register
'f'."

A szabványos utasításformátum pedig:

COMF regiszter, amit komplementálni szeretnél, d

>>> ahol d egy 2 bites érték.

Ha 0 az értéke, akkor a komplementált tartalom a W regiszterbe íródik. Ha d értéke 1, akkor abba a regiszterbe írja vissza az eredményt, amiről adott esetben szó van.

Szerintem ez lehet talán a hiba. Én azt nem tudom, hogy nálad a COMF parancsban a NAGY F betű mit jelent?
(#) MaSTeRFoXX válasza Norberto hozzászólására (») Feb 26, 2007 /
 
Érdekes, pedig nálam a szimulátorban úgy futott ahogy kell

Ezt a Comf utasítást nem ismertem eddig :no:
(#) unicorn válasza Topi hozzászólására (») Feb 27, 2007 /
 
Köszönöm a sok választ, most sorbaveszem:

Topi: kipróbáltam, sajnos ez nem oldja meg a problémát.
(#) unicorn válasza eSDi hozzászólására (») Feb 27, 2007 /
 
Megnéztem a kapcsolási rajzot, amit kaptam a kütyü mellé, és úgy látom, hogy se az RB1-re, se az RB3-ra nincs ráépítve más...
Van rajta:
RB3-on: van egy HD44780-as LCD modul üzemmódválasztás lába (RS), de most nincsen rádugva.
Az RB1-en pedig egyáltalán nem találtam semmit...

A HW hibát teszteltem: betettem egy másik IC-t, ugyanaz a helyzet.
(#) unicorn válasza Topi hozzászólására (») Feb 27, 2007 /
 
Az org 4 azért maradt bent, mert a hibát keresve egyre rövidítettem a kódot.
Azt hiszem, hogy az INDF-es dologgal azt akartad mondtani, hogy törölni kéne a memóriát. Szerintem ez se lehet probléma, mert a fontos regisztereket úgyis beállítja induláskor.
(#) unicorn válasza MaSTeRFoXX hozzászólására (») Feb 27, 2007 /
 
A delay1s nem csinál mást, mint egy háromszorosan egymásba ágyazott ciklusban a w regisztert lépteti. Így érem el az 1 sec várakozást. Tudom, hogy nem elegáns, de a probléma megkereséséhez ez elegendő.

Hogy szimulátorban próbáltam-e? Nem... azt hogyan kell?

A programot MPLAB-ban (ASM) írom és fordítom, aztán IC-proggal égetem.

Nem LVP-vel írom (kipróbáltam, úgy aztán végképp nem is működik).
(#) unicorn válasza Norberto hozzászólására (») Feb 27, 2007 /
 
A nagy F érétke 1. Ezt a konstanst az MPLAB include-ja nyujtja. Így kicsit olvashatóbbá válik a kód:

COMF PORTB,W -> W-be teszi
COMF PORTB,F -> PORTB-be teszi

De ez tuti jól működik, mert a többi led villog, csak ez a kettő makacskodik.
(#) unicorn hozzászólása Feb 27, 2007 /
 
Holnap melóhelyen bescannelem a kapcsolási rajzot, amit kaptam a kütyü mellé és feltöltöm. Talán találtok rajta olyat, amit én nem vettem észre.
(#) Frankye válasza unicorn hozzászólására (») Feb 27, 2007 /
 
Banális (lehet), de nem a LED hibás?
(#) unicorn válasza Frankye hozzászólására (») Feb 27, 2007 /
 
Nem hiszem, mert néha egy picit felvillan az a LED, amelyik nem akar világítani. Amelyik világít pedig gondolom, hogy nem hibás, hiszen világít
(#) unicorn hozzászólása Feb 27, 2007 /
 
Felteszem a mellékelt kapcsolási rajzot. Ez alapján van újabb ötletetek?

PICegeto.jpg
    
(#) Frankye válasza unicorn hozzászólására (») Feb 27, 2007 /
 
Nyertél!

:lama: voltam, bocs!
(#) szabi_o hozzászólása Feb 27, 2007 /
 
Próbáld meg így:


LIST p=16F628
include "P16F628.inc"

__CONFIG _PWRTE_ON & _MCLRE_ON & _BODEN_OFF & _LVP_OFF & _WDT_OFF & _INTOSC_OSC_NOCLKOUT


org 0x0000

movlw 0x07
movwf CMCON ;komparatorok kikapcsolasa!!!

bsf STATUS, RP0
movlw b'00000000'
movwf TRISB
bcf STATUS, RP0

Loop
movlw 0xff
movwf PORTB

CALL DELAY1S

movlw 0x00
movwf PORTB
goto Loop

end


tehát a komparátorok ki vannak kapcsólva.
Azt még ellenőrizd le, hogy a Config-ek jól vannak-e beállítva.
(#) szabi_o hozzászólása Feb 27, 2007 /
 
ja, és még egy CALL DELAY1S a goto Loop elé, vagy komplementálsz.
(#) unicorn válasza szabi_o hozzászólására (») Feb 27, 2007 /
 
Mindenképpen kipróbálom. Eddig így csináltam:

CLRF CCP1CON

Ezt írja a doksi az CCP1CON alsó 4 bitjéről:
0000 = Capture/Compare/PWM off (resets CCP1 module)

Tehát úgy gondoltam, hogy ez a komparátor modul kikapcsolása. Igazából nem értem, hogy miért van ez a második regiszter, hogy ugyancsak kikapcsolja a komparátort. Megnézem otthon, remélem, hogy megoldja legalább az egyik LED problémáját.
(#) miklajos válasza unicorn hozzászólására (») Feb 27, 2007 /
 
Szia mostmár kicsit más a helyzet mert, te a digitális komparátort piszkáltad nem az analóot ami a PORTA-n van. Bár igazábol ha nem használod nem csinál semmit.
(#) Norberto válasza miklajos hozzászólására (») Feb 27, 2007 /
 
Így is van. Ha a PIC lábát kimenetként konfigurálod, minden, bemenetre csatlakozó belső eszköz leválasztódik az adott lábról...így a komparátor-modul is.
(#) unicorn válasza Norberto hozzászólására (») Feb 27, 2007 /
 
Ezt jó tudni.
(#) raron hozzászólása Feb 28, 2007 / 4
 
Az RB1 és RB2 az USART lábat. próbáld meg ezt is kikapcsolni. (RCSTA.7 = 0)
Az RB3 pedig a CCP1 lába. (clrf CPP1CON)
Ha nem megy, akkor próbáld csak ezeket a ledeket bekapcsolni. (bsf PORTB.1)

Ha ez se megy, akkor van itt egy futófény teszt progi: http://www.freeweb.hu/fairco/pic/5/futofe2.zip
Le kell forditani, és égetni. Ha az MPLAB nak nem tetszik, akkor keress rá az MPLAB könyvtárába (c:/program files/microchip ...) az MPASMWIN szóra. ez forditja ténylegesen.

Sok sikert!
(#) unicorn válasza raron hozzászólására (») Márc 1, 2007 /
 
Köszi, kipróbálom.
(#) ha1drp hozzászólása Márc 10, 2007 /
 
"Ha a PIC lábát kimenetként konfigurálod, minden, bemenetre csatlakozó belső eszköz leválasztódik az adott lábról...így a komparátor-modul is."

Én is kipróbáltam, nálam nem ez történt.

Kell a CMCON = 7

Egyébként érdekes, nekem mikor az egész portot egyszerre (értsd: 8bit) irtam működött a progi, mikor azonban egy bitet ( BCF PORTB,x) próbáltam csak változtatni az egész port teljesen megbolondult. Ez hasonlóak tünik a felvetett problémához képest. A fent említett komparátor kikapcsolása azonban mindent megoldott.

Más: A CCP modul-nak semmi köze az analóg komparátorhoz
(#) devil2006 hozzászólása Dec 22, 2007 /
 
Helló!

Bocsi! Tudom nem is ide tartozik, meg nem is 628A hanem 627-s PIC!

De valaki tudna segíteni MPLAB-ba... szóval lenne 1 konkrét elképzelésem csak nem tudom megvalósítani! RA1-n kéne kiadni jelet... 3 gombnak megfelelően különböző periódusidejűt 50% kitöltési tényezőűt.... RB0 RB1 RB2 vannak agombok és alapból magasba vannak a gomb lenyomására húzzuk le 0-ba.

Előre is köszi és mégegyszer bocsi!
Következő: »»   1 / 1
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