Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   182 / 1320
(#) szilva válasza pepe hozzászólására (») Ápr 3, 2008 /
 
Nézd, ha nem vagy hajlandó az adatlapot elővenni, akkor a büdös életben nem fogod megtudni, hogy az ADCON0-ba milyen értéket írva mi fog történni.

Ugyanis ez nem így működik, az egy bitekből álló regiszter, és nem a beleírt "érték" a lényeg, hanem a bitek állása.

Ráadásul az ADCON0 nem önmagában fog ezt vagy azt csinálni, hanem egy sor másik regiszterrel összehangolva.

A sértegetést meg elteheted magadnak, azzal itt sokra nem fogsz menni (max. kitiltásra), ellenben ha normálisan kérdeznél, akkor valószínűleg értelmes és segítő válaszokat is kapnál, ahogy ez már rajtad kívül rengeteg embernek sikerült is.

Részemről innentől kezdve ignore on.
(#) trudnai válasza pepe hozzászólására (») Ápr 3, 2008 /
 
Namost, en szemely szerint orvendek pepe, hogy ennyire muvelt vagy es beszeled az angolt, valoszinuleg hasznalhatnad tutorialok es datasheetek olvasgatasara is nemcsak tragar szavak roviditgetesere. En azt hiszem itt tobben normalis hangon probaltak ravezetni a PICezes helyes iranyara, senki sem kuldott el melegebb eghajlatokra, ugyhogy teljesen ertetlenul allok a hozzaszolasod elott. Reszemrol tobbszor nem kivanok valaszolni a hozzaszolasaidra!

Kivanos sok sikert az eletben!
(#) watt hozzászólása Ápr 3, 2008 /
 
Hagyjátok a fenébe, annyit nem érdemel, hogy rágondoljak....
(#) Braf hozzászólása Ápr 3, 2008 /
 
Nem teljesen pic kérdés de:
Mennyi idő kell kb a hd44780 alapú lcd-k nek az utasítás feldolgozásához?(gondolom minden utasítástipusnál más de van neki egy max. értéke)
Illetve kell várni az alsó és felső félbájt kiküldése között vagy rögtön mehetnek egymás után és csak utánna kell várakozni?
(#) vilmosd válasza PLaci hozzászólására (») Ápr 3, 2008 /
 
Hali
Nem tudom melyik PIC-et probalod mukodesre birni, de nezd meg az adatlapban a labak funkcioit. Bovebben : Altalaban a labaknak tobb funkcioja van es a resetnel default pl: comparator, v. AD.
Namost ha nem irod at a megfelelo regiszterben a lab funkciojat nem fog mukodni mint digitalis ki/bemenet. Tehat eloszor be kell allitani a lab funkciojat majd TRISTATE es utana hasznalhato mint dig. ki/be.

Pl:
16f628 -nal
movlw 0x07 ; comparators OFF
movwf CMCON ; innentol dig. ki/be

Bocs ha tudtad de sokszor lattam mar ezt a hibat kezdoknel.
Foleg ha megprobalt 16F84 hasznalata utan masokat is.
Udv Vili

PS. Itt jo szajbaragos leiras a PIC 16-ok lelkivilagarol
(#) szilva válasza Braf hozzászólására (») Ápr 3, 2008 /
 
Ha jól emlékszem, adatlap szerint 2.5ms körül van a leghosszabb, én 3-at szoktam várni. Várakozni csak a teljes byte elküldése után kell.

Az init kicsit máshogy van, arra van a doksiban egy folyamatábra időzítésekkel együtt, azt érdemes betartani!
(#) Braf válasza szilva hozzászólására (») Ápr 3, 2008 /
 
Rendben , kössz!
(#) SzaboZE válasza potyo hozzászólására (») Ápr 3, 2008 /
 
Tettem 12pf kondikat rá föld felé, ez annyit okozott, hogy full megállt a Pickit2 tőle :-S Kondik levétele után működik. Amióta több részen jeleztetek ki valamit a kijelzővel, inkább úgy hal le, hogy hibás adatokat olvas be az óraic-ből. Az LCD rutin megzavarja egy idő után (de hogy miért csak egy idő után, ez megint passz). Viszont a PIC nem áll le (az állapotjelzések működnek). Ma eddig jutottam.
(#) PLaci válasza vilmosd hozzászólására (») Ápr 3, 2008 /
 
Szia!
Köszi a leírtakat. Ha PIC16Fxxx lenne, az nemis lenne baj. Az kiválóan működött az MPLab 6.10 verziójával is. Azzal vidáman tudtam váltani a biteket. Újabb procival hozott össze a sorsom, 18F4321, és ezt nem kezeli a jól bevált 6.10-es MPLab. Ezért került fel a 8.00 A program hibátlanul lefordul, beégetve e PIC-be jól működik, de simulálni továbbra sem tudom, a fent említettek miatt.
Lehet megpróbálkozom a 8.02-es verzióval.... hátha..
(#) potyo válasza PLaci hozzászólására (») Ápr 3, 2008 /
 
Ilyen téren nincs semmi különbség, már a 7.xx verziókban is ugyanígy működött a szimulátor. De mindenesetre nem árt feltenni a legújabb verziót.

Lehet, hogy valamit rosszul csinálsz. Amikor meg van nyitva a projekt, akkor menj a View-->Watch-ra. Ekkor megjelenik a watch ablak. Felül tudod kiválasztani, hogy mely regisztereket akarod figyelni a szimuláció során. Amit kiválasztasz, alul bekerül a listába. Na itt kattints kettőt a tartalmára, és akkor át tudod írni. De mint watt írta, bemenetnek állított lábat így nem tudod módosítani.
(#) trudnai válasza PLaci hozzászólására (») Ápr 3, 2008 /
 
PLaci,

Azt hiszem watt is meg masok is irtak, hogy ez miert van de lehet nem sikerult tisztan osszefoglalni:

1. az MPSIM-ben (MPLAB-ba integralt PIC szimulator) pontosan azokat a dolgokat lehet muvelni mint egy igazi PIC-ben, akar hardver emulator segitsegevel debuggolva akar anelkul "elesben"

2. Mikor a debuggerben vagy szimulatroban egy regiszter erteket megvaltoztatod annak pontosan ugyanuigy kell mukodnie mint a valos eletben

3. Ebbol kovetkezik, hogy mivel a portod also 4 bitje bemenet, ezert a port erteket megvaltoztatni csak kulso, hardveres modon lehet

4. Tehat a szimultorban a port atirasa JOL mukodik, azaz nem engedi neked a bemeneteket megvaltoztatni

5. Azt hiszem potyo(?) javasolta, hogy valtoztasd meg a TRIS-eket bemenetre es utana mar engedni fogja a szimulator a PORT bitek allitgatasat -ezt ugyanugy regiszter modositassal ered el, elobb TRIS allitgatas, utana PORT allitgatas

6. Ha "uzemszeruen" szeretned csinalni akkor pedig a megoldas (amit emlitettem is mar), hogy a stimulusnal hozz letre egy port labat billegteto esemenyt, amit a stimulus ablakban az egerrel torteno kattintgatassal tudsz kivaltani, igy mikor a portot tesztelni szeretned "mi tortenik ha magas lesz" stb elven, akkor egyszeruen csak oda kattintasz es a port laba "kivulrol" magas allapotba kerul. A valtozast a regiszterekben is latni fogod termeszetesen...

7. Ezt a stimulust el is mentheted es kesobb is hasznalhatod, sot akar letre is tudsz hozni olyat, hogy bizonyos idokozonkent, vagy esemenyek bekovetkeztere a port kattintgatas nelkul valtozzon neked. Lehet meg sokkal sokkal bonyolultabb teszteket kesziteni amivel akar soros porti kommunikaciot vagy mas inputokat lehet leszimulalni, de most nem kellene ennyire elore rohanni, a kattintgatast ha elered akkor mar valoszinuleg elolrebb vagy mint most.

Otthoni geprol megirom majd hol van a menupont, ott van 8.02-es MPLAB, itt nincs. Sok sikert addig is!
(#) potyo válasza Braf hozzászólására (») Ápr 3, 2008 /
 
Az adatlapjában ahol a parancsok táblázata van, ott valahol a táblázatban szerepel, hogy mennyi ideig tart az adott parancs végrehajtása. A legtöbb menet közben használt parancs - úgy emlékszem - 42us.
(#) PLaci válasza trudnai hozzászólására (») Ápr 3, 2008 /
 
Sziasztok!
Nagyon köszi a leírtakat. Ezek szerint ebbe sokkal jobban bele kell mélyedni mint a régiekbe. Pl a régiben ha egy A/D konverziót szimuláltam, akkor addig ugrált vissza amég a jezőbit 1-re nem váltott. Ezt gyakorlatben úgy oldottam meg, hogy ugráltattam párszor, majd manuálisan átírtam a jelzőbitet "készre", és az eredményt tartalmazó regiszterbe beírtam valamit a várható tartományból, és már lépkedhettem is tovább. Nem kellett semmi Watch-al bíbelódni.
(Nekem a watch-ról csak a watchdog urott be )
Biztos én vagyok nagyon földhözragadt, de számomra az sokkal átláthatóbb volt.
Na mégegyszer köszi, és próbálok keresni valami leírást erről az új módiról

(#) watt válasza PLaci hozzászólására (») Ápr 3, 2008 /
 
Nekem is fura volt először, de most már sokkal jobban tetszik, mert jobban áttekinthetőek a regek.
(#) watt válasza SzaboZE hozzászólására (») Ápr 3, 2008 /
 
Miért, Te hová tetted azokat a kondikat? A PICKit2-re? Vagy hogy érted, hogy leállt tőle?
(#) szilva válasza SzaboZE hozzászólására (») Ápr 3, 2008 /
 
Tégy az rc5c372 1-es lábára (INTRB) egy pár k-s felhúzó ellenállást és a program legelején programozd fel az órát, hogy küldjön ide clockout-ot.

Amikor "megáll az élet", akkor mérj rá erre a kimenetre, hogy jár-e az óra oszcillátora. Gyanítom, hogy nem ezzel lesz gond, csak a kommunikációban történik valami hiba.
(#) SzaboZE válasza szilva hozzászólására (») Ápr 4, 2008 /
 
A clockout fel van programozva, így csak az ellenállás fog kelleni, köszi a tippet, rápróbálok. Nekem is a kommunikáció a gyanum, de sose lehet tudni.
(#) SzaboZE válasza watt hozzászólására (») Ápr 4, 2008 /
 
Gyári demopanelem van, a Pickitről kapja a tápot. Külső táppal sem megy az áramkör rendesen. A kondik a kristály két lábáról a föld felé lettek feltéve a panelen. Számomra is teljesen felfoghatatlan a Pickit reakciója. A jelenség az volt, hogy a Pickit szoftvere nem indult el. Ha lehúztam a Pickitről az áramkört, akkor elindult. Kimértem mindent kétszer, zárlat nem lehetett. A Pickitet azért használom, mert így nem kell lehuzogatni programozás és teszt között az áramkört.
(#) watt válasza SzaboZE hozzászólására (») Ápr 4, 2008 /
 
Ott valami nagyon nem gömbölyű! Még hogy nem megy külső táppal, meg lefagy a PICKit2?
Ezt meg kell oldanod mielőtt tovább lépsz, mert csak szívni fogsz! Mérd végig külső táppal az áramkört, és egyszerű progit tegyél a PIC-be, pl. LED villogtatót. Ha az sem megy, akkor rossz a panel valahol... (egyébként, Te nem alszol?
(#) Amarton hozzászólása Ápr 4, 2008 /
 
Sziasztok.

USART-tot próbálok életre kellteni a 16F887-es PIC-en.
De valami miatt nem működik.
A leírást többször elolvastam.
Egyenlőre csak tesztelni szeretném a működését, és SCOP-on nézni a jelalakot, hogy a beállított baudrate jön-e ki a kimeneten.

Itt a kód, ami nem működik:

#include

cblock 0X20
D1
D2
endc

org 0

Start
bcf STATUS, RP0
bcf STATUS, RP1 ; bank 0
bsf RCSTA, SPEN
bsf STATUS, RP0 ; bank 1
movlw 0X70
movwf SPBRG ; 16 bit baudrate generator hi-bit set
movlw 0X02
movwf SPBRGH ; 16 bit baudrate generator low-bit set
movlw B'01000010'
movwf TXSTA ; Set async, low speed mode
bsf STATUS, RP1 ; Bank4
movlw BAUDCTL
bcf STATUS, RP0
bcf STATUS, RP1 ; bank 0

Loop
movlw B'10101010'
movwf TXREG
bsf TXSTA, TXEN
call Delay_195ms
goto Loop

Delay_195ms
movlw 0X00
movwf D1
movwf D2
Delay_195ms_loop
decfsz D1,f
goto Delay_195ms_loop
decfsz D2,f
goto Delay_195ms_loop
return

end


Köszi előre is a segítséget.
(#) szilva válasza Amarton hozzászólására (») Ápr 4, 2008 /
 
A bankokat nem néztem végig, hogy minden regisztert jó bankban címzel-e, azt nézd végig még egyszer a biztonság kedvéért.

Ellenben a következők nem igazán tetszenek:

  1. movlw B'01000010'
  2. movwf TXSTA ; Set async, low speed mode


Itt a 9 bites transmitet engedélyezed, valamint a TRMT, csak olvasható bitbe írsz 1-et. A TXEN bit, amivel a küldési funkciót engedélyezed, az nincs beállítva.

  1. bsf STATUS, RP1 ; Bank4
  2. movlw BAUDCTL


Itt pedig valószínűleg nem ezt akartad írni, hanem valamilyen értékkel feltölteni a BAUDCTL-t, azaz egy movlw/movwf utasításpár kellene.

  1. Loop
  2. movlw B'10101010'
  3. movwf TXREG
  4. bsf TXSTA, TXEN
  5. call Delay_195ms
  6. goto Loop


Ezt sem így illene megcsinálni, nem kell soros kommunikáció közben a TXEN-t kapcsolgatni. Azt kell ellenőrizni, hogy a puffer üres-e. Ezt lehet a PIR1 regiszter TXIF bitjének állapotával ellenőrizni, olvasd el az adatlap 12.1.1.3 pontját! Ha a puffer írhatóságát ellenőrzöd, akkor teljesen felesleges a külön időzítési ciklus is.
(#) trudnai válasza Amarton hozzászólására (») Ápr 4, 2008 /
 
Szia Amarton,

Eloszor is, gondolom az ures "#inslude" sor az valojaban nem ures, ugye? Viszont hianyzik ebbol a kodbol a konfiguracio, igy ha config problemak lennenek azt nehez lenne megsugni.

Kerdesek:

1. Mi a hiba? Mert ezt nem irtad le
2. Mekkora az fosc? A delay195ms rutinodbol szamolva arra kovetkeztete, hogy 4MHz(?)
3. Milyen baud rate-et szerettel volna elerni? (a 0x0270 -et datasheet peldai kozott nem leltem, es a 4MHz-es FOSC ot feltetelezve ez 100 baud - ezt szeretted volna?)
4. En nem alkalmaznek statikus varakozast. Ha a TXIF-et figyeled, akkor az 1, ha a TXREG-be irkalhatsz.
5. a MOVLW BAUDCTL az gondolom eliras nem? Gondolom ehelyett egy BSF BAUDCTL,BRG16-ot szerettel volna?
(#) menyus hozzászólása Ápr 4, 2008 /
 
Sziasztok!

A megszakításokkal kapcsolatban kérdezném, hogy ha a főprogramban sleepre küldöm a PIC et és megszakításra "ébred", akkor a megszakítás lefutása után újra aludni megy? Hogy van ez?
(#) potyo válasza menyus hozzászólására (») Ápr 4, 2008 /
 
Automatikusan nem. De ha a főprogramban ismét ráfut a SLEEP utasításra, akkor ismét aludni megy.
(#) potyo válasza Amarton hozzászólására (») Ápr 4, 2008 /
 
Idézet:
„A leírást többször elolvastam.”


Azt a részt is, amelyik leírja lépésről lépésre, hogyan kell beállítani a soros küldést?

Van ez a topik, ugyanerről szól: Link
(#) menyus válasza potyo hozzászólására (») Ápr 4, 2008 /
 
Értem, köszi. Csak az nem tiszta hogy ebben az esetben miután lefut a megszakítás rutin akkor (ha egyébként nincs sehová küldve pl. GOTO val) hol folytatódik a főprogram? Az elején? Mert ha főprogram futása közben következik be a megszakítás akkor tudomásom szerint onnan folytatja a program futását ahonnam meg lett szakítva az iterrupttal. Ezért az lenne a logikus hogy ha sleep ből ébred akkor visszamegy sleepre.
(#) potyo válasza menyus hozzászólására (») Ápr 4, 2008 /
 
A SLEEP-et követő utasításra megy, miután lefutott a megszakítás. Szóval ha a főproramod egy
  1. VISSZA
  2.         SLEEP
  3.         GOTO VISSZA

akkor a megszakítási rutin után gyakorlatilag azonnal ismét alszik.
(#) menyus válasza potyo hozzászólására (») Ápr 4, 2008 /
 
Köszönöm!
(#) watt válasza Amarton hozzászólására (») Ápr 4, 2008 /
 
Nemrég betettem egy komplett USART progit....
(#) watt válasza watt hozzászólására (») Ápr 4, 2008 /
 
Itt van:
(Ja igen, csak a keresőt kellett használnom, és feljött rengeteg infó a témában, szerintem neked is hasznoos lenne....)
Következő: »»   182 / 1320
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