Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   168 / 1320
(#) trudnai válasza watt hozzászólására (») Márc 10, 2008 /
 
Watt, amugy azt a mai napig nem ertem, hogy hogyan csinalod a ketoldalast... Az odaig rendben van, hogy ossze tuzod a papirt, akkor pont szemben lesznek a furatok, viak stb, de mitol nem mozdul el neked mikor a masik oldalt vasalod?
(#) szilva válasza watt hozzászólására (») Márc 10, 2008 /
 
Nagyon szép a rajzolat, a maratás!

Fúróról jut eszembe: kellene nekem 0.5mm körüli hegy, mert egyetlen egy darabom van, és nagyon életlen, szakít... Hol lehet ilyesmit venni? (Mintha írtál volna korábban erről...)
(#) watt válasza szilva hozzászólására (») Márc 10, 2008 /
 
Nézz át a terminal nyákkészítős fórumra, mert ott többen összefogtak és úgy olcsóbban lehetne venni. Igaz hogy ott 0.6 és 0.8-asok vannak a tervben. Az is ott van, hogy hol lehet kapni.
(#) watt válasza trudnai hozzászólására (») Márc 10, 2008 /
 
Bár kicsit off, de röviden. Fénynél bepozícionálom a két oldal rajzolatát, majd a szélét összetűzöm tűzőgéppel. Ezután beletolom a nyákot, amit kicsit nagyobbra hagyok(majd a maratás után véglegesítem a méretet). Ezután körbetűzögetem úgy, hogy vigyázok arra, hogy a papír egyformán hajoljon a nyák szélénél(remélem érted mire gondolok. Ha egyik szélén egyenesen fut rá, a másikon hajlik, akkor elcsúszik a rajzolat, mint egy csiszolóvászonszallag). Ezután ráteszem a vasalót és nem mozgatom. 1-2perc után pedig rágörgőzöm, majd megcsinálom a másik oldallal is, habár ez csak biztonsági művelet, mert egy körben is rá lehet görgőzni, csak sietni kell. Kicsi nyáknál ez nem gond, nagyobbnál meg a másik oldalt is megmelegítem.
A görgőzés szerintem fontos. Nem kell nagyon nyomni, de az egyik oldali melegítésnél, minkét oldalon görgőzni kell, mindkétszer. Csak finoman!

Még annyit, hogy az oldalamon látható képeken még nem tűzőgépeztem, hanem egyenként marattam az oldalakat, szigetelőszalaggal lefedve a másikat. Így is működik a dolog. A belinkelt képen látható nyák is úgy készült még!

És még az is eszembe jutott, hogy a nyák alá mindenképpen valami klingerit vagy bakelit lapot kell tenni, hogy az az oldal is jól átmelegedjen, sík és kemény legyen, hogy a vasaló súlyától néhány sáv már eleve feltapadjon azon az oldalon is!
(#) fookos válasza szilva hozzászólására (») Márc 10, 2008 /
 
Nézz be a Fairtool-hoz. Ott 70-100Ft+Áfa-ért vettem 0,7-1,2 es fúrókat (normál csigafúró). De csak 10-esével árulják kis műanyag dobozban.

Fairtool

(#) gulasoft válasza szilva hozzászólására (») Márc 10, 2008 /
 
A Fairtool mellett van egy bolt (ekkora marhákat ugyan olyan profilú két cég), és ott egyesével is árulják, én 0.8-as,0.5-öst, és 0.3-ast is vettem, 0.1-eset nem vettem, mert gyakorlatilag nem láttam a vastagított szár végén a fúrót olyan vékony volt. Kicsit olyan érzés mint a király új ruhája mese, azzal a különbséggel, hogy nagyítóval azért látszott a hegy, de nagyon durva volt.
(#) gulasoft válasza watt hozzászólására (») Márc 10, 2008 /
 
Én lelakkoztam mind a két oldalt csináltam pozicionáló lukakat, kifúrtam a fóliát, aztán az egyik oldalt ráragasztottam celluxal a nyákra (itt is nagyobra van hagyva), aztán alkatrészlábakat raktam a lukakba, és úgy ment rá a fólia, hogy a lábak rávezették a pozicionáló lukra, aztán celux, és mind a két oldalt egyesével elvilágítotam, és nem rézzel lefelé úsztattam a nyákot a tn150 tetején, hanem csak belelógattam.
Kell majd vennem valami jénai edényt amit fel lehet tenni egy villanyrezsóra, és akkor lesz igazi, mert most a mosdóban melegvízzel melegítem a marót, de ez nagyon primitív megoldás (de olcsó)
(#) potyo válasza szilva hozzászólására (») Márc 10, 2008 /
 
Táblázattal nem lehet megoldani? Egyébként nem egészen értem, miért 6 adatbyte, amikor 3,5 digites az lcd?
(#) szilva válasza potyo hozzászólására (») Márc 10, 2008 /
 
Gondolkoztam a táblázatos megoldáson, de indokolatlanul bonyolultnak tűnt. A végén megcsináltam egy elég fapados, ám talán mégis a leggyorsabb megoldást: btfsc-k és bsf-ek sorozatával pakolom szét a biteket, korrektnek tűnik.

A 16F946 42 szegmenst és 4 LCD hátlapot képes meghajtani. Minden hátlaphoz tartozik a 42 szegmenst reprezentáló 6 byte, azaz összesen 24 adatbyte írja le az összes hátlap összes szegmensét.

Ezekből én csak 6-ot használok, a 0-s hátlaphoz tartozókat, mert ezeken a 3.5 digites kijelzőkön 1 hátlaphoz van rendelve a 30-31 szegmens (egyébként pont emiatt kellett ez a "nagyágyú", a 40 lábú kistestvérével 1 hátlapon csak 24 szegmenst lehet meghajtani).

A szegmensek azonban szerteszéjjel lettek dobálva a 42 lehetséges kimenet között, pont úgy, ahogy a legkényelmesebbé vált a NYÁK rajzolata, ezért minden kimenetvezérlő byte-ba jutott valami.
(#) szilva válasza gulasoft hozzászólására (») Márc 10, 2008 /
 
Köszönöm a tippet Neked is és wattnak is, a héten utánajárok mindenképpen!
(#) szilva válasza szilva hozzászólására (») Márc 10, 2008 /
 
Na, hogy kicsit érthetőbb legyen, ilyen kódot csináltam minden digithez (az s_LCD változók amolyan shadow regiszterek, amikben összeáll a kirandó szegmens-minta):

  1. ; digit2 map
  2.         btfsc   disp2,7         ; P, SEG32
  3.         bsf             s_LCD4,0
  4.         btfsc   disp2,6         ; A, SEG16
  5.         bsf             s_LCD2,0
  6.         btfsc   disp2,5         ; B, SEG11
  7.         bsf             s_LCD1,3
  8.         btfsc   disp2,4         ; C, SEG39
  9.         bsf             s_LCD4,7
  10.         btfsc   disp2,3         ; D, SEG40
  11.         bsf             s_LCD5,0
  12.         btfsc   disp2,2         ; E, SEG41
  13.         bsf             s_LCD5,1
  14.         btfsc   disp2,1         ; F, SEG6
  15.         bsf             s_LCD0,6
  16.         btfsc   disp2,0         ; G, SEG31
  17.         bsf             s_LCD3,7


Minden digitnek van egy 8 bites regisztere, amiben bitek jelentik a szegmenseket, illetve a tizedespontot. A fél digitet kicsit különlegesen kezelem, de az is egy byte: ott a bitek a különleges ikonokat (negatív/pozitív előjel, kettőspont, stb.) valamint az 1-es karaktert jelentik.
(#) kobold válasza szilva hozzászólására (») Márc 10, 2008 /
 
Sokszor ez a legegyszerűbb... Biztosan megcsináltad te is, de azért rákérdezek, hogy mielőtt beállítod az s_LCDx megfelelő bitjeit, valahol előtte ugye ki is törlöd őket, hogy ne ragadjon be semmi?
(#) szilva válasza kobold hozzászólására (») Márc 10, 2008 /
 
Persze, a bitszétdobáló elején ott vannak a clrf-ek az s_LCD változókra. Lehet, hogy nem túl elegáns megoldás, de célravezető, és elég hatékony is. A kódmemóriában meg bőven elfér (most gyakorlatilag majdnem teljesen készen van az óra számlálólogikája, és ezzel, meg a táblázatos hétszegmenses dekódolással együtt is 256 byte körül van a mérete).
(#) Jobbagyag hozzászólása Márc 10, 2008 /
 
Sziasztok, még mindig az EEPROM írással "szenvedek".
Már mindent összeolvastam, adatlapot megtanultam
de nem megy. Meg tudnátok mondani mi a baj. A mellékelt tesztprogram működése az lenne, hogy egy elő byte-ot növel, amit RB0 megszakításra elment az EEPROM-ba, majd újra indításkor onnan folytatja a növelést. Amit csinál: gombnyomásra lefagy, újraindításrnál meg össze-vissza indul el. Ezt még fél sikernek is túlzás lenne nevezni. A bankok váltogatása egy segéd fileból megy, ott minden stimmel, 100x átnéztem.

main.asm
    
(#) kobold válasza Jobbagyag hozzászólására (») Márc 10, 2008 /
 
A munkaregiszterek mentése interrupt esetén biztos, hogy rossz. Ez a rutin-rész jó:
  1. MOVWF   WSTACK
  2. SWAPF   STATUS,0
  3. MOVWF   SSTACK           ; eddig a mentés
  4. .
  5. .
  6. .
  7. SWAPF   SSTACK,0        ; visszaállítás
  8. MOVWF   STATUS
  9. SWAPF   WSTACK,1
  10. SWAPF   WSTACK,0
  11. RETFIE

Ha nem a SWAPF-et használod, hamis értéket fogsz menteni a státuszból, illetve hamisat is töltesz vissza.
A Bank3-as, jelenleg kommentezett rész az interrupt elején szerintem kellene, esetleges korábbi írás végéig várni.
Hirtelen ennyi tűnt ki belőle, ha nem oldódik meg, bezavarom a szimulátorba.
(#) potyo válasza Jobbagyag hozzászólására (») Márc 10, 2008 /
 
Kapásból látom, hogy a kritikus regiszterek mentése hibás. Az adatlapban megtalálod a megfelelő módszert, keress rá a Context Saving szavakra.

Ami biztosan hiba, hogy az ELOBYTE az nullás bankban van. Tehát amikor abba akarsz írni, vagy abból olvasni valamit, akkor át kell váltani oda.

A többit jónak nézem.
(#) kobold válasza potyo hozzászólására (») Márc 10, 2008 /
 
Igaz, azt a regisztert nem is néztem. De át is lehet tenni a CBLOCK kezdőcímét 0x70-re, és akkor mindegy, melyik bankban van elérés közben (csak figyelni kell, mert onnantól már nincs sok szabad hely).
(#) potyo válasza kobold hozzászólására (») Márc 10, 2008 /
 
Ezeket, hogy STATUS, 0 és WSTACK, 1 honnan szeditek? Az adatlap is szépen W és F jelölést használ, és sokkal olvashatóbb a kód ezek használatával...
(#) kobold válasza potyo hozzászólására (») Márc 10, 2008 /
 
Konkrétan pont az adatlapból szedjük... Én meg épp a W, F jelöléseket nem használom, valószínűleg azért, mert megszoktam a számokat.

lap.gif
    
(#) potyo válasza kobold hozzászólására (») Márc 10, 2008 /
 
Hm tényleg ott van

De nem jobban olvasható a kód, ha ott W vagy F szerepel, mintha 0 vagy 1?
(#) Jobbagyag válasza kobold hozzászólására (») Márc 10, 2008 /
 
Sajnos ugyanugy nem megy (semmi változás). Mellékelem az immáron upgradelt verziót. Az irás végere várást is beletettem, de benne is volt. Az írási rutin végén. Gondoltam logikusabb az írás végén addig nem engedni tovább amíg kész nincs.
De a lényegen úgy néz ki ez sem változtatott. Azt nem értem mitől fagy le az RB0 megszakításra.

main.asm
    
(#) fookos válasza kobold hozzászólására (») Márc 10, 2008 /
 
próbáld így:


......................

udata_shr

v_copy_w res 1 ; Backup for Akku
v_copy_s res 1 ; Backup for Status

.....
Int_start:
movwf v_copy_w ; save w
swapf STATUS, w ; save STATUS
movwf v_copy_s ;

(your code...)

swapf v_copy_s, w ; put STATUS back
movwf STATUS
swapf v_copy_w, f ; put w back
swapf v_copy_w, w
retfie

(#) szilva válasza Jobbagyag hozzászólására (») Márc 10, 2008 /
 
Nem tudom, mennyire szerencsés a GIE állítgatása az interrupton belül.
(#) kobold válasza Jobbagyag hozzászólására (») Márc 10, 2008 /
 
Stack overflow... BCF INTCON, INTF utasítás hiányzik a BSF INTCON, GIE elől. Bennmarad a megszakítás jelzése, és nem fog kijönni az interrupt-rutinból az életben sem.
GIE-t meg nem kell állítgatni, mert mikor a 0x0004-es címre lép, önmagának kitörli, RETFIE végrehajtásakor pedig visszaállítja.
(#) kobold válasza kobold hozzászólására (») Márc 10, 2008 /
 
Szerintem ez a "kinek, hogy" tipikus esete Adatlapból kezdtem tanulni a PIC-et, ott 0 és 1 volt, én meg jobb híján szentírásnak vettem. Később, mások kódjaiban már láttam W, F jelöléseket, de addigra hozzászoktam a számokhoz, ugyanúgy olvasom, mintha betűk lennének, a kezem is arra áll, ha be kell ütni. Na meg sosem voltak kíváncsiak a kódjaimra, így nem is reklamáltak érte
(#) trudnai válasza Jobbagyag hozzászólására (») Márc 11, 2008 /
 
Mar majdnem jo.

Amiket meg javasoltak a forumtarsak es nem latok a kododban:

1. A kontextus menteshez szukseges adatteruletet a 0x70-es cimre kell tenni igy bank fuggetlen eleressel lehet azokat kezelni - erre ha jol emlekszem 2 fajta megoldast is javasoltak neked

2. GIE-t nem birizgalni ISR-ben

3. Ha jol latom az ELOBYTE nem a bank2-n van...

4. (ezt meg nem irtak) Van nehany PIC aminel az EEPROM irassal gondok vannak, nevezetesen a WR kinullazodik meg mielott az iras befejezodne - es akkor ugye torlod a WREN-t es kesz a balhe... Ezeknel ket megoldas van, egyik, hogy sleep-be kell tenni az MCU-t es interrupttal felebreszteni mikor az iras befejezodott, a masik, hogy egy idozitest kell oda rakni, ami minimum 8ms-et var es csak utana torolni a WREN-t.

4. pontot csak akkor probald ki ha az elso 3 javitas utan is sikertelen az iras!
(#) ccs válasza Jobbagyag hozzászólására (») Márc 11, 2008 /
 
Van valami rajzod az összeszerelt kapcsolásodról ?

Küldhetnél egy hex-et is !
(#) ccs válasza Jobbagyag hozzászólására (») Márc 11, 2008 /
 
Ha ezt a hex-et betöltöd, a B0-ra kötött gombot nyomogatva mindíg egyet hozzáad a belső eepromhoz...

Hogy min ellenőrzöd le az eeprom tartalmat, azt nem írtad...

877.hex
    
(#) googa hozzászólása Márc 11, 2008 /
 
Valaki lát itt olyat, hogy egy buzzert hogyan kell sípoltatni PIC-ről? Esetleg kapcoslás, program részlet... Néztem a neten is, de egyelőre semmi.
(#) ccs válasza googa hozzászólására (») Márc 11, 2008 /
 
Én is néztem neten. Ezt meg Ezt találtam, mint kapcsolást
Itt pedig program is van "buzzeros" 16f84 és 16f628-ra.
Következő: »»   168 / 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