Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   340 / 1319
(#) mrfencer válasza trudnai hozzászólására (») Nov 15, 2008 /
 
Üdv!
Lassan haladok a programozással, mert az áramkörömet is javítani kellett. Eljutotam odáig, hogy a bementeről egy tárolo regiszterbe másolom a bemenetet, és shiftelek jobbra hogy az utolsó bitem legyen 0.(Mert csak 7 szenzorom van tehát a 8.ik bit nem érdekel) De nincs ötletem a továbbiakra. Hogyan tudnám szelektálni az RD port bitjeit valami feltétellel, hogy ha mondjuk b'11110000' van az RD porton, akkor azt tudjam mondani, hogy az RB3 legyen 1. Adnátok valami ötletet vagy felvezetést amin elindulhatnék? Előre is köszi! Belinkelem a progimat eddgi hogy néz ki.
(#) mrfencer válasza mrfencer hozzászólására (») Nov 15, 2008 /
 
Lenne egy kérdésem, olvasgatom itt a szubrutinokat meg macrkat. El tudná nekem valaki magyarázni, hogy mit is jelent a loop? Mert mindenhol csak használják, de sehol nem irják le, mit is jelent valójában. Köszönöm!
(#) trudnai válasza mrfencer hozzászólására (») Nov 15, 2008 /
 
Loop ugyanaz mint az iteracio, csak ez utobbi kifejezes matematikai inkabb. Magyarul cikluskent szokas emlegetni. Lenyege, hogy vagy felteteltol fuggoen, vagy feltetel nelkul vissza ugralsz a programodban hogy ugyanazt a lepes sorozatot tobbszor hajtsd vegre. A feltetel nelkuli ciklus az un. vegtelen ciklus (infinite loop vagy infinite iteration)...
(#) googa hozzászólása Nov 15, 2008 /
 
Nem tudna valaki segíteni, hogy ez mit jelent:
ERRORLEVEL 0, -302

Na jó, csak viccelődtem Bocsi Potyo!
(#) szigetivan hozzászólása Nov 15, 2008 /
 
Sziasztok!

van egy programom, mivel szöveget szeretnék küldeni PC-nek PIC16F690-el, de mindig ugyanazt a hibaüzenetet adja ki."Symbol not previously defined (ASend)"
de nem érttem miért, pedig definiáltam??
Tudna nekem v.ki segíteni,h.tudnám a hibát kiküszöbölni és szöveget küldeni a PC-nek??

rs232.txt
    
(#) trudnai válasza szigetivan hozzászólására (») Nov 15, 2008 /
 
  1. CALL    ASend
  2.         END
  3.  
  4. Asend   BCF     STATUS,5


Eloszor is az 'END' direktiva csak egy jelzes a fordito szamara, hogy "itt a program vege, ami ezutan irodott azt mar NE probald meg leforditani". Tehat amit az END utan irtal a fordito figyelmen kivul hagyja.

Masodszor a mikrokontrollereknel nem lehet "kilepni a programbol" mert nincs operacios rendszered, nincs hova kilepnie, a program fut tovabb... Az END utan meg vigan tovabb szalad a program es a program memoriaban levo szemetet vegrehajtja barmi legyen is az, sot, ha a program memoria vegere ert kezd mindent elolrol... Ha azt akarod "alljon meg" akkor egy vegtelen ciklust kell csinalnod (pl "GOTO $")

Legvegul pedig nem szerencses kulonbozo kis-nagy betus kevereseket csinalni meg akkor sem ha a fordito egyebkent elfogadja. Tehat ha az "ASend" nevu rutint meghivod akkor a cimke ne "Asend" legyen, ne is "asend" vagy "ASEND" hanem "ASend"...

Ja es meg valami, ha vissza olvasgatsz epp az EQU es egyeb valtozo deklaraciokrol esett szo a napokban, olvasd el miket irtak es minimum CBLOCK-osra irdd at - jobb lenne ha mar az elejen megtanulnad a linker scriptet persze, d ez az EQU-s valtozo definialgatas nagyon nem szep.

(#) kobold válasza szigetivan hozzászólására (») Nov 15, 2008 /
 
Elírás; az "END" utasítás előtt az van, hogy "CALL ASend", a rutin neve viszont "Asend". Kis- és nagybetűket megkülönbözteti a fordító (bár ezt le is lehet tiltani neki), emiatt nem találja meg a rutint.
(#) icserny válasza mammut hozzászólására (») Nov 15, 2008 /
 
Idézet:
„Valaki megtudná nek mondani, hogy miért ír vissza ilyet az Mplab”

Igen. Azért,mert nem tiltottad le afigyelmeztető üzeneteket.

Ha zavarnak, akkor szúrj a program elejére egy

  1. errorlevel 2


(ez minden figyelmeztetést letilt!) vagy legalább egy
  1. errorlevel -302


sort.
(#) icserny válasza potyo hozzászólására (») Nov 15, 2008 /
 
Idézet:
„Hasznos dolog a Futtatás mint... opció”


Szégyen a Futtatás mint..., de hasznos. Rendszergazdaként futtatva tényleg működik a Hi-Tech C fordító. Na, akkor le is törlöm! Utoljára a múlt században(sic!) használtam olyan rendszert (Win98), amelyikben "természetesnek" vették, hogy mindenki mindenbe belerondíthat.
(#) szigetivan válasza trudnai hozzászólására (») Nov 15, 2008 /
 
Köszi a gyors választ, kijavítottam a kis-nagybetüs meg az END hibát amit a legvégére raktam. De most viszont ez a hiba, ami a buildeléskor lépett fel:

Error - section '.org_0' can not fit the absolute section. Section '.org_0' start=0x00000000, length=0x00000046


rs232_v2.doc
    
(#) trudnai válasza szigetivan hozzászólására (») Nov 15, 2008 /
 
Aham, linker scriptet bele raktad a projectedbe, csak nem irtad at a programodat

Linker script hasznalata

Amugy a GOTO $ az NEM az END moge kell! Megegyszer: Ami az END mogott van az "nem letezik a fordito szamara".
(#) sszasza hozzászólása Nov 15, 2008 /
 
MPLAB C18 kérdés.
#pragma udata access _intregs = 0x40
linker script:
ACCESSBANK NAME=intram START=0x40 END=0x5f PROTECTED
Fordito véleménye: Error [1013] error in pragma directive
Mi nem tetszik neki?
(#) szigetivan válasza trudnai hozzászólására (») Nov 15, 2008 /
 

Sziasztok. Köszi mostmár lefordul, csak debuggoláskor beáll ennél, és nem küldi az adatokat:

BTFSS TXSTA,1
GOTO $-1


Viszont ha ezt a két sort kiveszem a progibol, akkor végig lefut a progi, beáll a végtelen ciklusba, de a következő hibaüzeneteket adja:

UART-W0001: Overrun, write occured over a full TXREG SFR. Data lost
CORE-E0002: Stack under flow error occurred from instruction at 0x000021
CORE-E0001: Stack over flow error occurred from instruction at 0x000016

Mit kéne ilyenkor tenni?
Miért nem tudja elküldeni az adatokat?

rs232_v3.txt
    
(#) szigetivan hozzászólása Nov 15, 2008 /
 
Hogy tudom figyelni a Hyperterminálban, hogy a Tx-en kiküldött adatok megérkeznek-e a számitogépre?
(#) icserny válasza sszasza hozzászólására (») Nov 16, 2008 /
 
Lehet, hogy csak elavult a fordítód?
MPLAB C18 v3.22 -vel hibajelzés nélkül lefordul pl. ez:

  1. #include "p18cxxx.h"
  2.  
  3. #pragma udata access _intregs = 0x40
  4. int a;
  5.  
  6. void main() {
  7. a=1;
  8. }
(#) icserny válasza szigetivan hozzászólására (») Nov 16, 2008 /
 
Szemrevételezéssel. Vagy mire gondoltál?
(#) szigetivan válasza icserny hozzászólására (») Nov 16, 2008 /
 
Szia! Hát arra,h.én hyperterminállal nem látok semmilyen adat amit elküldtem és megjelenne. azaz most nem vágom hol a probléma..
(#) szilva válasza icserny hozzászólására (») Nov 16, 2008 /
 
Megnéztem, ennek a midrange-es TRIS utasításnak 3 bit az paramétere, tehát az nem meglepő, ha csak a nulladik memórialapon lévő portokra képes működni (az eredeti, baseline-os TRIS is ilyen, ott a port címét kell megadni neki, ami emlékeim szerint 6 vagy 7). Ettől függetlenül pont a kis midrange-ekben (12F, low pin count 16F) lehet, hogy nem hülyeség a használata, pont a szűkösebb programmemória-méret miatt.

Mivel az advanced midrange kapcsán merült fel, mint nem dokumentált utasítás, nem hinném, hogy a korábbi eszközök bármelyikénél ezt a "tudást" kiírtották volna - az valószínűleg többletmunkával és többletköltséggel járt volna. Ha valamikor, akkor most, az új család tervezésekor megtehették volna a megszüntetést, de látjuk, hogy valamiért még most sem tették meg.
(#) dolfin válasza icserny hozzászólására (») Nov 16, 2008 /
 
Már nem demo

Csak a Procedur-ák mérete nem lehet bizonyos méreten felül, mert nem fér bele a PIC-be, de ha többe teszed bele kis leleményességgel akkor megy a dolog.
A másik kérdésemre még mindig választ kérnék:

Idézet:
„"Egy ADÓ-Vevő egységet szeretnék csinálni (433Mhz-es modulokkal). Fontos az hogy a RX lábon legyen az a vevő és a TX-en az adó?
A Manchester kódolás megvan meg minden, ha rákötök ledet az adó aktív részére, és a vevő aktív részére akkor látom hogy a jel átmegy, de a PIC nem teszi azt amit kellene. (bizonyos ifó átjön akkor megnézi mi az és attól függően ad magas vagy alacsony jelet a lábaira), de ez nem akarja.
A táp kondival és 7805-el megy, gondolom akkor elég stabil és zajmentes (vagy hogyan lehetne még jobban leárnyékolni, pl konzervdobozba, és csak a antennát vezetném ki rajta??), mert sajnos néha néha falsot villan, akkor is vesz jelet ha adó nem ad.
Köszi a választ."”


Köszi
(#) szilva válasza icserny hozzászólására (») Nov 16, 2008 /
 
Talán a végére lehetne járni, hogy mit akar, amihez nincs rendszergazdai joga. Az is lehet, hogy elég lenne csak "power user"-ként használni, nem?
(#) MPi-c válasza dolfin hozzászólására (») Nov 16, 2008 /
 
Idézet:
„Fontos az hogy a RX lábon legyen az a vevő és a TX-en az adó?”

Nem, de akkor az UART-ot neked kell szoftveresen megoldani.
(#) szigetivan válasza szigetivan hozzászólására (») Nov 16, 2008 /
 
sziasztok!
v.kinek van ötlete (#307638) kérdésemmel kapcsolatban??Sürgős lenne!!!
(#) mrfencer válasza watt hozzászólására (») Nov 16, 2008 /
 
Üdv!
Tudnátok nekem valami tippet adni, hogy egy egész port bitjeit, hogyan teszteljem és irjak rá fetételt? Mert egy bit tesztelése és feltétel irása rá, már megyeget, de nekem a 8 bitből 7et kellene figyelnem egyszerre és azok változására feltételt irni.Erre viszont nincs ötletem!
Előre is köszi
(#) kissi válasza mrfencer hozzászólására (») Nov 16, 2008 /
 
Szia!

A regiszteredet elmented egy un. árnyékregiszterbe és a bejövő adat és az árnyékregiszter között XOR műveletet csinálva, a megfelelő 7 bitet AND kapcsolattal kimaszkolva megvan az eredmény!

Steve
(#) trudnai válasza szigetivan hozzászólására (») Nov 16, 2008 /
 
  1. ORG 0x5
  2.                 GOTO    START              ; go to beginning of program

Ez milyen megfontolasbol kerult bele? Mi van a 0-4 cimen?

Azonkivul szerintem a TXIF-et kellene figyelni, nem a TRMT-t. Ja, es ezeket a buvos szamokat a kodban csereld le szimbolumokra, hogy jobban at lehessen tekinteni (pl. a TXSTA,1 helyett TXSTA,TRMT).
(#) szigetivan válasza trudnai hozzászólására (») Nov 16, 2008 /
 
Szia!

ORG 0x0- ra ezt hibaüzenetet adja ki:Error - section '.org_0' can not fit the absolute section. Section '.org_0' start=0x00000000, length=0x00000058 és ezért írtam át.
A TXIF-et már próbáltam, de akkor is ugyananott akadt meg a kontroller.

BTFSS TXSTA,TXIF
GOTO $-1

szal előrébb nem vagyok, ezen a ponton nem jut tovább...
A bűvös számokat is lecseréltem, de még a hiba mindig ugyanaz..
Ötlet???
(#) sszasza válasza icserny hozzászólására (») Nov 16, 2008 /
 
Lehetséges, már töltöm is a 3.22-est.
(#) watt válasza mrfencer hozzászólására (») Nov 16, 2008 /
 
Szándékos volt, hogy a STATUS regiszter bitjeit, közöttük a Z-t említettem. kissi leírta a megoldást, de azt nem írta, hogy a logikai kapcsolat eredményét mi mutatja. Próbáld ki a XORWF-et, vagy a XORLW-t két érték összehasonlítására és várom a megoldás ötleted a kiértékelésre(elágazásra).
(#) mrfencer válasza watt hozzászólására (») Nov 16, 2008 /
 
Rendben, Köszönöm!
Meglesz remélem...
(#) icserny válasza szigetivan hozzászólására (») Nov 16, 2008 /
 
Idézet:
„Hogy tudom figyelni a Hyperterminálban, hogy a Tx-en kiküldött adatok megérkeznek-e a számitogépre?”

Ha van kéznél PICkit2, akkor közvetlenül a TX lábra kötve logikai analizátor módban ellenőrithatő, hogy megy-e ki valami. UART módban pedig szövegesen jeleníti meg a kiküldött karaktert (ha jó a baudrate beállítás...).
Következő: »»   340 / 1319
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