Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Idézet: „de kíváncsi vagyok azért, hogy az ISA portos karit, hogyan is lehetne használni” Nézd meg itt: PIC18F452 and 3COM 3C509B Ethernet ISA card A kulcsmondat: "The 3C509B and 3C589B support 8-bit accesses, which the 3C509 and 3C589 adapters did not."
Mégegy projekt: PIC16F677A+3COM509
Hello!
Nem tudok MPLAB SIM-ben megszakítást generálni (soros RX-re). Potyo utalásából szerintem lehet! Megpróbáltam a program futása közben a megszakítást jelző Flag-et "1"-esbe állítani, de nem engedi! Üdv. Marzo
Hogy próbáltad, ki nem engedte, miért nem ütöttél a kezére?
KÖSZÖNÖM!!
Hálám örökké üldözni fog!! Csak útól ne érjen...
Szia!
Köszönöm szépen! Sokat segítettél!
Már egyszer kérdeztem hogy hogyan lehet az MPLAB-ban a programkódból részleteket (mondjuk a szubrutinokat) áttenni egy másik asm fájlba hogy az MPLAB abból olvassa őket be. Akkor kaptam is rá választ de 20-30 perc kínlódás árán sem sikerült megcsinálni csak felbosszantottam magam és ezért azóta nem is foglalkoztam vele. Most viszont már megint kezd elég átláthatatlan lenni a programom... Ez nem mehet így tovább.
Szóval legyen szíves valaki még egyszer elmagyarázni hogy hogyan lehet egy másik asm-et csatolni a projektemhez úgy hogy az MPLAB abból keresse ki a szubrutinokat!
Assemby nyelven nem csináltam ilyet, de feltételezem, hogy:
1. Relokálható kódot kell fordítani, ehhez a forrásban is másképp kell csinálni egyet és mást. Bővebben lásd az MPASM Helpjében a Relocatable Code, Generating, és a Relocatable Objects címszavaknál. Vannak összehasonlító példák a "hagyományos" és a relokálható kódra. 2. Linker scriptet kell használni, mert ebből derül majd ki, hogy az UDATA vagy CODE direktíva utáni adat/kód hova kerüljön. 3. A másik (többi) állományban definiált nevekre csak akkor tudunk hivatkozni, ha a hivatkozást tartalmazó állományban előzőleg szerepeltettük egy EXTERN direktívában azt a nevet, amelyre hivatkozni akarunk. 4. Kell egy "főprogram", amelyik elhelyezi a reset és az interrupt vektorokat, és definiálolyan címkéket, amelyekre ezek ugratnak. Az említett Help-beli példákon kívül az MPASM telepítési könyvtárában a Template/Object mappában találsz mintaprogramokat minden MCU-hoz. Ha megnézed a PICCOLO projekt példaprogramok gyűjteményében a ledflash_a.asm programot, akkor az is egy példa lehet a linker állomány és a relokálható kód használatára. Ezek felhasználásával, és a fent említett EXTERN direktívával biztosan menni fog! Arra vigyázz, hogy a Config biteket és a reset/interrupt vektorokat csak egy állományban (a "főprogramban") szabad definiálni! A pic18cxxx.inc állományt viszont sejtéseim szerint minden "fordítási egységbe" (minden .asm állományba) be kell csatolni, hogy tudják a regiszterek neveit és címeit...
Köszönöm, de sikerült megoldani.
Ahová ezt írom, oda az MPLAB befordítja az egész inc állományt úgy ahogy van. Eddig azért nem sikerült egyébként mert eddig ezt az egész asm fájl legelejére írtam.
Hát ez lehet, hogy pillanatnyilag kényelmesnek tűnik, de nem a megoldása, hanem a megkerülése a problémának.
A célom pontosan ez volt vele, szóval nekem ez teljesen jó. A sok matematikai algoritmus tette eddig ki a fájl kb 70-80%-át. Ezek nélkül már sokkal átláthatóbb az állomány.
1. Erre való a Chip Select jel.
2. Ha a PIC Master-ként működik, akkor nem szükséges a SS jelet használni, bármelyik kimenettel megszólítható egy külső (slave) egység. Ha több egységgel akarsz kommunikálni, akkor több lábat kell használni (egyikkel egyiket, másikkal másikat választod ki). Az SS bemenet arra való, hogy Slave üzemmódban ezzel lehessen megszólítani a PIC-et.
Szia!
Attól működhetett volna, csak elfelejtetted átugratni ! Steve Idézet: Össze lehet kötni, csak a terhelhetőséget be kell tartani (ugyanúgy mint a hagyományos logikai hálózatoknál). „Ezeket a lábakat CLK, DO össze lehet kötni galvanikusan, vagy jobb soros ellenállással?” Arról pedig neked kell gondoskodni, hogy egyidejűleg csak egyetlen eszköz legyen aktív (legfeljebb csak egy Chip Select lehet lehúzva, s egyik se lebegjen).
Én anno 2000-ben csináltam 16F877-hez ilyet.
Csinálj először is egy kivonás rutint 32-32 biten. Utánna meg az egész annyi hogy léptet, kivon (ha a különbség nem negatív (MSB=1) akkor) a a hányadost növeled 1-el. Ezt az egészet meg kell csinálnod 32x, a végén pedig megkapod a hányadost, és a maradékot a kivonó rutin különbségi változójában. Nem tudom mennyire érthető ez, ha gondolod lerajzolhatom. Ja: de ASM-ben, egy PLL szintézerhez ahol 10.6MHz-t (FK) ki kellett vonni a vételi frekvenciából, majd számolni belőle N, és P osztót.
Az OSCAL lehet csak egy tünet más jellegű problémára. Igazából MPLAB-ban van egy olyan, hogy Config registers, a tetején egy pipa: config bits set in code. Szóval ha te egy hex-file-t égetsz be, akkor az írója tuti kódon belül (mondjuk a main.asm legelején) megadta a hardverének konfigjait. Lehet a te égető progid (ez a winpic) nem veszi figyelembe, hanem saját maga egy menüben (mint MPLAB-ban) állítgatja a config biteket.
Próbáld meg winpic-et átnézni, hogy ne szóljon bele a hex file-ban található config beállításokba. Főleg hogy a kapocsolási rajz szerint ez a belső oszcillátort használja, használná.
Az emittert kösd földre, a kollektorkörben pedig minden LED-del köss sorba egy-egy áramkorlátozó ellenállást (470 ohm vagy amennyi kell)! Működnie kell...
Párhuzamos kapcsolásnál a legkisebb nyitófeszültségű nyer, megfogja a feszültséget az ő saját értékén és a többiek már nem tudnak világítani! ICSERNY kolléga megoldásával viszont jónak kell lennie!
Steve
Ha van valamilyen nyers feszültség is(pl. 12V) akkor a 3 LED-et sorba kötheted, és elég egy kiszámolt ellenállás úgy, hogy a 3 LED-en eső feszültséget kivonod a számításnál. A 12V az ellenállásra megy... De ez igazán nem PIC téma!
Milyen szimulatort hasznalsz, van benne SPICE is?
Sziasztok!
A segítségeteket szeretném kérni. Mit jelent az, hogy egy mikrovezérlő órajele DC-25 MHz között van? A 25 MHz még megy, de a DC mit jelent? Lehet nagyon alap a kérdés, de nekem most nagyon hasznos lenne! Előre is köszi!
Azt jelenti, hogy teljesen megállíthatod a kontroller futását, ha nem adsz a bemenetére jelet. Vagy tetszőlegesen lassan futtathatod, akár nyomógombbal is adhatod neki az órajelet. DC az angolul egyenfeszültség, vagyis hogy nem kap meghatározott frekvenciájú órajelet a kontroller, hanem stabilan egyik szinten van az órajelbemenete.
Ezt azért lényeges így megadni, mert vannak technológiák, amiknek van alsó működési frekvenciája is, nem csak felső. A PIC viszont olyannal készül, aminél nincs alsó határ.
Sziasztok,
Lenne egy kérdésem/kérésem. Ha valaki már dolgozott ADC 10 bit-es (Analog Input) input programozással MPLab-ban, PIC32MX460F512L-es mikrocsippel, akkór megkérném hogy segitsen. Esetleg ha van valami példaprogi vagy valami... Én a következőt szerentém csinálni: Van 3 db Gyrom és azoknak az értékét leolvasni és kiküldeni RS232-esen az olvasott értéket PC-re. A kommunikációs fele már megvan, csak arra nem jövök rá hogy hogyan tudom kiolvasni a 0-1023 megfeleltetett értéket. Valami pontokat meg ipszilonokat most is kiad. A pontokat a GND-re csatlakoztatva olvassa ki és az ipszilonokat pedig ha hozzáérintem az árramforráshoz. Ezért úgy gondolom hogy a pontok jelentik a 0-ot és az ipszilonok az 1023-at az 0-1023-as skálán. Várom ötleteiteket. Köszi, Üdv, Bandy
Az ADC-hez egy 16bites regiszter tartozik. Ezt két bájtban tudod átküldeni a PC-re. A két bájtot a helyiértékén kezelve és összeadva kapod a mért értéket.
Köszi a gyors választ.
Egy kicsit ki tudnád jobban fejteni? Mert ennyiből még nem értem hogy mit is kellene csináljak és főleg hogy hogyan tudom kettessével átküldeni a 16bitet, ott meg összerakni? |
Bejelentkezés
Hirdetés |