Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   277 / 1320
(#) watt válasza zsimon hozzászólására (») Szept 3, 2008 /
 
Remélem nem veszed rossz néven, ha kritával illetném a programod TransmittCAN macro mivoltát.
Ezt annyiszor fordítja bele a fordító a forrásba, ahányszor kiadod. Ez szubrutinnal sokkal hatékonyabban lehet megvalósítani(legalább is a programterület szempontjából). A változók értékátadása sem gond, vagy pointer szerű indirekt címzést is lehet használni.
(#) watt válasza zsimon hozzászólására (») Szept 3, 2008 /
 
Én ki fogom próbálni, és mégegyszer köszönöm!
(#) trudnai válasza watt hozzászólására (») Szept 3, 2008 /
 
Idézet:
„Biztos vagy benne?”


Biztos meg abban sem lehetek, hogy a mumiak meghaltak... Az, hogy otezer eve mozdulatlanok meg nem jelent semmit...

Mellekeltem az ASM30 helpjet ezzel kapcsolatban - ja, es nekem nem fordul, probaltam permutalni, hogy hova irom a "Gomb"-ot, hogy kettos pont vagy sem, de nekem nem jott ossze.

Idézet:
„Szerintem a .macro is csak egy egyszerű szöveg behelyettesítés”


En is ezt mondtam csak rosszul fogalmaztam ugy latszik Szoval a kulonbseg a #define es a .macro kozt, hogy a #define akarhol is va a szoveg file-odban ode helyettesitodik be az ami abban szerepel, mig a .macro a nyelvi elemek resze es utasitas helyen szerepelhet a makro neve - tehat egy utasitas parametere mar .macro nem lehet.

equ.PNG
    
(#) watt válasza trudnai hozzászólására (») Szept 3, 2008 /
 
Múmiák! Jó hasonlat!

Idézet:
„- ja, es nekem nem fordul, probaltam permutalni, hogy hova irom a "Gomb"-ot, hogy kettos pont vagy sem, de nekem nem jott ossze.”

Ez nem jó hír, de reménykedem....
Persze nem fogok vonat elé futni, ha nem lehet a régi jó bevált módon kódolni, csak meglesz a véleményem megint! Sajnos egyre többször kell ezt éreznem... (Mert ugyebár, mi a rákfenéért kell megváltoztatni ami bevállt!?)

.macro és #DEFINE kérdés lecsekkolva!

Köszi a csatolmányt!
Én is így értelmeztem hogy az .equ elöl van. Hát nemtudom!

(#) zsimon válasza watt hozzászólására (») Szept 3, 2008 /
 
Hát nagyon nem vágom mé nem fordul... Nekem bezzeg igen...
Dobjál már ide egy képernyő mentést lécci. Mi a hibaüzenet?

Közben még mindig AD konverzió. Most akkor mennyi referencia feszt használjak? A matekolós mV-mA része ok. A lényeg hogy fogyasztónként kiszámolt áramérzékelő ellenállásokkal dolgozom, és autó aksiról lévén szó még véletlenül sem akarok az ellenálláson 0,3,0,4V feszültség esésénél többet.
(#) watt válasza zsimon hozzászólására (») Szept 3, 2008 /
 
Várj, mert nem nálam nem fordult, hanem trudnainál(az én nickemre válaszoltál)!

Nade közben hazaértem és próba.
A deklarálás fordul, de nem lehet használni!
Hibaüzi:
  1. Error: Too few operands ('btsc Gomb3').


Nem látok már olyan verziót, ami támogatná amit a régi #DEFINE igen.
Microchip, MIÉRT???! (bocs, a hisztiért, nem szoktam, de az ilyesmi kiakaszt!)

De hátha lesz még valami ötletetek!?

A/D:
2,7V-nál nem ajánl kisebbet a gyár.
Ha ekkor a 0,4V túl rossz felbontású lenne, akkor használj microchip-es OPA-t erősíteni. Nagyon jó kis IC-k! Egytáposak(5V), és tápig kivezérelhetőek. Majdnem olyanok, mint egy ideális OPA! (MCP6001)



(#) watt hozzászólása Szept 3, 2008 /
 
Közben "rájöttem", hogy miért fordul, és miért nem lehet használni.
Tehát a forma mégegyszer:
  1. Gomb:     .equ     PORTE,#2

Azért fordul le, mert a fordító a Gomb: szöveget egy címkének veszi. Ezután pedig jön a .equ, és utána a symbol, ami jelen esetben a PORTE, ami nem írja felül a fordítónak includált PORTE globális szimbólumot, mert csak úgy lehet használni, hogy #PORTE és az értéke nem lesz más, mint a #2. Hát ez van...

trudnai, neked igazad volt, mikor említetted, hogy csak szám lehet az .equ sor végén. Ha szöveget írok, akkor a
Idézet:
„undefined reference”
hibát kapom. Ezért se tudja megenni az összetet formulát, mert nem szövegként akarja értelmezni a szimbólumot. pl. az #RB0-t egyszerűen #0-nak veszi, mivel globális állandó, és a vesszőtől kiakad.
(#) trudnai válasza zsimon hozzászólására (») Szept 3, 2008 /
 
Mellekeltem a forrast listajat (lst file, hogy az eredeti line number jo legyen). ERR pedig amit kapok uzeneteket mikor megprobalom forditani.

A kep: A language toolsuit-nel lehet atverest csinalni, ha a BAT file-ba beleheckeli az ember, hogy hivja meg a C preprocesszort (pl. gnu cpp). Ugyis atnevezi .ASM-nek, szoval belefer a dologba. Akar lehet az M4-t is beletenni es akkor minden makro igenyeket kielegiti a dolog - lehet kesziteni sajat macro parsert
(#) zsimon válasza watt hozzászólására (») Szept 3, 2008 /
 
Ha a header file-ban a -csak példa tuti hülyeség - 0x0023 regisztert el lehet nevezni PORTB-nek, és még használni is lehet úgy hogy utána írod, hogy #2 akkor tuti lehet valahogy a PORTB-t és a #2-t közösíteni hogy "Play Gomb" legyen belőle, és

btfss Play_Gomb

AD: Őszinte leszek, lassan drágább a leves mint 5 adag hús. Van egy reflektorom. Van hozzá MOSFET. Aztán áramérzékelő ellenállás. Most már az ellenállással párhuzamosan egy 3.3V Zener, hogy egy MOSFET - Refi zárlat ne süsse meg a PIC-et. Ezek mellett biztosítom a hővédelmet is. Most még tegyek be egy műveleti erősítőt? Na ne.... Ha mondjuk 3.072V a referencia milivoltban számolva szorzom hárommal, osztom négyel. 0,75mV felbontás egy olyan cuccban ahol Igazából az érdekel hogy szakadt, vagy zárlatos a fogyasztó kör, és a többi az már csak cukor. Szóval nem fogok meghalni ha kicsit rosszabb a felbontás.
(#) watt válasza zsimon hozzászólására (») Szept 3, 2008 /
 
Idézet:
„Ha ekkor a 0,4V túl rossz felbontású lenne, akkor”

Tele van feltételes móddal!

A Play_Gomb példádat egyáltalán nem értem. Ki tudnád fejteni mire is gondolsz pontosan?
(#) gyengus hozzászólása Szept 3, 2008 /
 
Sziasztok!

Szeretnék csinálni néhány státusz bájtot, melyekben minden bit mást jelentene. Mint pl a PIC INTCON regiszterében. Inkább nem pazarolnék egész bájtokat.
A Microchip typedefs.h-jában találtam ilyet:
  1. typedef union _BYTE
  2. {
  3.     byte _byte;
  4.     struct
  5.     {
  6.         unsigned b0:1;
  7.         unsigned b1:1;
  8.         unsigned b2:1;
  9.         unsigned b3:1;
  10.         unsigned b4:1;
  11.         unsigned b5:1;
  12.         unsigned b6:1;
  13.         unsigned b7:1;
  14.     };
  15. } BYTE;

Létrehozva egy BYTE típusú a nevű változót, hozzáférek a bitjeihez így: a.b0 = 0;
(legalábbis lefordul, még nem próbáltam ki)
Biztos ami biztos, szeretném tudni, hogyan kezelhetem az a változót egy egész bájtként? Az a = 0; kifejezésre hibát jelezett a fordító.
A típusdeklarációban a unsigned b0:1; és a többi sor az azt jelenti, hogy 1 lesz a bitek alapértelmezett értéke?
(#) trudnai válasza gyengus hozzászólására (») Szept 3, 2008 /
 
a._byte = 0;
(#) gyengus válasza trudnai hozzászólására (») Szept 3, 2008 /
 
lol, majd kiszúrta szemem
köszi szépen!
(#) bladika hozzászólása Szept 3, 2008 /
 
Sziasztok!

A következőben kérném a segítségeteket. Az ipodomhoz építek távirányítót (nem vezeték nélküli), de igazából a kérdés szempontjából ez talán lényegtelen is. Az ipod vezérlését egy p16f688 végzi soros porton keresztül. Mivel a tápellátását a cuccnak az ipodból veszem, ezért lényeges a fogyasztás. Ezért a pic csak akkor dolgozik,ha kell, ha nem akkor alvó állapotban van így elvileg uA az áram felvétele, DE mivel sleep alatt megtartja a kimenetek sleep elötti állapotát ezért az sleep alatt Tx láb +5V. A +5V miatt viszont a Tx lábon sleep alatt mA-ek folynak el ami felesleges.
Tudna nekem erre valaki mondani egy frappáns megoldást?

A fejlesztést CCS -vel csinálom és igazából assemblyben még talán menne is, de a C -t most kezdtem. Az alap ötletem az lenne, hogy USART kikapcs, adott pin LOW, és aztán sleep, majd sleep után minden vissza.

Vagy esetleg a két ezköz közöt a fizikai kapcsolatban van probléma? Gondolok itt áramkorlátozó ellenállás hiányra stb.

Boccs, a hosszú szövegért de próbáltam érthetően körül írni a problémát!
(#) szilva válasza bladika hozzászólására (») Szept 3, 2008 /
 
Attól, hogy magas szintű a TX láb, miért kellene ott áramnak folynia? Másrészről ha leveszed alacsony szintre, akkor azzal egy start bitet indítasz, ami meg nemkívánatos lenne.
(#) bladika válasza szilva hozzászólására (») Szept 3, 2008 /
 
Azzal tisztában vagyok, hogy az startbitet indít és az nem gond. Azért folyik Tx lábon el áram mert az az ipod Rx lábára csatlakozik. Azt viszont nem tudom,hogy ez normális működés e, de ebben biztos vagyok mert megmértem.
(#) szilva válasza bladika hozzászólására (») Szept 3, 2008 /
 
Nézd meg az adatlapban, hogy a SENDB bittel mit lehet elérni, szerintem ha az alvás előtt megfelelő időben elindítasz egy break-et vele, akkor az alvás alatt 0 marad a TX. Nem szép megoldás, de lehet, hogy célravezető.
(#) bladika válasza szilva hozzászólására (») Szept 3, 2008 /
 
Hát bevallom ami oda van írva azt értem,de fingom sincs mit jelent a gyakorlatban
(#) szilva válasza bladika hozzászólására (») Szept 3, 2008 /
 
Én úgy értelmezem, hogy ha be van állítva a SENDB, akkor a következő karakter kiküldésekor a karakter helyett break-et küld a soros vonalra. A break meg szóhossztól és framing bitektől függő hosszúságú, de folyamatos 0 szintet jelent.
(#) bladika válasza szilva hozzászólására (») Szept 3, 2008 /
 
na de míg a soros vonalon a pic küld valamit el lehet küldeni aludni? szerintem a sleep csak az adott bájt elküldése után történik meg
(#) trudnai válasza bladika hozzászólására (») Szept 3, 2008 /
 
Ha berakod a portot a sleep idejere tristate-be az nem jo? Akkor lebeg a kimenet, es az ipod dolga, hogy a lebego allapotot lekezelje, de ezt ok biztosan megoldottak hisz nincs minden pillanatban kulso eszkoz racsatlakoztatva. Es ha ezt ok lekezelik pl egy lehuzo ellenallassal, akkor keveset fogyaszt a pc, ha nem kezelik le, akkor pedig sokat de lehet ugy meg AD allapotba lehetne lokni es akkor megsem fogyasztana annyit mindtha digitalis bemeneten lennel - jol elbeszelgetek magammal
(#) szilva válasza bladika hozzászólására (») Szept 3, 2008 /
 
Azt nem tudom, a c mit csinál, de hogy a TXREG írása után kiadhatod a SLEEP-et, az biztos. Ha nem várod meg, hogy kisorjázzanak a bitek, akkor "belealszik".
(#) szilva válasza trudnai hozzászólására (») Szept 3, 2008 /
 
Szerintem az a baj ezzel, hogy ahhoz az UART modult kellene lekapcsolni, hogy a TX lábhoz más funkciót rendelhess. De persze ezt ki kellene próbálni.
(#) bladika válasza szilva hozzászólására (») Szept 3, 2008 /
 
igen igen! erre gondoltam én is ahogy fentebb írtam csak nem tudom CCS ben hogy lehet kikapcsolni
(#) MPi-c válasza bladika hozzászólására (») Szept 3, 2008 /
 
Assemblerben hogy oldanád meg? Itt is úgy kell. SPEN bit...
(#) bladika válasza MPi-c hozzászólására (») Szept 3, 2008 /
 
pontosan így! próbálkoztam vele de nem ment de akkor beillesztem hogy hogy próbáltam mert mondom CCsben még kezdő

  1. #BIT SPEN = 0x17.7
  2. ...
  3. ...
  4. ...
  5. SPEN=0;
  6. output_low(PIN_C4);
  7. sleep();
(#) zsimon válasza watt hozzászólására (») Szept 3, 2008 /
 
Tele van feltételes móddal = lefekvés előtt írtam, kezdett kiütni a Zirtec.

A Play_Gomb példát arra értettem hogy te egy adott portlábat - ami tulajdonképpen két változó mert maga a port, és annak egyik lába pl a kettes - egyetlen szüveggel szeretnél helyettesíteni úgy hogy közben mindenféle asm parancsot tudjál végrehajtani vele. Pl:

bset PlayGomb ;PlayGomb (Portb,#2) High
(#) watt válasza zsimon hozzászólására (») Szept 3, 2008 /
 
Sajnos úgy néz ki, hogy ezt az ASM30-ban nem támogatja semmi.
Én azt hittem, hogy valami más ötlet jutott az eszedbe az INC fájlokból kiindulva...
(#) zsimon válasza watt hozzászólására (») Szept 3, 2008 /
 
Persze könnyen dumálok, de hidd el nem nagy veszteség.
Paraméterezett makrókat használva még hatékonyabb is lehetsz mint eccerűen csak azzal hogy egy két Port lábat nevén nevezel. Ezen ne fájdítsd a fejed...

Mplab-al kapcsolatban érdekelne valami. Valaki itt ezen a fórumon említette hogy futtatja az Mplab-ot Linux alatt... Érdekelne a megoldás... Egyébként nagyon uncsi hogy most már csak az Mplab miatt kell Windows-t használni... Bezzeg Atmel megcsinálta az AVRStudio-t linuxra. Microchip miért nem tudja?
(#) Csaplar hozzászólása Szept 3, 2008 /
 
Sziasztok!

Még mindig le vagyok sajnos maradva az FT232RL-es adatátvitellel.

Most viszont lenne ötletem, hogy mi lehet a baj.

Amikor ciklusban kiküldök a PC-re egy csomó adatot, nem mindig ugyanaz a karakter érkezik. Ennek szerintem az lehet az oka, hogy a Baud Rate-t nem az FT232-nek megfelelően állítom be.

A Pic-nél 9600-as baudot állítottam be, de nem teljesen tiszta. hogy az FT232-nek mekkora az órajele és az mennyire van szinkronban az általam beállítottal ???

OpenUSART (USART_TX_INT_OFF & USART_RX_INT_ON & USART_ASYNCH_MODE & USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_HIGH, 129); //9600baud

Tudnátok benne segíteni? Az Ft232 adatlapján nem igazán tudtam eligazodni.

Előre is köszi!
Üdv
Következő: »»   277 / 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