Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   908 / 1320
(#) bankimajki válasza kissi hozzászólására (») Feb 6, 2011 /
 
Ezeken már túl vagyok, le is fordul, csak nem működik a PIC-ben. Én a konfigurációs bitekre gyanakszom, hogy nem mind van jól beállítva. De MPLAB-ban nem is lehet ennyi félét beállítani, vagy csak én nem tudok róla!?
(#) kissi válasza bankimajki hozzászólására (») Feb 6, 2011 /
 
Ha így állítod be a config biteket, akkor megkapod az ő bitjeit ( nézd meg a config szót : 3F31H --> 11 1111 0011 0001B ) !

Ha nem működik, akkor más baj van!

Steve
(#) kissi válasza kissi hozzászólására (») Feb 6, 2011 /
 
Még most nézem, hogy a BANK-ot PAGE-el jelöli, ill. váltja! Ezekre figyeltél?!

Steve
(#) bankimajki válasza kissi hozzászólására (») Feb 6, 2011 /
 
Nekem nem teljesen így volt beállítva. Majd holnap este beletöltöm a PIC-be. És lesz ami lesz. Köszi a segítséget. És az org 0 beszúrásom kell, vagy sem?
(#) bankimajki válasza kissi hozzászólására (») Feb 6, 2011 /
 
Igen azt én is észrevettem és át is írtam. De mivel már csináltam belőle már 3 féle projektet, így már nagy bennem a kavarodás. Elkészítem a végleges verziót és megpróbálom úgy, ha nem jó akkor feltöltöm ide is.
(#) bankimajki válasza kissi hozzászólására (») Feb 7, 2011 /
 
Kész egy végleges verzió. Így is lefordul, de ha találnál benne még hibát, akkor kérlek jelezd. A konfigurációs biteket úgy állítottam be, ahogy mondtad.
(Ahol módosítottam, ott jól láthatóan jeleztem a megjegyzésnél.)
(#) fulee9999 hozzászólása Feb 7, 2011 3 /
 
Sziasztok!

Picről szeretnék egy 10A motort vezérlni, úgy hogy állítható legyen a sebessége. Eredeti elképzelés szerint a pic egy 4N25 optót kapcsolt volna, ami egy ULN2803 -at. Az egyetlen probléma, hogy az ULN2802 max 0.5 ampert bír.

Valakinek valami ötlete?
(#) trudnai válasza fulee9999 hozzászólására (») Feb 7, 2011 1 /
 
Tegyel ra (legalabb) 10A-es FET-eket...
(#) fulee9999 válasza trudnai hozzászólására (») Feb 7, 2011 3 /
 
Egy kicsit bővebben, kérhetem?

Mondjuk használjak egy IRF 740 FET-et?
(#) watt válasza fulee9999 hozzászólására (») Feb 7, 2011 /
 
Én meg autót akarok vezérelni PIC-el, hogy kell autót építeni?
(#) kissi válasza bankimajki hozzászólására (») Feb 7, 2011 /
 
Szia!

Látom átírtad a megbeszéltek szerint, ezután már csak a próba van hátra (ha lefordul, akkor OK, én nem akarom az egészet értelmezni ! )! Még annyit, hogy az MPLAB projektben csak az angol ABC normál karaktereit használd ( az elérési útban, a file nevekben nincs ékezetes karakter, space, stb. ! ) !

Steve
(#) menyus válasza kissi hozzászólására (») Feb 7, 2011 /
 
Izééé..., nem tudom mi a gond a hozzáállásommal. Én csak megköszöntem az eddigi segítségeket mivel ezekből rengetegek tanultam azoktól akik tényleg értenek ehhez a témához..nekem meg elég nehezen áll rá az agyam azokra a dolgokra amiket még nem ismerek... És hidd el én lennék a legboldogabb ha napi 24 órában azzal foglalkozhatnék amit szeretek de néha sajna van más is amit intéznem kell. Ezért írtam hogy ha hazajövök felrakom azt a programot amivel próbálom megtanulni nezt a RAM dolgot....

Ezzel az alábbi demo val próbálgatom a RAM ba letárolást, a USART on érkező adatot letárolom a 0x20 címtől. Kérdés, az mi törénik akkor ha a letárolni adat mennyisége meghaladja a RAM terület tartományát...? Mert nekem egy komplet ismeretlen tartalmú (és ezért ismeretlen karakterszámú...) SMS t kéne letárolni. Az (összefűzetlen...) sms max karakterszáma 160 lehet, de ehhez még hozzájön a küldő száma, a dátum és még jó pár adat ami jön a USART on egy sms kiolvasásakor. Azt már megoldottam hogy csak azt olvasom ki ami számomra lényeg (csak a telefonszám és az üzenet tartalma) a többi adatot "eldobom" mert felesleges. Így nem foglalnak helyet a RAM ban. De egy RAM terület ebben az esetben sem elég...hogyan kéne megoldanom azt hogy ha az egyik RAM terület megtelik (BANK0 0x20h - 0X7F h ig) akkor megőrizve ennek a tartalmát a kiértékeléshez, folytatni tudjam az adatok letárolósát a BANK1 0xA0 h - 0XFF h területen.


  1. BCF     STATUS,IRP                                               
  2.         MOVLW 0X20                                                       
  3.         MOVWF   FSR
  4.  
  5. X       CALL      RX_OK
  6.         MOVF    RCREG,W
  7.         MOVWF   INDF
  8.  
  9.         INCF    FSR,F                                            
  10.         GOTO    X
(#) menyus válasza menyus hozzászólására (») Feb 7, 2011 /
 
hát az a kód nem épp úgy jelent meg ahogy szerettem volna de remélem a lényeg lászik...
(#) watt válasza menyus hozzászólására (») Feb 7, 2011 /
 
Idézet:
„nem tudom mi a gond a hozzáállásommal.”

Semmi! kissi őszintén elmondta, hogy tetszik amit írtál(Gondolom, szimpatikus neki, ahogy minősíted a saját próbálkozásaidat.). Egyébként nekem is. Mi ebben a gond? Miért veszik az emberek támadásnak az egyszerű tetszésnyílvánítást? Nem értem...
(#) bankimajki válasza kissi hozzászólására (») Feb 7, 2011 /
 
Ok, köszönöm a segítséget. Este letesztelem, ha nem működik akkor még jelentkezek. (De remélem hogy nem így lesz.)
(#) watt válasza menyus hozzászólására (») Feb 7, 2011 /
 
Egyébként ezt úgy lehet megoldani, hogy lefoglalsz 160 helyet a memóriában, és akkor nem lóghat túl.

A másik, hogy egy ilyen ciklusban vagy előre tudod a várható karakterek számát, vagy valami vége jelet figyelned kell. Most nem tudom milyen vége jel jön az SMS-ben, de valaminek lennie kell. Erre kell egy feltételt készítened, amikor is kilép a vételi ciklusból Egyébként soha nem fog.
(#) menyus válasza watt hozzászólására (») Feb 7, 2011 /
 
[OFF]Ja, akkor sorry, én azt hittem valamit rosszul / kétértelműen fogalmaztam és félre értett valamit....akkor bocs csak kíváncsi voltam mi velem a baj ha van... Mert csak akkor tudom korrigálni...nem vagyok én sértődős...szép is lenne...
(#) watt válasza menyus hozzászólására (») Feb 7, 2011 /
 
Jut eszembe, azok az adatok, amik neked kellenek, hol helyezkednek el az üzenetben? Lehet, hogy nem is kéne eltárolni, csak az első 30-at. pl...
(#) menyus válasza watt hozzászólására (») Feb 7, 2011 /
 
Az megvan, a CR LF szöveg CR LF a tematika. A telszám előtt meg mögött pedig " karakter van, igaz előtte is van pár, de ezeket a megszámolgatva, és a felesleget átlépve / kihagyva ki tudom bogarászni azt a részt ami az adatsorból kell nekem. Így tudok spórolni a hellyel... ha jól számolom kb 190 karakternyi hely kell nekem kb. 160 lehet az sms szövege max + az "egyebek".

Ez a kód csak egy olyan demo mi szerint veszem és tárolom le az adatokat, az természetes hogy magától nem fog kilépni a ciklusból lebben a megoldásban.

tehát azt mondod foglaljak le 24 db regisztert a memóriából a mentéseknek?A gáz az hogy már alig van helyem..
(#) menyus válasza watt hozzászólására (») Feb 7, 2011 /
 
Csatolom textben, ez jön a USART on ha kiolvasom az smst. ebből nekem csak az eleje kell (CGMR) ezzel különböztetem meg pl egy hívástól mert akkor pl a RING jön a USART on Meg persze a küldő száma és a szöveg...remélem a text nincs elcsúszva, próbáltam valahogy átláthatóan összeszedni...

sms.txt
    
(#) szilva válasza watt hozzászólására (») Feb 7, 2011 /
 
Sajnos nincs 160 folyamatos hely az említett PIC-ben. Bankokra elosztva, a család legnagyobb tagjában (16F648) van 80-80-80 általánosan használható regiszter, valamint a 16 közös, ami minden bank végén elérhető. Így jön össze az adatlapban írt 256 byte-nyi belső memória.

A gond az, hogy ha FSR-rel címezve folyamatosan próbálja meg elérni az ember mondjuk a nullás bank kezdetétől (0x20 címtől) a regisztereket, akkor az FSR növelgetésével először a közös memóriaterületre (0x70-0x7F), majd az egyes bank elején lévő SFR területre kerül (0x80-0x9F) a címzés. Tehát nincs más megoldás, mint az FSR tartalmát figyelni, és ha egy határt elért, akkor módosítani úgy, hogy ezeket a területeket kikerülje. Gyakorlatilag valami olyasmit kell csinálni, hogy a mutató növelése után meg kell nézni, hogy a mutató értéke nem 0x70-e. Ha igen, akkor a mutatóba 0xA0 értéket kell tölteni (én a közös területet mindenképpen kikerülném, az ugyanis kihagyhatatlan az interruptkezelésben).

A 16F648-on én úgy oldanám meg a dolgot, hogy a saját változóimat (kicsit szokatlan módon) a bank2-be tenném, és a bank0-bank1 területén alakítanék ki egy 160 (80+80) byteos puffert az SMS számára. Ennek a puffernek a címzéséhez makrókat vagy szubrutinokat kellene összetákolni, amik a bankok közötti váltást is kezelik a puffermutató növelésekor. Mivel a bank0 és bank1 is az alsó 256 byteba esik, így indirekt címzéssel elérve ezt csak az FSR tartalmát kell változtatni, az IRP bit mindig nulla lesz.
(#) menyus válasza szilva hozzászólására (») Feb 7, 2011 /
 
Ez az....!! Tökéletesen átlátod a problémát amit én nem nagyon tudtam értelmesen megfogalmazni..A gondom az, hogy hiába figyelem az FSR t (kiolvasom minden INCF után) ha 0xFF h elérése után hiába váltok az FSR címzésével a 0X120 címre nem történik meg a váltás....Sőt... a probléma ott kezdődik hogy a 0X120 - területre nem is tudok írni valamiért....
(#) watt válasza szilva hozzászólására (») Feb 7, 2011 /
 
Ja hogy 16F628A... Én úgy oldanám meg, hogy másik PIC-et használnék, vagy kiszűrném a szükséges karakterrrészt, ha lehetséges.
(#) szilva válasza menyus hozzászólására (») Feb 7, 2011 /
 
Az FSR-be 0x120-at nem tudsz tenni, 0x20-at tudsz tenni úgy, hogy mellette az IRP bitet 1-be állítod. Ezt le kellene tudni MPLAB-ban nyomkövetni a szimulátorral, ennek működnie kell. Lehet, hogy valahol máshol a programban (pl. az interruptban) elrontod az IRP bitet?
(#) szilva válasza watt hozzászólására (») Feb 7, 2011 /
 
Igen, a másik PIC (pl. akármelyik legkisebb 18F, amiben egy bankon belül van legalább 160 byte) talán a legjobb megoldás lehetne, én azért nem akartam ezt javasolni, mert lehet, hogy a hardver adott. Bár a 18 lábú 18F-ek között még akkor is lehet, hogy érdemes lenne szétnézni.
(#) watt válasza menyus hozzászólására (») Feb 7, 2011 /
 
Ha csak az eleje kell, akkor nem kell letárolni mindent, csak annyit, amennyibe belefér a szükséges infó. Így nem kell bankot váltogatni és előre tudod, hány db karaktert kell venned.
(#) watt válasza menyus hozzászólására (») Feb 7, 2011 /
 
Valójában nincs olyan cím, hogy 0x120 egyben, azt két részből kell összerakni, értelmezni. Nézd meg az adatlapban az indirekt címzésnél hogyan épül fel a valós cím!
(#) menyus válasza szilva hozzászólására (») Feb 7, 2011 /
 
Igen azt a 0x120 at úgy értettem hogy BSF STATUS,IRP 0X20. De így sem megy. Ha viszont átírom (semmit nem változtatok, csak annyit hogy BCF STATUS,IRP és 0XA0 ra, címzem az FSR t) akkor az 0XA0 RAM címtől szépen írja az adatokat ...
(#) menyus válasza watt hozzászólására (») Feb 7, 2011 /
 
nem 628 as, 648 as, egy kaptafa csak 4 k s...
(#) watt válasza menyus hozzászólására (») Feb 7, 2011 /
 
INDF-el írod a memóriát ekkor?
Következő: »»   908 / 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