Fórum témák
» Több friss téma |
Ha van másik kontrollered, próbáld ki azzal. Nincs kizárva, hogy próbapanelben egy lábbal arrébb let berakva és bekapcsoláskor elromlott. Én 28 lábúval csináltam meg ezt egyszer.
Nem lett "elültetve", nem univ. panelen van hanem egy vasalt próbapanelen. Ettől még el lehet tervezve a panel persze, de félreültetve, vagy foglalatban arrébb rakva biztosan nem volt mert a DIL tok a TOP oldalra fixen fel van forrasztva.
Ezt a PSPMODE dolgot körüljárom, csak jussak el a műhelyig. Mivel a PORTE csak 3 bit összesen, az első 3 bittel állítható be a port iránya a TRISE regiszterben. A negyedik bittől felfelé is 0 értéket adtam meg, nem is gondolva arra hogy a TRISE regiszterben mást is be lehet állítani. Marad még hogy valóban hibás a kontroller ki-bemenete de ezt nem gondolnám.
Nincs zárlatban, eleve mint írtam egy futófény programmal (azaz mondhatni port billentéssel) tesztelem a kimeneteket és az analóg kapcsolókat (74LVC1G66) amiket a kimenetek vezérelnek. De spec. ez a makacskodó láb egy bemenet lesz (lenne) alapesetben, de kimenetként (is) tesztelem mivel néha kimenetként is lesz használva. Egy buzzer lenne rajta, egy FET kapcsolgatja. A FET jó, ha kikötöm a PORTE2 őt és vezérlem a FET et működik a buzzer. A FET azért kellett mert eredetileg relét akartam kapcsoltatni vele, a buzzert simán elbirná a kimenet is közvetlenül. De ha már beültettem otthagytam. Sajna se bemenetként se kimenetként nem funkcionál a PORTE2. A VSS hez mérve 0V van rajta fixen, bármit csinálok vele. Még ez a PSPMODE kavarhat be, nincs előttem az adatlap nem tudom az mit állít, de tuti valami periféria kavarhat be szerintem ami be van kapcsolva defaultban és át kéne állítani. Ha jól emlékszem a PERTE 0 és 1 bit az AD nak is konfigolható, ezt kilőttem az ADCON1 regiszterben az első 3 bit 1 be állításával (minden I/O digitális) a PORTE2 nek pedig a párhuzamos porthoz van valami köze ha jól emlékszem, de bármit állítok nem műkszik.
A hozzászólás módosítva: Márc 29, 2020
Idézet: „Még ez a PSPMODE kavarhat be, nincs előttem az adatlap nem tudom az mit állít, de tuti valami periféria kavarhat be szerintem ami be van kapcsolva defaultban és át kéne állítani. Ha jól emlékszem a PERTE 0 és 1 bit az AD nak is konfigolható, ezt kilőttem az ADCON1 regiszterben az első 3 bit 1 be állításával (minden I/O digitális) a PORTE2 nek pedig a párhuzamos porthoz van valami köze ha jól emlékszem, de bármit állítok nem műkszik.” 16F877: Pontosítás: TRISE: PSPMODE: Parallel Slave Port Mode Select bit 1 = PORTD functions in Parallel Slave Port mode 0 = PORTD functions in general purpose I/O mode Ha analóg módban marad egy láb, akkor is meghajtja a port kimeneti regisztere, ha a TRIS regiszterben a megfelelő bit 0. TRISE = 7; PORTE: RE2, RE1, RE0 mind konfigurálható analóg bemenetnek. ADCON1: ADCON1 regiszterben az alsó 3 bit 1 be állításával (minden I/O digitális) ADCON1 = 7;
Örök hálám Nagyuram, Tőled még csak működő supportot kaptam. Köszönöm az instrukciót, megyek is a műhelybe és kipróbálom.
Megnéztem, a TRISE -B'00000111 azaz dec 7 ahogy írtad, és az ADCON1 is így volt /van beállítva. A TRISE2 változatlanul halott mind kimenet mind bemenetként A PSPMODE bitjét végül nem is piszkáltam, lévén hogy annak nincs köze a PORTE hez csak a PORTD hez. Nincs ötletem... Tok csere?
Pontosítanék, a PORTE2 bemenetként most működik, csak kimenetként nem. Ha a TRISE regiszterben bemenetnek konfigurálom majd a nyomógombot beállítom pl egy feltételként akkor működik. De kimenetként változatlanul nem megy, hiába állítom 0 ba a TRISE ben. Álandóan alacsony szinten van.
Hali!
Most bemenetként mitől indult el? A felhúzóellenállás most fel tudja húzni, vagy csak félszint?
Nem, én néztem be megint... Működött az kimenetként is, csak a port billentések között kimaradt a késleltetőhurok meghívása, így egy utasítás végrehajtási periódusig volt aktív a kimenet.
Ez volt a hiba:
A "megoldás"...:
Bocs, megint én voltam figyelmetlen. Köszi mindenkinek a segítő szándékot. A hozzászólás módosítva: Márc 30, 2020
"hiába állítom 0 ba a TRISE ben. Álandóan alacsony szinten van." Csak 0-ba allitod a E2 regisztert, vagy koveti meg LATE (PORTE) is ahol szintet valtoztatsz?
De, természetesen a portirány kiválasztása (TRISE2=0) után aktívvá is tettem a kimenetet azaz a PORTE2 bitjét 1 re állítottam. Köszi, már megoldódott. Én néztem be a késleltetéssel a dolgot.
A hozzászólás módosítva: Márc 30, 2020
Keson kuldtem el + ASM es nem C.
No problem, köszi.
Üdv!
MPLAB XC16 esetén hogyan lehet megoldani, hogy egy double számot string-é konvertáljak? Gyári könyvtárat nam találtam, csak ami a fordítottját tudja (string to double). Írtam egy függvényt is, ami kis számoknál működik, de nagyobbaknál össze vissza írkál ki mindent. Mi erre a legjobb módszer? Köszi.
UART-os szeretném kiküldeni, és egy PC-n futó program dolgozná fel.
Az járható út, hogy 8 bitenként küldeném el a double darabjait?
Készíts egy u_n_i_o_n -t, aminek az egyik tagja a double , a másik pedig annyi elemű (unsigned) char tömb, amennyi a double mérete. Vegyél fel egy ilyen változót. Beírod a double értéket a a double tagba, és a char tömbből máris olvashatod a byte -jait. Elküldheted binárisan is, de hexadecimálisan ASCII karakterekként is (2 karakter/byte).
ps:. a C kulcsszó aláhúzás karakterek nélkül használandó.
Az elsőre az mondanám ha 16 bit-ről van szó használd a pirntf-et, ha nem fűlik hozzá a fogad akkor,
általában dtoa néven fut amit akarsz csinálni (double to array) a google teli van egyszerű és bonyolult implementációkkal. Egyszerű Bonyolult Valamint van még egy fajta a nagyon gyors, de ez egy controlelr-nek nem biztos, hogy a legbarátibb implementáció c#-ban használt double to string converter Grisu Double
Köszi a válaszokat!
Hp41C Köszi, kipróbálom! Idézet: „Elküldheted binárisan is, de hexadecimálisan ASCII karakterekként is (2 karakter/byte).” A 2 karakter/byte-ot hogy érted? Az ASCII ban 1 byte határoz meg egy karaktert, nem? Az utolsó mondatot sem értem, pontosan mire gondoltál? Cross51 A "16-Bit Language Tools Libraries Reference Manual " szerint nincs ilyen függvény! és az MPLAB sem ismeri fel.
Idézet: „A 2 karakter/byte-ot hogy érted? Az ASCII ban 1 byte határoz meg egy karaktert, nem?” El lehet küldeni 8 bitet egy karakterben. Ezt értettem binárisan alatt. Lehet egy byte -ot két olvasható karakterként is küldeni. Pl. A 255 kód esetén "F" és "F" karaktereket, vagy a 16 kód esetén a "1" és a "0" karaktereket. Ezt is két féle képen lehet megtenni, az alsó helyiérték megy először vagy a felső. Idézet: „Az utolsó mondatot sem értem, pontosan mire gondoltál?” Ha az u_n_i_o_n szót aláhúzások nélkül írom egy hozzászólásban, a hozzászólás teljes szövege eltűnik.
Köszi!
Az előző kérdést még egyszer felteszem: A u_n_i_o_n helyett lehet használni a siftelést(U1TXREG-be) vagy az lebegőpontos számnál nem működik? Még egy kérdés: MPLAB-ban a fordítónak szánt kapcsolókat hova lehet beírni? Van külön helye vagy csak simán a kódba? Köszi! A hozzászólás módosítva: Ápr 1, 2020
Szerintem a léptetés csak long, int, char típusokra értelmezett, a fordító a megadott változót valamelyikké konvertálja a léptetés előtt. Az eredmény nem az lesz, amit "elvárnál".
Idézet: „MPLAB-ban a fordítónak szánt kapcsolókat hova lehet beírni?” Ezt most én nem értem.
Én ezt használtam (C18-hoz készült, de szerintem más C fordító is megeszi).
A _user_putc() helyére egy karakterkiíró függvényt írj, amit használsz). (Utóirat: Bocs, most látom, hogy nem egészen erre gondoltál....)
A hozzászólás módosítva: Ápr 2, 2020
Ez talán jó lesz,én így küldöm át a double-t.Kivéve,ha elnéztem valamit
Ha csak konvertálni szeretnéd,akkor marad a sprintf(ez a legegyszerűbb) . Idézet: „küldöm át a double-t.Kivéve,ha elnéztem valamit” Én meg tényleg elnéztem ezt a pár szót DUPLA KÁVÉnak olvastam hirtelen ... lehet rövid volt az éjszaka ... ... A hozzászólás módosítva: Ápr 2, 2020
Köszi a válaszokat!
Végül maradtam a u_n_i_o_n os megoldásnál. Hp41C Vannak kapcsolók amivel beállítható pl hogy a double-t 64 bitesnek fordítsa a fordító, ezt nem tudtam hova kell beírni, de már megvan.
Sziasztok!
Ha megépítenék egy PK2-t, akkor van valami mód beégetni a firmware-t a 18F2550-be? Vagy adjam oda valakinek aki beégeti?
Ebay-en lehet kapni PicKit 2 - 3-mat. tökéletesen működnek, biztos megéri építeni? 2-3K + ingyen posta
Megéri... Főleg a 2.5 -öt.
Nem tudom, azt hittem hogy azok valami silány klónok .
Szeretném saját magam megépíteni (egy kis plusz sikerélmény) ha sikerül. Találtam két megoldást. Melyiket válasszam? 1. http://users.atw.hu/wattmep/PICkit2_W_klon/PICkit2_W_klon.html 2. https://muhely43.blog.hu/2014/04/13/pickit2_klon_programozo_utanepites Az utóbbi is szimpatikus, csak van egy pár láb ami lóg a levegőben és a watt féle rajzon egy kicsit más. A hozzászólás módosítva: Ápr 2, 2020
Ebben Hp41C tud segíteni, és sosem használtam PK2-t. (Csak kínai klón PK3-mat és eredeti 4-et)
Ha megnézed amit Hp41C küldött linket, azzal jársz a legjobban szerintem... A hozzászólás módosítva: Ápr 2, 2020
|
Bejelentkezés
Hirdetés |