Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   29 / 1318
(#) dpeti válasza potyo hozzászólására (») Ápr 12, 2007 /
 
(#) Csirgli válasza potyo hozzászólására (») Ápr 12, 2007 /
 
ez egy kapu vezérlő kártya, egy motort kellen vezérelnie. van 2 szenzoros érzékelője, 1 csukott állapot érzékelője és még egy pár led (ami annyira nem fontos)

namost több üzemmódja van master -> ő vezérli a slave kártyát

slave -> őt vezérlik
mindíg nyitva üzemmód
mindíg csukva üzemmód

amit nem csinál: mindent
csak az inicializálás végén található "bsf lalim" parancs által kivilágított led világit, semmilyen kimeneten nincs semmi, és semmilyen bemenetre nem reagál
szerintem valamelyik ciklusban veszik el, de nem találtm meg, mivel az 50Hz-es jellel szinkronizált a motor vezérlés, és a kimeneten nincs semmi, szerintem nem jut el odáig, hogy az első szinkronizálást elvégezze " *** motorvezérlés ***"


kommentben részletesebb leírás van
(#) miklajos válasza Csirgli hozzászólására (») Ápr 13, 2007 /
 
Szia!
Nem néztem át teljesen a progidat de az elején van:

START

....
....
RLF REG4, 1 ; BALRA SHIFT REG4-ET, EREDMÉNY REG4-BEN
RLF TMR0, 0 ; BALRA SHIFT TMR0-ÁT, EREDMÉNY W-BEN
BTFSC STATUS ,0 ; HA VAN CARRY (UTOLSÓ 7.BIT 1 VOLT)
INCF REG4 ,1 ; REG 4-ET
Ar rlf reg4,1 sort nem értem mert ilyenkor a belépő bit a carry elözö bitje nem a reg4 kilépő bitje, ez igaz a rlf tmr0- ra is vagyis a w -be belépő bit az iménti reg4 kilépő bitje. Nem tudom hogynem-e eztakartad de ha nem ezeléggé elviheti a programot
(#) Csirgli válasza miklajos hozzászólására (») Ápr 13, 2007 /
 
hát nem ezt akartam, hanem azt, hogy a kipottyanó bit micsoda az alapján menni tovább. akkor ezt bizony át kell írnom, (a baj az, hogy csak a carry-t mozgatja a shift )

köszi, hogy ilyen gyorsan válaszoltál
(#) watt válasza Csirgli hozzászólására (») Ápr 13, 2007 /
 
Idézet:
„BTFSS ALLAP, 1 ; HA 11
BTFSC ALLAP, 0
GOTO START”

Itt nem tudom mit szeretnél:
Ha csak "11"-nél akarsz a GOTO-ra jutni, akkor nem jó, mert "01"-nél is oda ugrik.

Az elején ez sem teljesen jó szerintem:
Idézet:
„MAIN
org 0X000”

Na most a MAIN itt csak véletlenül kerül a 0. címre, mert az org-ot utána adod ki. Ha org 0x100-at írnál, a MAIN akkor is a 0-ra kerülne. Talán ez itt nem okoz hibát, de helytelen a megoldás. A címkék az org után vehetik fel a kívánt értéket. Az org nem programlépés, az a fordítónak szól.
(#) Csirgli válasza watt hozzászólására (») Ápr 13, 2007 /
 
Szia!

1: BTFSS ALLAP, 1
ez ha 1-es 3-asra ugrik, ha 0, 2-esre
2: BTFSC ALLAP, 0
ez ha 1 3-asra ugrik, ha 0, 4-esre
3: GOTO START
4:


kombinációk
b1 b0
0 x -> startra ugik
1 1 -> startra ugrik
1 0 -> 4-esre, tovább megy,
ez jelent lefutó élet, b1 az előző, b0 a mostani, ha nincs lefutó él, ne csináljon semmit (menjen az elejére)

nekem ez volt a szándékom, a kommentet félreírtam, bocsi

a main 0x000-t meg nem én írtam bele, hanem az mplab-ban lévő programcsonk (asszem f57.lst), amit a tutorial szerint be kell tölteni, tartalmazta.

kicsit más: itt ugyan számlálóval van megoldva az inttrigg időzítése, de ezt állítólag egy astabil kimenettel is meg lehet oldani. 1 láb 1 kondi 2 ellenállás rajta... a a port kimenet, tölti a kondit a kis ellenálláson keresztül, ha bemenet a sokkal nagyobbon keresztül kisül és egyszer 0 lesz a bemenet. Van valakinek tapasztalata ilyen időzítéssel?
(#) watt válasza Csirgli hozzászólására (») Ápr 13, 2007 /
 
Ha nem veszed rossz néven, néhány javaslatot fogadj el még! :
1.
Idézet:
„BCF ALLAP,0”

Ez így olvashatatlanná teszi a programot, érdemesebb ezt így megoldani:
#DEFINE LEJÁRT_IDŐ_FLAG ALLAP,0 ;ezt a programlista előtt kell kiadni...
Használata:
BCF LEJÁRT_IDŐ_FLAG

2.
Idézet:
„INCF REG8, 1”

Ez így szoktuk:
INCF REG8,F ; F = Regiszterbe vissza azaz F = 1
vagy
INCF REG8,W ; Ez gondolom egyértelmű

3.
Éredemes a regisztereknek beszédes nevet adni, mert így elég nehéz követni, melyik mire való.

4.
A STATUS regiszter bitjeinek van nevük, érdemes azokat használni pl. :
BTFSS STATUS,Z
(#) bokrosh válasza miklajos hozzászólására (») Ápr 13, 2007 /
 
Köszi miklajos, mind2 észrevétel jogos, de a külső órajelehez azért állítottam, mert ott is van egy kisebb kvarcz, ami csak 32,.. kHz frekijű. Ami a biteket illeti, jól látod, jelenleg a megértésen fáradozom. Szóval amit írtam, abban hiba elvileg nincs? Mondom külcső lábról jön a jel. Ez egy 16877-es próbapanel, biztosan ismered. RC0-RC1 között is van egy kis kvarcz. Azért gondoltam onnan venni a jelet, mert nem kell annyit számolni, mivel lassabb mint a 20MHz,ami a belső jelet adja. Akkor elvi hiba ez alapján van-e avagy sem?

Köszi mégegyszer
(#) watt válasza Csirgli hozzászólására (») Ápr 13, 2007 /
 
Idézet:
„0 x -> startra ugik”

00-nál nem ugrik a startra! ...?

Idézet:
„1 0 -> 4-esre, tovább megy,”

Ezt modt látom, hogy ez meg nem ugrik a 4.esre, hanem a startra! ...?

Idézet:
„main 0x000-t meg nem én írtam bele, hanem az mplab-ban lévő programcsonk”

Ezt nem értem teljesen, de lényeg, hogy nem helyes.
(#) watt válasza watt hozzászólására (») Ápr 13, 2007 /
 
Idézet:
„1: BTFSS ALLAP, 1
2: BTFSC ALLAP, 0
3: GOTO START
4:”

Segítek, ez az igazság táblája:
b1, b0
1 x -> 3: (start)
0 1 -> 3: (start)
0 0 -> 4:
Tehát csak 00 esetén lép a 4: sorra!

Megjegyzem, hogy a program tele van ilyen megoldásokkal, amik szerintem nem azt csinálják amit szeretnél. Ha még is így akartad, akkor természetesen nincs gond!
(#) bokrosh hozzászólása Ápr 13, 2007 /
 
Sziasztok!

Kérdésem a megszakításokhoz fűződne.
RB5 jelváltozást figyel. Amikor a megszakítás létrejön, akkor GIE 0-ra vált, és nem tudom visszaállítani 1 be.RETFIE sem állítja vissza, és ha BSF-el csinálom,(vagy 0XC8-at akarok belerakni) akkor visszaugrik a megszakításvektorhoz. Miért nem tudom visszaállítani, vagy RBIF-et nullázni? Ja és a PEIE az mire is jó? Kell itt az nekem?
(#) watt válasza bokrosh hozzászólására (») Ápr 13, 2007 /
 
Elég furcsa dolgokat írsz, nem is értem igazán a történteket. Kezdjük azzal, hogy a megszakításkor és alatta a GIE 0-ra vált, tiltva ezzel a megszkítás alatti újbóli megszakítást. Eddig oké, viszont a retfie ezta bitet újból engedélyezi, nem kell ez ügyben tenni semmit.

Az a gyanúm, hogy nem törölsz egy jelző bitet(megszakítás Flag-et), ami miatt beleragadsz a megszakításba(Retfie után azonnal feldolgozza a megszakítás alatt beérkező jelet, ezt egyébként jól is teszi). A megszakítás Flageket legtöbb esetben nekünk kell törölni, csak kevés a kivétel. Ez irányba keresgélj!
(#) bokrosh válasza watt hozzászólására (») Ápr 13, 2007 /
 
Az a helyzet, hogy nem engedi törölni a RBIF (flaget sem). És emiatt, jól látod, beragadok. Vajon miért nem engedi törölni? Csak simulátorban próbálom, nem élesben debuggolni
(#) vzoole hozzászólása Ápr 13, 2007 /
 
Sziasztok!

Keresek valakit aki jól tud pic-eket programozni, és hozzá áramkört tervezni.

Egy számlálóról lenne szó, néhány extra funkcióval.

Természetesen pénzért.

Válaszokat emailbe várok: vzoole@freemail.hu

Zoli

ui:
Néhány szűrőfeltételt beteszek:
-gyors munka
-legyen referencia
(#) miklajos válasza bokrosh hozzászólására (») Ápr 13, 2007 /
 
Szia!
Hajaj a portb megszakítást csak úgy lehet törölni ha elötte a portb regisztert kiolvastad:
movfw portb
..
..
bcf pie, rbif
!!
(#) miklajos válasza bokrosh hozzászólására (») Ápr 13, 2007 /
 
no akkor:
ORG 0
NOP

TEMP EQU 0x23
BCF STATUS,RP1
BSF STATUS,RP0

ez a bank1-et jelöli ki


CLRF TMR0 ;TMR0 ---> bank0 -ban van
CLRF INTCON
BSF STATUS,RP0 ;bank1
CLRF TRISD
BSF OPTION_REG,T0CS ;KULSO ORA
BCF OPTION_REG,PSA ;ELŐOSZTÓ TMR0-HOZ
BSF OPTION_REG,PS2 ;ELŐOSZTÓ BITEK 1-128
BSF OPTION_REG,PS1 ;
BCF OPTION_REG,PS0 ;
BCF STATUS,RP0 ;bank0
CLRF PORTD
CLRF TEMP

START
COMF PORTD,1 ;világít
CALL VAR_TULCS ;vár
COMF PORTD,1 ;nemvilágít
CALL VAR_TULCS ;vár
GOTO START


a start részt én maszkolással csinálnám
pl.: led portd 2-n van
akkor
movlw b'00000100'
iorwf portd,f ;be kapcs
call var_tulcs
movlw b'11111011'
andwf portd,f ;kikapcs

többet nem látok.
(#) Csirgli válasza watt hozzászólására (») Ápr 13, 2007 /
 
k, megnézem, ha az asm közelében leszek (szinte biztos, hogy csak ilyen kis hibák vannak benne..)

ha az mplab 7x tudoriálját végigolvasod, leírja, hogyan kell új projectet csinálni. Ott a pic-ednek megfelelő 2 filét ki kell választani, majd mellékelni (pipa, de mind1 most). Amikorelindul a project a wizzard után egyből egy asm file lezs megnyitva, ami tartalmazza a main, a start, a reset vector és a config soroat, azzal a kikommentezett fejléccel együtt, amit ott talátsz a progi elején. a main 0x000 -nak az mplab szerint benne kell lennie, mivel ő rakta bele.
(azért 0x000, mert nincs megszakítása ennek a pic családnak nem 0x00c vagy 0x0c-n kezd)
(#) miklajos válasza miklajos hozzászólására (») Ápr 13, 2007 /
 
Vagyis vanmég valami:

VAR_TULCS
BCF INTCON,T0IF ;tulcsordulást jelző bit nullázása
MOVLW .125 ; TMR0 feltöltése 125el
SUBWF TEMP,0 ;

itt a W éréke már nem 125 lesz, nem tudom ezvolt-e a szándékod mert nem látom használva a temp-et máshol.

MOVWF TMR0 ;
VAR BTFSS INTCON,T0IF ;tulcsordulás figyelése
GOTO VAR ;még nem elég
BCF INTCON,T0IF ;most jó, tulcsordulást jelző bit nullázása
RETURN
(#) bokrosh válasza miklajos hozzászólására (») Ápr 13, 2007 /
 
Uhh, köszi!
Az RB megszakítás így már megy.(Ez minden más megszakítás esetén így van? vagy csak az RB4-7 lábakon lévő jelváltozásra?)

Ami a másik progit illeti, a azért raktam a 125-öt a temp-be hogy egy 0 tartalmú reg-ből kivonval, ezt növelem, akkor túlcsordulásig pont 125-öt kell számolni. Nem?

Ami a bank0-1et illeti. Jogos, benéztem. De ezt leghamarabb kedden tudom kipróbálni, mert ezt a problémát a másik gépemen felejtettem. Ezért szórakozok most az RB megszakításokkal.

És köszi megint, látszikhogy kened vágod kisujból GRAT
(#) watt válasza Csirgli hozzászólására (») Ápr 13, 2007 /
 
Ezt elhiszem, bár én így még soha nem kezdtem projectet.
Viszont próbáld ki ezt:
MAIN ; A látszat szerint a MAIN-nak a következő org állítaná be a címet, de NEM!
org 0x00
START ; Az org ennek állítja be a címét 0-ra!
org 0x20 ; A Te programod szerint ez lenne START címe.
CIMKE
org 0x30 ; Ez meg a CIMKE címe
VEGE ; holott ennek a címét állítja be

Ha ezt a program elejére írod, akkor:
MAIN = 0x00
START = 0x00
CIMKE = 0x20
VEGE = 0x30

Én csak arra próbálom felhaívni a figyelmedet, hogy az MPLAB os ajánlás félrerthető, később be fog csapni, ha nem érted amiről beszélek. Valamint fenntartom, hogy hibás a felhozatal, még ha nem is okoz hibát!!!
(#) watt válasza watt hozzászólására (») Ápr 13, 2007 /
 
Annyit még, hogy ne csodálkozz, ha netán beírod a példát, hogy hibát fog jelezni a fordító. Én még nem próbáltam ki, de elvileg két címkéhez nem rendelheti egy ugyanazon címet...
(#) miklajos válasza bokrosh hozzászólására (») Ápr 13, 2007 /
 
Ez a b port megszakításra jellemző, a pic adatlapját kell bujni mivel néha a chip hibás (pl16f876a uart megszakítás)

Ami a másik progit illeti, a azért raktam a 125-öt a temp-be hogy egy 0 tartalmú reg-ből kivonval, ezt növelem, akkor túlcsordulásig pont 125-öt kell számolni. Nem?
igen ezt én inkább úgy csinálnám meg:
movlw .130 ;255-125
movwf tmr0,f
stb.
egy utasítás kimarad (ne felejtsük el a PIC mem elég kicsi) plussz egy esetleges módósítás nem okoz gondot.
(#) Csirgli válasza watt hozzászólására (») Ápr 13, 2007 /
 
akkor most az org 0x000 (3 bites a cím!!) hova is írjam?

a main = 0x00 vagy 0x000 -> proc exceed memory... ERROR

mint a reset: MAIN CODE 0x000 is kiakad

írjam a main elé a dolgot?

az
org 0x000
MAIN
[program és a többi]


nem jelzett hibát
az inttrigg-ben meg átírtam az btfss, btfsc-ket jóra, de még nem müxik
(#) Norberto válasza Csirgli hozzászólására (») Ápr 13, 2007 /
 
Hali!

Találtam egy segédletet, ami sztem a korábbi MPLAB-okban volt megtalálható...

http://cc.ctu.edu.tw/~shiue/TUT877.ASM

Itt megvan, hogy egy "üres" alap-program eleje/fő szerkezete hogyan is kell kinézzen...
(#) watt válasza Csirgli hozzászólására (») Ápr 13, 2007 /
 
Persze, hogy elé kell írni, ennyi az össz lényege a dolognak!
Valamint az, hogy a microchip is csinál hibákat, nem véletlenül van annyi errata...

Nagyon bután hangzik, de hidd el, hogy még mindig a programodban van a hiba, ha nem azt csinálja amit akarsz.
Belinkelhetnéd a módosított forrást, hátha ráakadunk újabb hibákra, amiből mindannyian tanulhatunk!
Jó lenne, ha a forrást kiegészítenéd a javasolt megoldásokkal, hogy jobban lehessen olvasni, valamint a kritikus helyeknél megjegyzéseket tennél, hogy milyen logikai állapotoknál hova kéne elágazni.

(#) menyus hozzászólása Ápr 15, 2007 /
 
Üdvözlöm a PIC mágus Urakat (hölgyeket..?) Egy komplett PIC es project kivitelezésére keresek vállalkozó szellemű hozzáértőket, lehetőleg olyanokat akik rf témában járatosak. A PIC programozás (és általában a programozás...) kimaradt az eddigi életemből, ezért némi segítség kellene. Ki tudna segíteni? Természetesen nem ingyen.
(#) 8ball hozzászólása Ápr 16, 2007 /
 
Sziasztok!! Egy pic16f628-at szeretnék felprogramozni ezzel az égetővel
Ezzel de a programozás végén ezt a hibaűzenetett kapom"Verify failed at address 0000h"
Hozzáteszem kezdővagyok mit a pic-ben mint a programozásban Ja és az IC-Prog 1.05 öst használom!!elöre is köszönöm a segitséget
(#) watt válasza 8ball hozzászólására (») Ápr 16, 2007 /
 
Szerintem ahhoz kéne fordulnod segítségért, aki ilyen áramköröket terjeszt, ajánl! Részemről ha meglátok egy JDM-et, menekülök!
Nem igaz az az állítás, hogy minden PC-n megy, mert nem a 13V-al van egyedül probléma, hanem az RS232 szabványban, amit nem ártana ismernie annak aki ilyet tervez. Erről egyébként rengeteg vélemény van pro és kontra. Az is lehet természetesen, hogy valamit eltoltál az égető megépítésekor és ezért nem megy, mert azt sem lehet állítani, hogy egyik PC-n se megy.
Naszóval most találd ki, hogy neked milyen van, azaz hibás az áramköröd, vagy pont egy olyan PC-d van, ami nem veszi 0-nak a 0,7V-ot!!!!
(#) watt válasza watt hozzászólására (») Ápr 16, 2007 /
 
Bocsánat, eltévesztettem, mert a -3V az-az 1 az RS232 vonalon, de ez a lényegen nem változtat...
(#) Skip hozzászólása Ápr 16, 2007 /
 
Sziasztok! napokban építek egy égetőt(propic2) és azt szeretném megkérdeni hogy hogy tudom kipróbálni legegyszerűbben hogy működik-e?! nincs erre vkinek vmi jó ötlete ? vagy egy egyszerű kapcsolása!
még pic et is kell vennem mindenképpen többször írhatót szeretnék és nem tudom hogy milyen fajta kellene ebből is?! ha hülyeséget kérdek vagy nem olvastam utánna rendesen akkor szúrjatok le! köszi előre is pápá :yes:
Következő: »»   29 / 1318
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.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