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   284 / 1210
(#) Pepebá válasza Hp41C hozzászólására (») Júl 20, 2012 /
 
Hali!
Köszi az infót, a buffer törlésére milyen lehetőség van?
Üdv.
(#) AZA válasza Hp41C hozzászólására (») Júl 20, 2012 /
 
Keresgéltem visszafelé,de nem találtam.Van úgy hogy nem látni a fáktól az erdőt.
(#) Hp41C válasza Pepebá hozzászólására (») Júl 21, 2012 /
 
Szia!

- A vételi buffereket csak induláskor, vagy menet közbeni újrakezdéskor kell törölni. Addig kell olvasni az RCREG -ből ill. a getsUSBUSATR() függvénnyel, amig a RCIF jelez ill. a visszaadott karakterek száma 0 lesz. Az ürítés alatt vett karaktereket el lehet dobni.
- Egy másik megoldás, ha egy saját buffert hozol létre. A vételi rutinok ebbe a saját bufferbe teszik a vett karaktereket. Akkor törlöd a tartalmát, amikor kell.
- További lehetőség, hogy egy protokoll szerinti táviratokat küldesz, fogadsz. a táviratok felépítését az avó és a vevő oldal is ismeri. A vevő az adatok vétele kezdetén egy távirat kezdetet vár, ha megjött veszi a távirat további részét, a végét felismeri. Ekkor újra a távirat kezdetet várja. Az esetlegesen vett de nem távirat kezdetéhez tartozó adatokat eldobálja. Ha a távitat értelmezése során hibára fut a vevő, megintcsak a távirat kezdetét várja.
- Adási puffer a programozó kezében van, akkor törli, amikor óhajtja.
(#) trudnai válasza zenetom hozzászólására (») Júl 21, 2012 /
 
Idézet:
„Ezzel a mintával az MPLAB SIM nulláza a PC felső bájtját, és oda ugrik, ami az alsó bájtban van.”


Egy 8 bites rendszerben max 8 bitet tudsz egyszerre kezelni, ezert a tobbi bitet mashonnan kell feltolteni. A Microchip ezt ugy oldotta meg, hogy egy PCLATH es PCLATU nevu regiszterekben tarolja a tobbi bitet, de azok csak akkor toltodnek at a PCH es PCU reszekre, mikor a PCL-t irod (hisz ha korabban tenned, akkor a program szal azonnal elvandorolna Gyorbol Kiskunfelegyhazara...)

Tehat elobb a PCLATU : PCLATH -t kell feltolteni, majd mikor irod a PCL-t, akkor a PCU : PCH : PCL teljes tartalma fog valtozni. Ezt szerintem az adatlap targyalja, de az a minta amit emlegetsz az elegge leegyszerusitett es nem is mukodik ahogy arra mar rajottel, mivel sem a PCLAU : PCLAH -val nem foglalkozik, sem pedig a laphatar kezelessel.

Ha teljesen korrektul szeretned megvalositani, akkor igy kellene megcsinalnod (bar az a pelda 18F-re van irva, kis modositassal 12F/16F-en is mukodik):

Bővebben: Link
(#) zenetom válasza trudnai hozzászólására (») Júl 21, 2012 /
 
Köszönöm szépen!
(#) Pepebá válasza Hp41C hozzászólására (») Júl 21, 2012 /
 
Hali!
Köszönöm, azt hiszem értem. Viszont azon (biztos egyszerű) dolgot, hogyan lehet törölni a létrehozott saját buffert, nem tudom.
Ehhez kérek segítséget.
Üdv.
(#) Hp41C válasza Pepebá hozzászólására (») Júl 21, 2012 /
 
Szia!

Minek az egyes adatokat törölgetni?
  1. // Változók
  2.   unsigned char UARTTransmitBuffer[32];
  3.   unsigned char UARTReceiveBuffer[32];
  4.  
  5.   near BYTE UARTTransmitBufferChars, UARTReceiveBufferRp,  UARTReceiveBufferWp;
  6.   near BYTE UARTReceiveBufferChars,  UARTTransmitBufferRp, UARTTransmitBufferWp;
  7.  
  8. // A buffer törlése, azaz elkönyveljük, hogy nincs benne adat...
  9.   UARTTransmitBufferChars = 0;
  10.   UARTReceiveBufferChars = 0;
  11.   UARTReceiveBufferRp = 0;
  12.   UARTReceiveBufferWp = 0;
  13.   UARTTransmitBufferRp = 0;
  14.   UARTTransmitBufferWp = 0;
(#) Panzer576 hozzászólása Júl 21, 2012 /
 
Helló!
Most foglalkozom először 18-as picel, egész pontosan PIC18F1320-al, és nem tudom írni az i/o-kat!
Nem tudok semmit kitenni a lábakra, és így nem megy az LCD-sem róla.
Valaki meg tudná nézni?
Illetve olvastam erről a LAT-regiszterről, tehát, ha olvasom a PORTA-t mondjuk akkor LATA-t kell helyette, de írni tudom közvetlen? Vagy hogy van ez?
Köszi előre is!

Teszt_18.asm
    
(#) Balagemann2031 válasza icserny hozzászólására (») Júl 21, 2012 /
 
Hello! Megmértem a feszültséget a VUSB kivezetés és a VSS pontok között, és nincs feszültség, (itt kellene 3,3V nak lennie?) a kondi pedig ott van és nem látszik rajta sérülés. Zárlatok nincsenek, egyébként, és az oszci jó.
(#) zenetom válasza Panzer576 hozzászólására (») Júl 21, 2012 /
 
Szia!
Az I/O lábaknál ha írni akarsz a kimenetre, akkor a LATx-re kell írni (pl.: BSF LATB,2), ha pedig a portlábat akarod beolvasni, akkor PORTx regisztert kell olvasni (pl.: MOVF PORTA,W).
Itt részletesen le van írva mi-hogy van: Az I/O portok vezérlő regiszterei. A "A PORTx regiszterek" alatti szövegben van a lényegi rész.
(#) Panzer576 válasza zenetom hozzászólására (») Júl 21, 2012 /
 
Köszönöm, megnézem!
(#) Hp41C válasza Panzer576 hozzászólására (») Júl 21, 2012 /
 
Szia!

Ekkora sebességnél nem számít, hogy a LAT vagy a PORT regisztert írjuk...
Egy helyen nem mindegy:
  1. LCD_ENGEdELy
  2.   MOVWF  portb
  3.   BSF  porta,4
  4.   CALL  IDO
  5.   BCF  porta,4
  6.   CLRF  portb
  7.   RETURN

Itt sem az a baj, hogy egy port különböző bitjét írjuk, hanem az, hogy nem tartod be az adatelőkészítési időt.
Idézet:
„Data set-up time tDSW 195”
(#) Panzer576 válasza Panzer576 hozzászólására (») Júl 21, 2012 /
 
Megnéztem, átírtam, hogy minden írás latx-re minden olvasás portx-re menjen, és a PIC-et is kicseréltem egy másik ugyan ilyenre hátha az a rossz, de semmi.
Talán a konfigurációm rossz.

config.png
    
(#) Panzer576 válasza Hp41C hozzászólására (») Júl 21, 2012 /
 
Köszi! Megnézem ezt is!
(#) zenetom válasza Panzer576 hozzászólására (») Júl 21, 2012 /
 
Az MCLR láb fel van húzva 10k ohmmal tápfeszültségre?
Az alul/felülcsordulási reset (STVR) be van kapcsolva, ha nincs rá szüksség, akkor kapcsold ki!
Szerk.: az RA4 Open Drain kimenet, vagyis nem tud tápfeszültséget kiadni, csak testre tudja lehúzni a kimenetet!
(#) Panzer576 válasza zenetom hozzászólására (») Júl 21, 2012 /
 
igen fel van húzva, ra4-re raktam szintén 10kohmot a vdd-re, hogy a + is megjelenjen, stvr-t kikapcsoltam, de sajnos még mindig nem megy, raktam egy LED-et ra0-ra, és az inicializálás után be kapcsolom, de nem világít.
(#) zenetom válasza Panzer576 hozzászólására (») Júl 21, 2012 /
 
Kapcsold ki még a PWRT-t és a BOR-t is.
Ha most ismerkedsz a 18F-es PIC-ekkel, akkor az elején könnyebb programokat csinálj, mert könnyű elveszni a rengetegben.
Fel töltenéd a LED kapcsolós programot?
(#) Panzer576 válasza zenetom hozzászólására (») Júl 21, 2012 /
 
Kikapcsoltam, persze feltöltöm!
PIC-el 3 éve foglalkozom, csak eddig 16-osokkal, ez az 1. 18-asom, egy labortápnak lenne a kijelzője egyébként.

Teszt_18.asm
    
(#) Panzer576 hozzászólása Júl 21, 2012 /
 
Ha kell odaadom a kapcsolási rajzot is, proteusban van!
(#) zenetom válasza Panzer576 hozzászólására (») Júl 21, 2012 /
 
Nem jól konfigoltad az A/D-t.
  1. MOVLW B'01111101'
  2. MOVWF ADCON1;LATA0-1 ANALÓG, A TÖBBI DIGITÁLIS

Ezzel a kóddal az RA1-et állítottad analóg porttá, alatta pedig az ADCON0-ba az RA0 van beállítva analóggá.
Szóval az ADCON0-ba ezt kell betölteni, ha az RA1-et akarod analóggá állítani:
  1. MOVLW b'00000101'
  2. MOVWF ADCON0

Próbáltad az MPLAB SIM-et? Azzal elég jól le lehet szimulálni a programot lépésről lépésre.
(#) Panzer576 válasza zenetom hozzászólására (») Júl 21, 2012 /
 
Igen, azt tudom, 2 csatornán fog mérni, és ra0 és ra1 is analóg lesz, csak most a led-et ráraktam ra0-ra, azért állítottam vissza.
Néztem az MpLab SIM-et, és szerinte is működnek a lábak...
Sajnos a valóságban nem kapcsol fel semmi.
(#) Panzer576 hozzászólása Júl 21, 2012 /
 
Na de még ez sem megy rajta!
IDO
MOVLW .255
MOVWF DeLAY1
IDO2
MOVLW .255
MOVWF DELAY2
IDO3
DECFSZ DELAY2,F
GOTO IDO3
DECFSZ DELAY1,F
GOTO IDO2
RETURN

CIKLUS
bsf lata,0
call ido
bcf lata,0
call ido
goto ciklus
(#) icserny válasza Balagemann2031 hozzászólására (») Júl 21, 2012 /
 
Idézet:
„Megmértem a feszültséget a VUSB kivezetés és a VSS pontok között, és nincs feszültség, (itt kellene 3,3V nak lennie?)”
Igen.
(#) zenetom válasza Panzer576 hozzászólására (») Júl 21, 2012 /
 
De a LED az elején a LATA0-n van, ami egyben az analóg csatorna is, tehát ha az analóg csatorna van bekapcsolva, a LED nem fog világítani.
Elég nagy a program, ezt külső szemmel átbogarászni nagyon sok időbe telne.
(#) Panzer576 válasza zenetom hozzászólására (») Júl 21, 2012 /
 
visszakapcsoltam digitális kimenetre.
Nem is kértem, hogy az egészet nézd át, de nem is hiszem, hogy a progi rossz lenne, mert a szimulációban fut, csak olyan, mintha nem indulna el az oszcillátora. Már az elején nem csinál semmit.
(#) Panzer576 válasza Panzer576 hozzászólására (») Júl 21, 2012 /
 
de ez a progi sem megy:
(#) Pepebá válasza Hp41C hozzászólására (») Júl 21, 2012 /
 
Hali!
Köszi. A vételi buffert azért akarom törölni mert folyamatosan figyelem egy eszköz által küldött adatokat és azt szeretném elérni, ha az eszköz nem küld adatot a buffer is üres legyen.
Mert a vett adatokat tovább küldöm a PC-nek és próbálom megfejteni a küldeményt. (az eredeti vevő meghibásodott és a kütyüt meg nem akarom eldobni)
Üdv.
(#) zenetom válasza Panzer576 hozzászólására (») Júl 21, 2012 /
 
Nálam ez működik proteusban, bár nálam mivel megkülönbözteti a kis-nagybetűket az MPLAB, átírtam a regisztereket nagybetűsre.
Viszont szerintem szerencsésebb a kódban beállítani a konfigbiteket, mert az tuti ott lesz.
(#) mrobi hozzászólása Júl 21, 2012 /
 
Sziasztok. Kezdésnek melyik mplab-ot ajánljátok? Múltkor írtátok itt a fórumon hogy a legújabb verzióinak ilyen-amolyan hibái vannak. Melyik az a verzió amelyikkel nincsenek olyan nagy gondok?
(#) Panzer576 válasza zenetom hozzászólására (») Júl 21, 2012 /
 
Proteusban nálam is, de az igazi PIC-en nem megy!
Következő: »»   284 / 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