Szerző |
Üzenet |
delmur
ezüst tag
Csatlakozott: csüt. jan. 31, 2008 9:00 Hozzászólások: 65
|
Üdv!
ha még kérdezhetek kérdezek.
csak annyi kéne hogy egy terminálról beadott számot szeretnék betenni egy regiszterbe majd visszaküldeni. A gond hogy a szám kétjegyű kéne hogy legyen. A cód:
Kód: VETEL2: BTFSS PIR1,RCIF ; (5) check for received data GOTO VETEL3 GOTO VETEL4
VETEL3: CLRWDT GOTO VETEL2
VETEL4: MOVF RCREG,W MOVWF EREDMENY CALL KULD
PL. ha elküldöm a 67 - et csak a 6-os kerül bele az EREDMENY - be
Az is gond hogy stringként küldöm. Azt szeretném elérni hogy a szám amit küldök számként kerüljön bele a regiszterbe. igy 255 - ig tudnék számot küldeni. Viszont ha decimalisként küldöma számot hülye karakterek jönnek vissza
|
csüt. okt. 23, 2008 20:13 |
|
|
delmur
ezüst tag
Csatlakozott: csüt. jan. 31, 2008 9:00 Hozzászólások: 65
|
Köszönöm a segítséget, én voltam a figyelmetlen.
oda kéne figyelni hogy a műveletek eredménye hová kerül
mégegyszer köszi.
|
csüt. okt. 23, 2008 15:11 |
|
|
potyo
gyémánt tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 3691 Tartózkodási hely: Ada
|
Nézd meg a Build ablakban az üzeneteket. Van ott két olyan üzenet is, amiben valami olyasmi szerepel, hogy using default destination. Na amelyik sorra ezt az üzenetet megjeleníti, az a sor okozza a problémát.
|
csüt. okt. 23, 2008 15:00 |
|
|
delmur
ezüst tag
Csatlakozott: csüt. jan. 31, 2008 9:00 Hozzászólások: 65
|
potyo írta: Én sejtem, hogy miért nem lesz a VETT_KAR kettő, vagyis jobban mondva, hogy miért nem az lesz benne, amire delmur82 számít, de nem mondom meg. Inkább annyit mondok, hogy a szimulátor pont az ilyesmire van kitalálva.
Elárulod a sejtésed?
|
csüt. okt. 23, 2008 14:50 |
|
|
delmur
ezüst tag
Csatlakozott: csüt. jan. 31, 2008 9:00 Hozzászólások: 65
|
watt írta: Ha a PC2_CIMKE: címke után a VETT_KARR soha nem lesz 2, akkor nem fut le soha a RESET rutin. Ha megtalálod miért nem lesz 2, akkor megvan a megoldás.
Nos igen én is erre jutottam csak nem tudok rájönni miért. A VETT_KARR - t mindig törlöm. A VETEL részben pedig tudomásom szerint mindig az aktuális elküldött karakter kéne hogy belemásolódjon. esetleg valamit még törölni kéne? Az a furcsa, hogy a PC1_CIMKE és a PC2_CIMKE rész teljesen ugyanaz.
|
csüt. okt. 23, 2008 14:48 |
|
|
potyo
gyémánt tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 3691 Tartózkodási hely: Ada
|
Én sejtem, hogy miért nem lesz a VETT_KAR kettő, vagyis jobban mondva, hogy miért nem az lesz benne, amire delmur82 számít, de nem mondom meg. Inkább annyit mondok, hogy a szimulátor pont az ilyesmire van kitalálva.
|
csüt. okt. 23, 2008 13:13 |
|
|
watt
gyémánt tag
Csatlakozott: szer. nov. 01, 2006 14:00 Hozzászólások: 3559 Tartózkodási hely: Régi nick .watt Hozzászólások: 3402
|
Ha a PC2_CIMKE: címke után a VETT_KARR soha nem lesz 2, akkor nem fut le soha a RESET rutin.
Ha megtalálod miért nem lesz 2, akkor megvan a megoldás.
|
csüt. okt. 23, 2008 13:06 |
|
|
delmur
ezüst tag
Csatlakozott: csüt. jan. 31, 2008 9:00 Hozzászólások: 65
|
Kód: UGRIK: MOVLW d'25' ; ha a gomb meg van nyomva, feltöltjük az összes számlálót MOVWF SZAMLALO
BTFSC PORTB,3 ; viszont SZAMLALO2-őt és SZAMLALO3 -at attól függően töltjük fel hogy GOTO UGRIK1 ; a gomb lenyomásakor PORTB 1. bitje (ami fél másodpercenként értéket GOTO UGRIK2 ; vált) aktív volt- e?
UGRIK1: MOVLW d'120' ; ha aktív volt 2 periódust kell várni következő felvillanásig ezért a MOVWF SZAMLALO2 ; számlálókba 1-el többet töltünk. MOVLW d'4' MOVWF SZAMLALO3 MOVLW d'135' MOVWF SZAMLALO4 GOTO UGRIK3
UGRIK2: MOVLW d'119' ; ha nem volt aktív a gomb csak 1 periódust kell várni az első felvillanásig MOVWF SZAMLALO2 ; ezért a számlálókat úgy töltjük fel mint a START szekcióban (alapeset) MOVLW d'3' MOVWF SZAMLALO3 MOVLW d'135' MOVWF SZAMLALO4 UGRIK3: MOVLW b'00000001' ; bárhogy töltöttük fel számlálókat KAPCS értékét 1-re kapcsoljuk hiszen gombnyomásra MOVWF KAPCS ; léptetünk. KAPCS értéke ugyancsak 2 sec után törlődik BTFSC TAROLOKAPCS,0 ; TAROLOKAPCS segít abban, hogy a gomb lenyomása alatt TAROLO csak egyszer NOP ; váltson értéket hiszen különben oda vissza villogna MOVFW TAROLO ; ha TAROLOKAPCS értéke 1 már történt váltás és átugorjuk a váltást XORLW b'00000001' ; TAROLOKAPCS is KAPCS -al együtt 2 sec mulva nullázódik így következő MOVWF TAROLO ; gombnyomásra megint válthat. De ha értéke 0, mehet a váltás BSF TAROLOKAPCS,0 CLRF VETT_KARR RETURN
RESET: CLRF ATALL_INDUL CLRF TNY_SZAMLALO_TIZES CLRF TNY_SZAMLALO_EGYES CLRF EREDMENY CLRF TNY_INDUL CLRF TNY_SZAMLALO MOVLW d'2' MOVWF KAPCS_SZAMLALO CLRF TELI_INDUL CLRF NYARI_INDUL MOVLW d'4' MOVWF NYARI_SZAMLALO MOVLW d'61' MOVWF NYARI_SZAMLALO2 CLRF VETT_KARR CLRF TIME_SETTING CALL UZENET2 RETURN
UZENET2: MOVLW 'R' CALL KULD MOVLW 'E' CALL KULD MOVLW 'S' CALL KULD MOVLW 'E' CALL KULD MOVLW 'T' CALL KULD MOVLW ' ' CALL KULD MOVLW 'O' CALL KULD MOVLW 'K' CALL KULD MOVLW 0x0D ; CR CALL KULD MOVLW 0x0A ; LF CALL KULD RETURN
KULD: MOVWF TXREG ; send data in W
BSF STATUS,RP0 ; BANK 1 WtHere: BTFSS TXSTA,TRMT ; (1) transmission is complete if hi GOTO WtHere BCF STATUS,RP0 ; BANK 0 CLRWDT RETURN
|
csüt. okt. 23, 2008 12:49 |
|
|
watt
gyémánt tag
Csatlakozott: szer. nov. 01, 2006 14:00 Hozzászólások: 3559 Tartózkodási hely: Régi nick .watt Hozzászólások: 3402
|
Mint már leírtam, ha abból visszajönne, akkor tovább is menne. Mivel nem jön vissza, nem megy tovább.
Idézet: viszont így is látszik a lényeg
Szerencse, hogy ezt ilyen jól meg tudod ítélni.
|
csüt. okt. 23, 2008 12:32 |
|
|
delmur
ezüst tag
Csatlakozott: csüt. jan. 31, 2008 9:00 Hozzászólások: 65
|
Nos tulajdonképpen ez egy kód részlet maga a progi nagyon hosszú, viszont így is látszik a lényeg. csak annyit csinál a program ezen része hogy a terminálról bevitt karakter hatására ami "1" vagy "2", de még lenne több is, lefuttatja a RESET vagy az UGRIK rutint. A rutinok működnek vissza is térnek mert más programrész is használja őket. Éppen ezért nem értem mert az első cimkébe bármilyen rutint hívok meg mind lefut visszatér viszont a másodikban egyik sem fut le. meg sem hívódik.
|
csüt. okt. 23, 2008 12:29 |
|
|
watt
gyémánt tag
Csatlakozott: szer. nov. 01, 2006 14:00 Hozzászólások: 3559 Tartózkodási hely: Régi nick .watt Hozzászólások: 3402
|
A CALL UGRIK hogy néz ki? Miért nem jön abból vissza? Mert ha abból visszajönne, akkor tovább kell menjen a program. Az más kérdés, hogy nem teszel megjegyzéseket a sorok mögé, így nem lehet érteni mit akarsz! A megjegyzés a program szerves része, nélküle még egy profi sem programoz!
|
csüt. okt. 23, 2008 12:19 |
|
|
delmur
ezüst tag
Csatlakozott: csüt. jan. 31, 2008 9:00 Hozzászólások: 65
|
Üdv!
Ismét egy kis segítség kéne.
Általában mindig rájövök ha valamit elrontok programozás közben de ez most teljesen kész. Nem tudok rájönni. Biztos hogy valami pitiáner dolog , lehet hogy már nem fog az agyam. Hátha a tiétek frissebb:
Kód: VETEL: BTFSS PIR1,RCIF ; (5) check for received data GOTO VETEL
MOVF RCREG,W MOVWF VETT_KARR ; save received data in VETT_KARR PC1_CIMKE: BCF STATUS,Z ;megvizsgálom status - t MOVLW '1' XORWF VETT_KARR BTFSS STATUS,Z ; ha status '1' tehát a vett karakter 1 akkor call ugrik GOTO PC2_CIMKE CALL UGRIK GOTO PC2_CIMKE
PC2_CIMKE: BCF STATUS,Z MOVLW '2' XORWF VETT_KARR BTFSS STATUS,Z GOTO VETEL CALL RESET GOTO VETEL
Egyszerűen a program nem jut el PC2_CIMKE részhez. Már fölcseréltem a két cimkét de semmi. Az első "helyen" álló cimkét szépen végrehajtja CALL UGRIK, de a CALL resetet soha. Csak akkor ha a CALL RESET - et beírom az első cimkébe. Magyarul akár mit csinálok ,bárhogy variálom csak a VETEL utáni cimkét csinája meg. Ilyennel még nem találkoztam. Mi lehet az oka? Hol rossz a kód?
A hozzászólást 1 alkalommal szerkesztették, utoljára delmur csüt. okt. 23, 2008 12:31-kor.
|
csüt. okt. 23, 2008 11:22 |
|
|
watt
gyémánt tag
Csatlakozott: szer. nov. 01, 2006 14:00 Hozzászólások: 3559 Tartózkodási hely: Régi nick .watt Hozzászólások: 3402
|
Ennek örülök! Gratulálok!
|
szer. okt. 22, 2008 12:28 |
|
|
delmur
ezüst tag
Csatlakozott: csüt. jan. 31, 2008 9:00 Hozzászólások: 65
|
Köszönöm mindenkinek a segítséget.Tökéletesen működik.
|
szer. okt. 22, 2008 12:17 |
|
|
watt
gyémánt tag
Csatlakozott: szer. nov. 01, 2006 14:00 Hozzászólások: 3559 Tartózkodási hely: Régi nick .watt Hozzászólások: 3402
|
Próbáld ki. Ha működik, akkor lehetsz biztos. Tönkre nem mehet semmi.
|
szer. okt. 22, 2008 7:48 |
|
|
delmur
ezüst tag
Csatlakozott: csüt. jan. 31, 2008 9:00 Hozzászólások: 65
|
Ok köszi. Már kiszámoltam csak biztos akarok lenni. Akkor high lesz a sebeség. Mégegyszer köszi.
|
szer. okt. 22, 2008 7:38 |
|
|
watt
gyémánt tag
Csatlakozott: szer. nov. 01, 2006 14:00 Hozzászólások: 3559 Tartózkodási hely: Régi nick .watt Hozzászólások: 3402
|
Idézet: 4 MHz alatt már low?
Ennek semmi köze nincs ehhez, pláne, hogy a nagyobb frekikhez kell a low.
Ismételni tudom, ott van minden az adatlapban, egyszerű a képlet, had ne én számolja ki ezt is, kicsit több önállóság kell ilyesmihez!
|
szer. okt. 22, 2008 7:33 |
|
|
delmur
ezüst tag
Csatlakozott: csüt. jan. 31, 2008 9:00 Hozzászólások: 65
|
Köszönöm a segítséget. Akkor az én osc sebességemmel hogy számoljak?
A BRGH bitet high vagy low -ra állítsam? 4 MHz alatt már low?
Egyébként a fenti programban a képlet alapján kijön a 9600 baud mert x - re 25 jön ki. (ha jól számoltam.) Viszont az én 3,2768 MHz - es oscimra BRGH = low esetén 9600 baud, aszinkron komm esetén 4,3 jön ki. Ezt kerekítsem 4-re?
A legközelebb akkor jutnék egy egész számhoz ha 7200 baud - ot használnék. Akkor x - re 6,1 jön ki. Azt 6 -ra kerekítve 7314 baud jönne ki. Nem tudom az már működne -e?
|
szer. okt. 22, 2008 7:06 |
|
|
watt
gyémánt tag
Csatlakozott: szer. nov. 01, 2006 14:00 Hozzászólások: 3559 Tartózkodási hely: Régi nick .watt Hozzászólások: 3402
|
delmur írta: Nos 3,2768 Megás van. Ezért nem megy? HOgy kéne ebben az esetben beállítani 9600 ra?
Akkor a "nullmodemes" próba jól működik ez jó hír!
Az kevésbé, hogy nem gondoltál arra, hogy az eredeti kapcsolás bárminemű megváltoztatása hibát okoz, és e miatt jól megtréfáltál itt mindenkit!
Ha ezt a kristályt akarod használni, akkor a beállítást az SPBRG registerben lévő érték átírásával tudod megtenni. Adatlap USART résznél vannak a képletek az BRGH bit állapotától függően(A TXSTA-ban van a bit).
Miért pont 9600-ra? Kérdezem ezt azért, mert a programban eddig is 19200 volt a beállított, persze ha 4megás kvarc lett volna rajta...
|
szer. okt. 22, 2008 5:34 |
|
|
potyo
gyémánt tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 3691 Tartózkodási hely: Ada
|
Hát igen, mint írtam, nekem is elindult. De ha hozzáértem valamelyik lábhoz, akkor le is állt. Ha viszont ott voltak a kondenzátorok, akkor agyon sem lehetett ütni
|
kedd okt. 21, 2008 21:58 |
|
|
gozi
arany tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 382
|
potyo írta: Látni néha fura dolgokat. Valamelyik nap említette valaki, hogy nem szokott kondenzátort tenni a kvarc mellé, és így gyártottak már le valamiből több száz darabot is. Nekem is működött így, de nem adnám a nevemet hozzá... Hááát... Ha valahogy összejön 10-15 pF, akkor akár működöképes lehet addig, amíg a környezeti jellemzők meg nem változnak...
|
kedd okt. 21, 2008 21:55 |
|
|
gozi
arany tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 382
|
Ha nem akarsz vacakolni, a 16F628A-nál konfig bitekkel állítsd be a 4 MHz-es belső oszcit.
__config _INTRC_OSC_NOCLKOUT & _LVP_OFF & _WDT_OFF & _PWRTE_ON & _BODEN_ON
|
kedd okt. 21, 2008 21:48 |
|
|
delmur
ezüst tag
Csatlakozott: csüt. jan. 31, 2008 9:00 Hozzászólások: 65
|
Nos 3,2768 Megás van. Ezért nem megy? HOgy kéne ebben az esetben beállítani 9600 ra?
|
kedd okt. 21, 2008 21:38 |
|
|
potyo
gyémánt tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 3691 Tartózkodási hely: Ada
|
gozi írta: potyo írta: Kinek a tiszteletére tetted oda Nem kell. Vedd ki a pic-et, és zárd rövidre a foglalatban a tx és rx lábait. Ekkor visszajön a terminalba, amit kiküldesz? Sok helyen láttam már ilyen megoldást, különböző ellenállásértékekkel: 47 ohm, 100 ohm 1k, 2,2k. De miért tették oda a soros ellenállást? Fogalmam sincs, talán valami védelmi célból. Látni néha fura dolgokat. Valamelyik nap említette valaki, hogy nem szokott kondenzátort tenni a kvarc mellé, és így gyártottak már le valamiből több száz darabot is. Nekem is működött így, de nem adnám a nevemet hozzá...
|
kedd okt. 21, 2008 21:38 |
|
|
delmur
ezüst tag
Csatlakozott: csüt. jan. 31, 2008 9:00 Hozzászólások: 65
|
Nos szerintem a soros portról érkező zavarokat hivatott kivédeni. Viszont a karakterek szépen visszajönnek pic nélkül. de ha beteszem csak fura karakterek jönnek. A pic jó mert egyéb program szépen megy rajta. A progit meg nem én írtam. Szóval
|
kedd okt. 21, 2008 21:37 |
|
|
gozi
arany tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 382
|
Hány megás kvarcod van? A fenti beállítás 4MHz esetén fog 9600 bps-t adni.
|
kedd okt. 21, 2008 21:36 |
|
|
gozi
arany tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 382
|
potyo írta: Kinek a tiszteletére tetted oda Nem kell. Vedd ki a pic-et, és zárd rövidre a foglalatban a tx és rx lábait. Ekkor visszajön a terminalba, amit kiküldesz? Sok helyen láttam már ilyen megoldást, különböző ellenállásértékekkel: 47 ohm, 100 ohm 1k, 2,2k. De milyen okkal teszik oda a soros ellenállást?
|
kedd okt. 21, 2008 21:30 |
|
|
delmur
ezüst tag
Csatlakozott: csüt. jan. 31, 2008 9:00 Hozzászólások: 65
|
igen visszajön
|
kedd okt. 21, 2008 21:27 |
|
|
potyo
gyémánt tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 3691 Tartózkodási hely: Ada
|
Kinek a tiszteletére tetted oda Nem kell. Vedd ki a pic-et, és zárd rövidre a foglalatban a tx és rx lábait. Ekkor visszajön a terminalba, amit kiküldesz?
|
kedd okt. 21, 2008 21:19 |
|
|
delmur
ezüst tag
Csatlakozott: csüt. jan. 31, 2008 9:00 Hozzászólások: 65
|
az én panelemen a PIc és a MAX között van egy 1K - os ellenállás. Nem kavarhat az be?
|
kedd okt. 21, 2008 21:13 |
|
|
gozi
arany tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 382
|
Hűű tényleg. Röhely, hogy egy ilyen egyszerű kapcsolás és nem tudják normálisan lerajzolni...
Itt egy jó:
http://elka.brawijaya.ac.id/info/img/artikel/RS232_adapter.PNG
A hozzászólást 1 alkalommal szerkesztették, utoljára gozi kedd okt. 21, 2008 21:24-kor.
|
kedd okt. 21, 2008 21:12 |
|
|
potyo
gyémánt tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 3691 Tartózkodási hely: Ada
|
delmur írta: A 6 - os lábán a kondi polaritáshelyesen van? mert más rajzokon máshogy van Nem, fordítva van.
|
kedd okt. 21, 2008 21:10 |
|
|
delmur
ezüst tag
Csatlakozott: csüt. jan. 31, 2008 9:00 Hozzászólások: 65
|
A 6 - os lábán a kondi polaritáshelyesen van? mert más rajzokon máshogy van. Illetve az én panelemen a PIc és a MAX között van egy 1K - os ellenállás. Nem kavarhat az be?
A hozzászólást 1 alkalommal szerkesztették, utoljára delmur kedd okt. 21, 2008 21:11-kor.
|
kedd okt. 21, 2008 21:09 |
|
|
delmur
ezüst tag
Csatlakozott: csüt. jan. 31, 2008 9:00 Hozzászólások: 65
|
kipróbáltam és sajnos ezzel is fura karaktereket küld. Nem tudom mi lehet. Ha valakinek van ötlete azt szivesen fogadom. Esetleg aMAX232 vel kapcsolatban valami tuti rajzot. Nem kell semelyik bemenetée földre húzni ?
|
kedd okt. 21, 2008 20:18 |
|
|
watt
gyémánt tag
Csatlakozott: szer. nov. 01, 2006 14:00 Hozzászólások: 3559 Tartózkodási hely: Régi nick .watt Hozzászólások: 3402
|
Ha összekötöd azt a két lábat amit írtam, akkor azt kell visszakapjál, amit elküldesz, különben hardveres gond van.
Használd a BrayTerminalt, annál nincs jobb.
www.watt_tar1.tvn.hu/terminal/Terminal.exe
|
kedd okt. 21, 2008 20:08 |
|
|
snapscan
platina tag
Csatlakozott: szomb. jan. 01, 2005 11:21 Hozzászólások: 857
|
watt írta: Ha tartod a véleményed, akkor nem érted a lényeget. Ja és isten mentsen, hogy oldalakat írj!
De, értem.
Rádumáltál, nem írok.
|
kedd okt. 21, 2008 20:02 |
|
|
delmur
ezüst tag
Csatlakozott: csüt. jan. 31, 2008 9:00 Hozzászólások: 65
|
Nem nagyon használtam még a terminált. Gondolom a hyper terminálról van szó. Nem is nagyon tudom hogy álítsam be. esetleg nem tudnál segíteni hogyan állítsam be hogy egyszerűen elmenjenek a karakterek?
Az RSCheck nevű progival csinál valamit de nem azt a számot kapom amit elküldök. betűt meg nem is tudok elküldeni
|
kedd okt. 21, 2008 19:52 |
|
|
watt
gyémánt tag
Csatlakozott: szer. nov. 01, 2006 14:00 Hozzászólások: 3559 Tartózkodási hely: Régi nick .watt Hozzászólások: 3402
|
Esetleg nem stimmel a baudrate?
Ha összekötöd a max232 9 és 10-es lábát, ügyelve arra, hogy a PIC-ről lekötöd először, akkor megfordulnak az adatok a terminál szerint?
|
kedd okt. 21, 2008 19:42 |
|
|
delmur
ezüst tag
Csatlakozott: csüt. jan. 31, 2008 9:00 Hozzászólások: 65
|
Igen bocsi már megfordítottam. Már reagál a progi csak nem azt küldi amit én küldök. Szerinted mivel lehet a gond?
|
kedd okt. 21, 2008 19:38 |
|
|
watt
gyémánt tag
Csatlakozott: szer. nov. 01, 2006 14:00 Hozzászólások: 3559 Tartózkodási hely: Régi nick .watt Hozzászólások: 3402
|
Idézet: MAX 7 -es megy RS232 3-as láb MAX 8-as megy RS232 2-es láb. Szerintem jó.
Szerintem meg nem!
Ha a PC-n lévő csatlakozó lábkiosztását írtad, akkor nem jó.
Ha a kábeled végén lévő csatlakozó lábkiosztását akkor sem jó, hacsak nem "keresztkábel" amin belül a 2-es a 3-asra van kötve a másik végén.
|
kedd okt. 21, 2008 19:31 |
|
|
delmur
ezüst tag
Csatlakozott: csüt. jan. 31, 2008 9:00 Hozzászólások: 65
|
Rendben van a hardware működik. Viszont nem azt küldi vissza a PIC amit küldök. esetleg próbáljam meg másik progival? Melyikkel?
|
kedd okt. 21, 2008 19:24 |
|
|
delmur
ezüst tag
Csatlakozott: csüt. jan. 31, 2008 9:00 Hozzászólások: 65
|
Sziasztok!
PIC16F628A kontrollerről van szó. Szeretném beindítani a soros kommunikációt. A hardware elméletileg jó(minden egyéb működik szépen), a progi amit beleteszek egy sima példaprogi küldök valamit a
pic meg visszaküldi. Mégse megy a kommunikáció. PIC 7 -es (Rx) megy a MAX232 9 - es lábára, PIC 8 -as (Tx) megy MAX 10-es lábára. MAX 7 -es megy RS232 3-as láb MAX 8-as megy RS232 2-es láb. Szerintem jó.
A progit azért mellékelem bár jónak tűnik. terminálnak az RSCheck nevű progit használom. Csak az kéne hogy meglegyen a hiba miért nem megy.
Nagyon megköszönném a segítséget.(a max232 kondizva van rendesen 4db)esetleg valamit még le kell zárni rajta?
Kód: LIST P=16F628, R=DEC ; Use the PIC16F628 and decimal system ERRORLEVEL -302 #include "P16F628.INC" ; Include header file
__config _XT_OSC & _LVP_OFF & _WDT_OFF & _PWRTE_ON & _BODEN_ON
CBLOCK 0x20 ; Declare variable addresses starting at 0x20 dataL ENDC
ORG 0x000 ; Program starts at 0x000 ; ; -------------------------------- ; SET ANALOG/DIGITAL INPUTS PORT A ; -------------------------------- ; movlw 7 movwf CMCON ; CMCON=7 set comperators off ; ; ---------------- ; INITIALIZE PORTS ; ---------------- ; movlw b'00000000' ; set up portA movwf PORTA movlw b'00000100' ; RB2(TX)=1 others are 0 movwf PORTB
bsf STATUS,RP0 ; RAM PAGE 1
movlw 0xFF movwf TRISA ; portA all pins input
movlw b'11110010' ; RB7-RB4 and RB1(RX)=input, others output movwf TRISB
; ------------------------------------ ; SET BAUD RATE TO COMMUNICATE WITH PC ; ------------------------------------ ; Boot Baud Rate = 9600, No Parity, 1 Stop Bit ; movlw 0x19 ; 0x19=9600 bps (0x0C=19200 bps) movwf SPBRG movlw b'00100100' ; brgh = high (2) movwf TXSTA ; enable Async Transmission, set brgh
bcf STATUS,RP0 ; RAM PAGE 0
movlw b'10010000' ; enable Async Reception movwf RCSTA ; ; ------------------------------------ ; PROVIDE A SETTLING TIME FOR START UP ; ------------------------------------ ; clrf dataL settle decfsz dataL,F goto settle
movf RCREG,W movf RCREG,W movf RCREG,W ; flush receive buffer ; ; --------- ; MAIN LOOP ; --------- ; call message ; send "16F628 alive" loop call receive ; wait for a char call send ; send the char goto loop ; ; ------------------------------------------- ; RECEIVE CHARACTER FROM RS232 AND STORE IN W ; ------------------------------------------- ; This routine does not return until a character is received. ; receive btfss PIR1,RCIF ; (5) check for received data goto receive
movf RCREG,W ; save received data in W return ; ; ------------------------------------------------------------- ; SEND CHARACTER IN W VIA RS232 AND WAIT UNTIL FINISHED SENDING ; ------------------------------------------------------------- ; send movwf TXREG ; send data in W
TransWt bsf STATUS,RP0 ; RAM PAGE 1 WtHere btfss TXSTA,TRMT ; (1) transmission is complete if hi goto WtHere
bcf STATUS,RP0 ; RAM PAGE 0 return ; ; ------- ; MESSAGE ; ------- ; message movlw '1' call send movlw '6' call send movlw 'F' call send movlw '6' call send movlw '2' call send movlw '8' call send movlw ' ' call send movlw 'a' call send movlw 'l' call send movlw 'i' call send movlw 'v' call send movlw 'e' call send movlw 0x0D ; CR call send movlw 0x0A ; LF call send return
END
|
kedd okt. 21, 2008 19:06 |
|
|
watt
gyémánt tag
Csatlakozott: szer. nov. 01, 2006 14:00 Hozzászólások: 3559 Tartózkodási hely: Régi nick .watt Hozzászólások: 3402
|
Ha tartod a véleményed, akkor nem érted a lényeget.
Ja és isten mentsen, hogy oldalakat írj!
|
kedd okt. 21, 2008 10:47 |
|
|
snapscan
platina tag
Csatlakozott: szomb. jan. 01, 2005 11:21 Hozzászólások: 857
|
watt írta: Kár, hogy Te sem érted az egész lényegét! Feladom...
Azért mert nem írok fél oldalas levelet a miértekről, csak a gondolatmenetem végeredményét, még nem kell hülyének nézni, értem miről beszélsz. Ennek ellenére tartom a véleményem.
|
kedd okt. 21, 2008 9:45 |
|
|
watt
gyémánt tag
Csatlakozott: szer. nov. 01, 2006 14:00 Hozzászólások: 3559 Tartózkodási hely: Régi nick .watt Hozzászólások: 3402
|
Idézet: Arra kíváncsi lennék, hogy azok akik ellenzik mindenféleképp a magasszintű fordítókat, használták-e őket huzamosabb ideig...
Igen használok.
De itt a kezdésről volt szó, és már leírtam az indokokat. Nincs mit erről többet beszélni.
|
kedd okt. 21, 2008 4:43 |
|
|
potyo
gyémánt tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 3691 Tartózkodási hely: Ada
|
Én nem ellenzem, csak azt mondom, hogy ahhoz, hogy a kontrollereket tudja rendesen használni, ahhoz tudni kell, hogy mi történik a háttérben. Azt pedig asm nyelven lehet megtanulni. Én sem írok mindent asm-ben, de azért a listing fájlt meg szoktam nézegetni, ha valami nem úgy működik, mint ahogy én azt szeretném. Nemrég ráfutottam egy hibára az SDCC fordítóban: kihagyott egy bankváltást. Ennek köszönhetően pedig nem a TMR1L regisztert olvasta ki, hanem valami mást. Namost ha nem nézem meg az asm listát, és nem tudom, hogy ott minek kellene állnia, akkor sosem jövök rá, hogy a fordító fordítja hibásan a kódot.
|
hétf. okt. 20, 2008 19:34 |
|
|
gozi
arany tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 382
|
Srácok!
Arra kíváncsi lennék, hogy azok akik ellenzik mindenféleképp a magasszintű fordítókat, használták-e őket huzamosabb ideig... Én már szinte csak magasszintű fordítót használva (ált. valamilyen C) feljesztek, nem azért, mert nem ismerem az asm-et, hanem azért, mert hihetetlenül megnövelné a fejlesztési időt. Egy kis USB, Ethernet, TCP on Modbus... Durva lenne ezt mind asm-ben programozni, főleg ha előjön valami hiba. Kollégám megrögzött asm-es volt addig, amíg egy több ezer soros programban hibát kellett keressen.
Az is érdekes, hogy annyira féltek a bugoktól... Én a feljesztéseim során az MPLAB ASM-jében majdnem annyi bugot találtam, mint a "magasszintű" fordítókban... Innentől kezdve nincs miről beszélni.
|
hétf. okt. 20, 2008 19:13 |
|
|
watt
gyémánt tag
Csatlakozott: szer. nov. 01, 2006 14:00 Hozzászólások: 3559 Tartózkodási hely: Régi nick .watt Hozzászólások: 3402
|
Kár, hogy Te sem érted az egész lényegét! Feladom...
|
hétf. okt. 20, 2008 18:48 |
|
|
snapscan
platina tag
Csatlakozott: szomb. jan. 01, 2005 11:21 Hozzászólások: 857
|
Szerintem fogadjuk el, hogy mindenki magának választ nyelvet és uC-t is, ne akarjuk meggyőzni arról, hogy mi lesz jó neki, ha egyszer úgy érzi, ez kell neki.
|
hétf. okt. 20, 2008 14:23 |
|
|
watt
gyémánt tag
Csatlakozott: szer. nov. 01, 2006 14:00 Hozzászólások: 3559 Tartózkodási hely: Régi nick .watt Hozzászólások: 3402
|
Igen, az ATMELT benéztem, elnézést!
És a másik kérdésedre is igen a válasz, természetesen!
Idézet: de egy soros protokoll ami basicban (pacalban) 2 utasítás, azt Te asm-ben hány oldalon programozod le?
Attól függ melyik részét kérdezed.
A beállításokat mindkét nyelven meg kell tenni, csak eltérő utassításokkal.
pl. Open vs. mov. (regisztereként 1, vagy két sor, az USART-nál max 3 regisztert kell beállítani)
A kivitelt egyik nyelv sem támogatja protokollal, csak hardveresen.
ASM-ban egy kivitel: mov #'K', w0 majd mov w0, U1TXREG
Előtte még éremes megnézni, hogy a TX modul szabad-e, ami szintén néhány sor, de ha be akarok építeni egy hibakezelést, akkor az még néhány sort igényel, de ez a magasabb szintű nyelvekben is így van.
A különbség csak annyi, hogy én tudom mit miért állítok be, Te meg a nyelv elrejtése miatt nem. Ez akkor lesz kellemetlen, ha valami nem úgy működik ahogy kellene, mert nem láthatod meg az okot. A végeredmény, hogy soha nem fogod ismerni a PIC-et teljesen, ami egy áramkör jellegű dolognál elég gáz.
|
hétf. okt. 20, 2008 10:06 |
|
|