Fórum témák
» Több friss téma |
Helo!
A legújabb MPLAB X IPE -ben hol lehet beállítani, hogy a Pickit 3 folyamatosan adjon ki 5V-ot? (az áramkör teszteléséhez) Köszi! ![]()
Nem tudom, hogy működik-e még (3.45):
Settings/Advanced Mode Jelszó Power ICSP Options panelen a Power Target Circuit from Tool négyzetbe kell a pipa. A hozzászólás módosítva: Nov 21, 2018
Szia!
Köszi a választ! ![]() Ez be van pipálva, de csak akkor megy, ha programozás után nyomok egy disconnect-et, és azután is várni kell egy kicsit,és egyszer csak elindul. Ez mennyire tekinthető normális működésnek? :O Egyébként 5.10-es verziót használok.
Érdekes. Pont fordítva kellene működnie. PK4 akkor adja a tápot, ha csatlakozva van a PIC-hez. De még mindig megmaradt az a jelenség, hogy nem lép ki reset-ből. Nem lehet, hogy nálad is csak ez a baj? Settings->Hold in Reset<->Release from Reset. Nálam egyszer reset-be kell rakni és vissza, ekkor indul is a program. IDE-ben nincs ilyen gondja.
Üdv!
Hogy tudok a legegyszerűbben egy decimális számot hexadecimális értékbe "átrakni". Mielőtt félreérti valaki nem átszámolni akarom (osztogatni 16-al,maradék, stb.) hanem mondjuk egy decimális 21-ből 0x21-et akarok. C-ben akarom megvalósítani. A hozzászólás módosítva: Nov 21, 2018
Szia!
Ha jól értettelek, akkor max. 99-ig ez jó lehet:
Alapértelmezetten a Release from Reset -ben volt.
Átváltottam, majd vissza, nem javult a helyzet, semmi változás. Próbáltam az IDE-ben lévő programozó résszel, azzal még csatlakozni sem akar a PIC-hez, (Az IPE az csatlakozik, meg programozza is, csak tápfeszt nem ad.) Kipróbáltam még a PicKIT 3 nevezetű programozó szoftvert, az sem ad ki tápfeszültséget. Csak többszöri próbálkozásra. (kihúzom majd visszadugom a programozót, vagy újraindítom a programot.) Valami tippetek van még esetleg?
Szia, en valami hasonlót használtam egyszer:
Az osztás a PIC-en drága művelet (hacsak nem dsPIC vagy PIC24), ezért azt kerülni kell. Double-Dabble algoritmus egy lehetséges megoldás, ami csak shiftelést és összeadást használ, viszont abból sokat. Összességében persze nem biztos, hogy megéri: (en AVR-en hasznaltam ezt)
Igen én is erre jutottam,köszönöm, de a maradékot miért maszkolod?
Kissi megoldása is jó. Kétjegyű számokhoz kell, de talán a másik kisebb erőforrásokat vesz igénybe. Majkimester, PIC32-esen alkalmanként egyszer kell végrehajtani egy gombnyomásra, úgyhogy belefér egy osztás, de köszönöm, ezt is fontolóra veszem, meg kisebb PIC-ekhez még jól jöhet. Köszönöm a válaszokat.
Csak a biztonság kedvéért (hogy a felső nibble biztosan 0 legyen) bár análkül is kellene működjön.
Sziasztok! PIC16F819-ben kellene egy időzítőt csinálnom. Működik is részben. Semmi bonyolult, csak egy poti értékét beolvassa, majd lépésenként összehasonlítja egy a programba beírt értekkel, majd ez alapján számol. Tudom, sokkal egyszerűbben is lehet, stb... nem is az a lényeg, hanem ilyen hibát ír az MPLAB az ASM fájl fordításakor:
Warning[219] G:\MASOLAT\IDOZITO3IN1.ASM 534 : Invalid RAM location specified. Ez mit jelent. Így a PIC-be írva nem jól működik. a részlet:
Az XXXXXXX-el jelölt sorra írja a hibát, ha a .28 helyett .23-at vagy .30-at írok, akkor jó, de a kettő között hibát ír. Mitől? A hozzászólás módosítva: Nov 24, 2018
Úgy látom ebben a PIC-ben nincs 28-as regiszter (ellenben 19, 23 és 30-as van).
Megnézted már az adatlapban a SUBWF utasítást? Szerintem nem ezt akartad jó pár helyen használni.
De ott a SUBWF után egy értéket kér, nem? .28 az decimális érték, ha binárisan írom: B'00011100', akkor is hibát ír. Ezt hasonlítaná össze az előtte lévő sorba beírt W értékével. Vagy valamit nem jól értek?
Az ott az analóg bemeneten beolvasott poti értéke lenne, ami ugye 0-255 lehet. Ezt vizsgálná több lépcsőben.
Szia!
A SUBWF nem egy számot von ki a regiszterből, hanem egy regiszterből a W értékét! Attól, hogy a regiszter neve helyett Te egy számot írtál, még nem változik semmi, abból a sorszámú regiszterből fogja kivonni a W-t !
Ahol konstans számot akarsz hozzáadni vagy kivonni, ott az ADDLW vagy a SUBLW utasításokat használd. A SUBLW-t jól nézd meg, mert pont fordítva működik mint ahogy elsőre gondolnád. Használd inkább helyette az ADDLW -t negatív konstanssal.
A hozzászólás módosítva: Nov 24, 2018
Most nézem, ott direkt értéket nem adhatok meg, igaz? Meg csak 127 lehet a max érték, nem 255.
Na nem sokat változtattam. Létrehoztam még egy regisztert: _III. Majd beszúrtam minden szakaszba két sort:
MOVLW .28 MOVWF _III Majd a SUBWF-be ezt írtam. SUBWF _III,0 Így már tökéletesen müködik. A hozzászólás módosítva: Nov 25, 2018
Tommi111, ami neked kell igazából az adott helyen
Pont az ilyen esetek megkönnyítésére hoztam létre anno a macro gyüjteményem, amivel ez így néz ki:
Utanna az ugrás meg:
http://users.atw.hu/majki/elektro/mcu/progs/progs.htm math_105.zip Érdemes használni, mert sokkal olvashatóbb a kód. És e mellett sok haszonos dolgot tartalmaz. Például 16, 24 vagy 32 bites müveleteket, Binaris -> BCD atalakitast, stb.
Szia! Köszi, átnézem ezeket! ( még nem volt időm)
Sziasztok.
PIC18F4520-al és egy SIM300-as modullal kínlódok jó ideje, amihez CCS-ben szeretnék írni programot. Az SMS küldés az működik (hála a fórum tagoknak, aki segítettek benne 1 hónapja). A mostani gondom az az lenne, hogy nem tudom a SIM300-tól visszaérkező adatokat feldolgozni, egyáltalán nem sikerül a sorosporton érkező adatokat feldolgoznom/beolvasnom. Egy olyan kód megírásában kérném a fórum tagok segítségét, ami a puts("AT",GSM); kóddal elküldi az AT parancsot, majd ha OK jön vissza, akkor csinál x dolgot, ha nem AT jön vissza vagy semmi se jön vissza, akkor csinál y dolgot. Sajnos valamiért a kbhit(GSM) se csinál semmit, lefagy ennél az utasításnál a program. A választ előre is köszönöm!
Sziasztok!
Szeretnem a segitsegeteket kerni. Egy TCN75-ös hőmérőnek szeretném az i2c-ről beolvasott ertekeit kijelezni. 16F876A-s PIC-et használok A temp regiszter erteket at tudom venni, és a kijelzes is mukodik. A problema az ertek szamolasaval van. Kettes komplemenst kellene kepeznem, de ezt nem jottem rá hogy lehet megtenni. Nagyjabol erre lenne szukseg: -kiolvastam a homerseklet regiszter erteket -elmenettem egy valtozoba (temp) -megnezem a 7. bit-et, ha egyes akkor negativ a szám: -itt mukodhet ez az eljaras ha a 7. bitet le akarom törölni? btfsc temp,7 bcf temp,7 -a valtozom 6,5,4,3,2,1,0. bitjeit invertalnom kellene, (egyes komplemenst kell kepezni, ez nem megy) -hozzaadnek 1 et (igy lenne belole 2-es komplemens; movlw .1, addwf temp,1-et hasznalnam) -kijelzem az erteket (ez ok) Szives segitsegeteket elore is koszonom, udv Istvan
A 0,5 fokos pontossághoz 9 bitet kell beolvasni, vagyis a 16 bitből az első 9 érdekes. Nézd meg a COMF utasítást. 1-et hozzáadni az INCF is jó.
A hozzászólás módosítva: Dec 3, 2018
Szia,
Negativ szam eseten negalni szeretnéd a kijelzéshez? Megvizsgalod, hogy negativ-e, ha igen kirakod a - jelet, majd negalod igy, es kiirod pozitiv szamkent:
Udv
Köszönöm a válaszodat!
A kilencedik bit egy külön byte felső bitje, igy azt le tudom vizsgalni. Megnezem a comf-et, köszönöm!
Köszönöm Neked is a gyors válaszodat! Mindenképp kiprobalom.
Ha tudnatok mit ossze nem szenvedtem,
![]() ![]() |
Bejelentkezés
Hirdetés |