Fórum témák

» Több friss téma
Fórum » PIC kezdőknek
 
Témaindító: Placi84, idő: Okt 3, 2005
Témakörök:
- A PIC ÖSSZES Vdd és Vss (AVdd és AVss) (tápfeszültség) lábát be kell kötni!
- A táplábak mellé a lehető legközelebb 100nF-os KERÁMIA kondenzátorokat kell elhelyezni.
- Az MCLR lábat, 10kohm-mal fel kell húzni a Vdd tápfeszültségre.
- Külső kvarc használatakor 4MHz-ig XT, a fölött pedig HS konfigurációt kell beállítani.
- Stabilizált tápegységet kell használni, a kapcsoló üzemű "telefon töltő" adapterek okozhatnak hibákat.
- Programozáshoz, használj lehetőleg PICKIT2 vagy 3 programozót. Kerülendő a JDM (soros porti) programozó.
- A PIC adatlapja (PDF), tartalmazza a lábak kiosztását és a PIC minden paraméterét. Az adatlap ingyen letölthető!
- Egyes PIC típusoknál az RA4 nyitott nyelőelektródás (Csak lefelé húz L szintre, H szintet nem ad ki!)
- Ha a PGM lábat digitális ki-/bemenetnek használod, az alacsony feszültségű programozási lehetőséget le kell tiltani.
Lapozás: OK   363 / 1210
(#) nagzso hozzászólása Feb 4, 2013 /
 
Sziasztok!
LCD-t szeretnék működtetni, az RB0-RB4 lábakon, vagy akár melyik lábon össze-vissza (pl.: RB0,RB1,RA2,RC0). Hogyan tudom ezt megvalósítani? "PICula projekt"-ben lévő kódot használtam eddig. Próbáltam át írni, hogy a 4 alsó bit-en működjön, sikertelenül. Jobbra tolást próbáltam használni, de olvastam, hogy ha nem "unsigned", akkor nem úgy tol, ahogy szeretném.
(#) icserny válasza nagzso hozzászólására (») Feb 4, 2013 /
 
Idézet:
„LCD-t szeretnék működtetni, az RB0-RB4 lábakon”

A vezérlő vonalakat bizonyára át tudod írni magad is, az adatkiíráshoz az alábbi sorokat kell átírni a PICula projekt lcd4bit.c mintapéldájában.

  1. #define lcd_dataport  LATB               // A 4 alsó helyiértéket használjuk!
  2. #define LCD_BUSY PORTBbits.RB3;           // Foglaltság jelzése (ha kell egyáltalán)
  3.  
  4. //-- Fél adatbájt írása
  5. void lcd_write_nibble(unsigned char data) {
  6.     lcd_rw = 0;                      // R/W = 0, íráshoz
  7.     lcd_dataport = data & 0x0F;      //**** az alsó félbájtba írunk ******
  8.     lcd_en_pulse();
  9. }


Idézet:
„... vagy akár melyik lábon össze-vissza (pl.: RB0,RB1,RA2,RC0).”

Gondolom, az lcd_write_nibble() függvényt kell átírni.
A hozzászólás módosítva: Feb 4, 2013
(#) nagzso válasza icserny hozzászólására (») Feb 4, 2013 /
 
Ezt próbáltam, azaz átírtam ilyenre, de semmi.
(#) icserny válasza nagzso hozzászólására (») Feb 4, 2013 /
 
Hoppá, át kellett írni ezeket a makrókat is
  1. #define DATA_DIR_RD() TRISB |= 0x0F;      // Adatport olvasásra állítása
  2. #define DATA_DIR_WR() TRISB &= 0xF0;      // Adatport írásra állítása


Idézet:
„Ezt próbáltam, azaz átírtam ilyenre, de semmi.”
Remélem, az lcd_write_nibble() belsejében az adatmaszkot is átírtad 0x0F-re!

További kellemes küzdést! (én csak fejben tudom szimulálni a programodat...)
(#) nagzso válasza nagzso hozzászólására (») Feb 4, 2013 /
 
Ezeket is át kell írni erre, véleményem szerint:
  1. #define DATA_DIR_RD()   TRISB |= 0xF0;      // Adatport olvasásra állítása
  2. #define DATA_DIR_WR()   TRISB &= 0x0F;      // Adatport írásra állítása
Mert ugye most az alsó fél byte-on dolgozok.
Utána ami még kell szerintem:
  1. lcd_write_nibble(data >> 4);    //alsó nibble írása
  2. lcd_write_nibble(data);         //felsö nibble írása
Remélem jól írtam le
(#) nagzso válasza icserny hozzászólására (») Feb 4, 2013 /
 
Te írtad jól:
  1. #define DATA_DIR_RD() TRISB |= 0x0F;      // Adatport olvasásra állítása
  2. #define DATA_DIR_WR() TRISB &= 0xF0;      // Adatport írásra állítása
(#) n_yálastrubadúr hozzászólása Feb 4, 2013 /
 
Sziasztok!
Nem panaszkodom a PRO módban a hi-tech.c jól fordít. Nem igazán tudnám asm-ben sem sokkal rövidebbre írni. De amiért írok az, hogy hogyan lehet változó késleltetést írni. Erre gondolok __delay_us( i ); a fordító ide csak konstansot enged.
(#) icserny válasza nagzso hozzászólására (») Feb 4, 2013 /
 
Idézet:
„Utána ami még kell szerintem:

  1. lcd_write_nibble(data >> 4);    //alsó nibble írása
  2.     lcd_write_nibble(data);         //felsö nibble írása
Valóban, ezt kihagytam a számításból! De hogy ne kelljen az az lcd4_init() függvényt is átaírni, javaslom, hogy az lcd4_write() függvényt hagyd békén, inkább az lcd_write_nibble() függvényt módosítsuk!
Idézet:
„//-- Fél adatbájt írása
void lcd_write_nibble(unsigned char data) {
lcd_rw = 0; // R/W = 0, íráshoz
lcd_dataport = (data & 0xF0)>>4; // az alsó félbájtba írunk
lcd_en_pulse();
}”


Ebben már csak az a hiba, hogy az RB4..RB7 biteket is módosítjuk...
Így tisztességesebb:
  1. lcd_dataport &= 0xF0;
  2. lcd_datarport |=  (data & 0xF0)>>4;
(#) pajti2 válasza benjami hozzászólására (») Feb 4, 2013 /
 
Köszönöm. Így most egy kicsit kevésbé rettegek, mert a jelek szerint tudni fog működni az elképzelésem. Valóban érdekes különben, hogy a régebbi kártyák gyorsabbak.
(#) n_yálastrubadúr hozzászólása Feb 4, 2013 /
 
Sziasztok!
Hi-tech.cben a fordító magától ment!? Ezt értem de azt nemlátom hol tölti mindezt vissza??
  1. 52:                void interrupt my_isr(void){
  2.   0004    00FE     MOVWF 0x7e
  3.   0005    0E03     SWAPF STATUS, W
  4.   0006    00F0     MOVWF 0x70
  5.   0007    080A     MOVF PCLATH, W
  6.   0008    00F1     MOVWF 0x71
  7.   0009    120A     BCF PCLATH, 0x4
  8.   000A    118A     BCF PCLATH, 0x3
  9.   000B    28A4     GOTO my_isr
  10. 53:                
  11. 54:                
  12. 55:                }
  13.   00A4    0871     MOVF 0x71, W
(#) kissi válasza n_yálastrubadúr hozzászólására (») Feb 4, 2013 /
 
Szia!

Nem tudom, de mintha a 13.sorban a PCLATH-ot kezdené visszatölteni !? Mindenesetre előtte ott kellene lennie az ISR-nek!
Steve
(#) n_yálastrubadúr válasza kissi hozzászólására (») Feb 4, 2013 /
 
Igen azt az egyet látom én is. De a Status és a W?
(#) nagzso válasza icserny hozzászólására (») Feb 4, 2013 /
 
Ez nem semmi.... Működik. Mondjuk per-pill még nem értem miért, de csak rájövök.
Köszönöm szépen.
Csak most vettem észre, hogy írtál.
(#) kissi válasza n_yálastrubadúr hozzászólására (») Feb 4, 2013 /
 
Nincs tovább ( a 13.sor alatt ?) ?!
Steve

szerk.: ez így szerintem nem jó egyébként sem, mert a PCLATH előtt GOTO-val megy az ISR-re ( hogy fog visszajönni, onnan is konkrét címmel ?!) !
A hozzászólás módosítva: Feb 4, 2013
(#) n_yálastrubadúr válasza kissi hozzászólására (») Feb 4, 2013 /
 
Nincsen.. Ez van pontosan:
  1. 52:                void interrupt my_isr(void){
  2.   0004    00FE     MOVWF 0x7e
  3.   0005    0E03     SWAPF STATUS, W
  4.   0006    00F0     MOVWF 0x70
  5.   0007    080A     MOVF PCLATH, W
  6.   0008    00F1     MOVWF 0x71
  7.   0009    120A     BCF PCLATH, 0x4
  8.   000A    118A     BCF PCLATH, 0x3
  9.   000B    28A4     GOTO my_isr
  10. 53:                
  11. 54:                }
  12.   00A4    0871     MOVF 0x71, W
  13. 55:                
  14. 56:                const char table[10]={0xED,0xC,0xBB,0x3F,0x5E,0x77,0xF7,0x2C,0xFF,0x7F};
  15. 57:                
  16. 58:                     void main () {
  17. 59:                     init ();
  18.   000F    120A     BCF PCLATH, 0x4
(#) kissi válasza n_yálastrubadúr hozzászólására (») Feb 4, 2013 /
 
Itt valamit nem listáz ki, mert a memóriacím 000B-ről 00A4-re változik a 9-12 sor között !
( én nem használom a HITECH-et! )

Steve
(#) n_yálastrubadúr válasza kissi hozzászólására (») Feb 4, 2013 /
 
Akkor ezek szerint ez így jó? csak nem listázza ki?
(#) kissi válasza n_yálastrubadúr hozzászólására (») Feb 4, 2013 /
 
Szerintem akár jó is lehet, mert a két listázott utasítás között kb.150 memóriahelyet elfoglalt ( hogy mi van benne azt én nem tudom! )!
Steve
(#) n_yálastrubadúr válasza kissi hozzászólására (») Feb 4, 2013 /
 
Észrevettem a címek nem sorrendben vannak. Van hogy meg sincsenek, van hogy valahol felbukkan.
(#) janimester hozzászólása Feb 5, 2013 /
 
Sziasztok valaki le bírná nekem ezt fordítani hex-be mert nekem egy csomó hibát ír ki mplab meg más programok is. Ennek a dolognak lenne a programja fordmérő
Előre is köszönöm a segítségeket és ha a hiba okát is közölné velem valami vagy hogy melyik progival sikerült lefordítania azt nagyon megköszönném.
A hozzászólás módosítva: Feb 5, 2013
(#) Kovabe válasza janimester hozzászólására (») Feb 5, 2013 / 1
 
Szia
Segiteni nem sokat tudok de az oldal közepén ott a HEX file.
(#) n_yálastrubadúr hozzászólása Feb 5, 2013 /
 
Jó napot!
Ismét elővettem az usart-ot. Betartom a Hp41c általi eljárást,de továbbra is előjön a hiba. Azthiszem sejtem mit értek az alatt, hogy leáll. Benne marad a megszakításban. Fogalmam sincsen miért okozza a megszakításban ragadást ha sok byte-ot küldök egyszerre. Már az egész PIR1-et törlöm, de akkor is ottmarad!
(#) Hp41C válasza n_yálastrubadúr hozzászólására (») Feb 5, 2013 /
 
Szia!
PIR1 -ben nem lehet törölni az RCIF bitet.... Ez a bit csak az RCREG kiolvasására törlődik.
(#) n_yálastrubadúr hozzászólása Feb 5, 2013 /
 
Tudom, azt ki is olvasom. A 16f887-es datasheet-je alapján járok el. Azt sem értem, ha a TXEN ki van kapcsolva akkor a vevő miért nem működik. De ha be van akkor is sok byte küldésekor beleragad a megszakításba.
(#) pumpa hozzászólása Feb 5, 2013 /
 
Sziasztok!
Az lenne a kérdésem a PICkit2 gyári próbapanelon a PP1-es poti a Pic16f690-es pic melyik lábára csatlakozik?
(#) kistee válasza pumpa hozzászólására (») Feb 5, 2013 /
 
Az RA0-ra. Az a 2-es láb.
A hozzászólás módosítva: Feb 5, 2013

41301A.pdf
    
(#) Kovabe hozzászólása Feb 5, 2013 /
 
Sziasztok
Onyan kérdésemlenne hogy esetleg valaki vásárolt már ebay-en PIC-et, kicsit szkeptikus vagyok a valodiságával.
(#) n_yálastrubadúr hozzászólása Feb 5, 2013 /
 
Egyszerűen szétvet már az ideg. Assemblyben sem megy. Egyszerűen ottmarad a megszakításban és fogalmam sincsen miért.
  1. org     4
  2.  
  3.         BTFSC   RCSTA,FERR
  4.         BCF             RCSTA,FERR
  5.         BTFSS   RCSTA,OERR
  6.         GOTO    OK
  7.         BCF             RCSTA,OERR
  8.  
  9.         BCF             RCSTA,CREN
  10.         NOP
  11.         BSF             RCSTA,CREN
  12. OK
  13.         MOVFW   RCREG
  14.         MOVWF   dat
  15.  
  16.         retfie
(#) pumpa válasza kistee hozzászólására (») Feb 5, 2013 /
 
Köszönöm az útbaigazítást.
(#) AZA válasza n_yálastrubadúr hozzászólására (») Feb 5, 2013 /
 
Üdv!
Megszakitás flag-et nem törölted.
Következő: »»   363 / 1210
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