Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
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?
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...)
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.
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!
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
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.
É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ó)
Táblázattal nem lehet megoldani? Egyébként nem egészen értem, miért 6 adatbyte, amikor 3,5 digites az lcd?
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.
Köszönöm a tippet Neked is és wattnak is, a héten utánajárok mindenképpen!
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):
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.
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?
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).
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.
A munkaregiszterek mentése interrupt esetén biztos, hogy rossz. Ez a rutin-rész jó:
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.
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.
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).
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...
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.
Hm tényleg ott van
De nem jobban olvasható a kód, ha ott W vagy F szerepel, mintha 0 vagy 1?
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.
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
Nem tudom, mennyire szerencsés a GIE állítgatása az interrupton belül.
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.
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
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!
Van valami rajzod az összeszerelt kapcsolásodról ?
Küldhetnél egy hex-et is !
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...
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.
|
Bejelentkezés
Hirdetés |