Fórum témák
» Több friss téma |
Bocs a link lemaradt.
Bővebben: Link
Sziasztok!
Azt szeretném megkérdezni, hogy táblázatot hogyan kell elhelyezni bootloadert használó pic program memóriájában? (egyébként működnek a progik minden jó, de ha táblázatot elhelyezek különbözö címeken, akkor eltévejeg a progi..) Bootloader nélküli picen fut rendesen, de valamiért bootloaderesen nem akarja rendesen kezelni a táblázatot. (18F4550) Köszi
Sziasztok!
Megint a Rumcájsz féle órával kapcsolatban kérek segítséget(http://www.hobbielektronika.hu/kapcsolasok/digitalis_ora_homerovel.html?pg=5).A gondom az,hogy a LED-display digitek közül a 2.(D2)és az utolsó(D0) fele fényerővel jelez a másik kettőhöz képest.Közös katódos.Mi lehet a gond, DS18B20 egyenlőre nincs benne......Most kezdek ismerkedni a programozással önerőből ill. a fórum segítségével(teljesen a 0-ról).Assembly lesz a kiszemelt programnyelv.Ez a kapcsolás lesz a próbapanelem.Hogyan műkdik a számláló kijelzése,a karaktereket értelem szerűen előre definiáljuk miszerint melyik port belyik bitje van magas ill.alacsony szinten?Kezdésnek szeretnék írni egy másodperckijelző progit 2 digit-en.
Idézet: „Azt szeretném megkérdezni, hogy táblázatot hogyan kell elhelyezni bootloadert használó pic program memóriájában?” Például így:
Szia!
A konfigurációs regiszterekben külön biten lehet megadni, hogy a TBLRD / TBLWR utasítás kezelheti-e a bootloader területét.
Az MCP23017 portbővítővel kiegészítettem a projektemet, kimenetként tudom kezelni, viszont a bemenetkénti programozással illetve lekérdezéssel nem boldogulok.
Odáig eljutottam hogy bemenetre állítom a portokat: i2c_write2(MCP23017ADDR,IODIRA_CIME=1; a piccolo_i2c.c állományban megtaláltam a beolvasásra írt függvényedet (ic2_read2...) de nem tudom értelmezni. "*p1 az első beolvasott adat eltárolási helyének mutatója *p2 a második beolvasott adat eltárolási helyének mutatója" Szeretném ha sötét elmémet felvilágosítanád, milyen módon tudom a port (k) állapotát kiolvastatni. Üdv.
Kedves Hozzáértők!
Szeretném megkérdezni Tőletek hogy milyen módon lehet egyszerűen összekötni egy pc-s programot egy PIC-el... Szeretnék egy két értéket megjelentetni a pc-n illetve egy változót visszaírni időnként... Van-e valakinek tapasztalata ilyen témában?
Szia!
- Pic uart egysége - RS232 szintillesztő - kábel - COMx: port. A PC -n futó program a COMx: portot kezelve kapja meg az adatot. A soros kapcsolat lehet kábeles, BlueTooth esetleg RS232 - USB átalakítós is. BlueTooth modul esetén nem RS232 szintillsztés kell, hanem a modulnak megfelelő (5V - 3.3V). - Pic IrDa kompatibilis uart egysége - infra adóvevő - infra adóvevő - PC IrDa kompatibilis soros portja. - Pic USB egysége - usb kábel - usb port. CDC (emulált soros vonal) vagy HID kommunikáció.
Kérdés: pickit 2 vs pickit 3
Ezúttal gyári kiszerelésű verziókra értem, nem külön készítés meg ilyesmik. Amikor legutóbb ezen filoztam, elég sok felháborodott objektív + hitvita only hírek szólt a pickit 3 ellen, de volt rá ígéret, hogy majd javítva lesznek a feature gondok idővel. Azóta eltelt 2 év. Nem figyeltem közben a híreket. Így utólag visszatekintés jelleggel érdekelne, volt-e közben hardver revízió a pickit 3-ra, voltak-e érdemben firmware update-ek, illetve, hogy egykori idegesítő hiányosságokat sikerült-e mind lefaragni, vagy még mindig van belőlük? Tapasztalt tippeket ez ügyben mindenkinek előre is köszönöm.
Sziasztok! Egy hőfok és üzemanyagszintjelzőt építek egy 16F818-as pic-el, és egy 2x16-os LCD-vel. Az elképzelés az, hogy az LCD-n ki van írva, hogy Temp: a felső sorban az alsóban meg, hogy Fuel: (kép) és ezek után az értékeknek megfelelő számú teli karakter jelenik meg. Az LCD kezeléssel nincs gondom, az A-D átalakítás is megy, ott akadtam el, hogy az ADRESH regiszterben levő "értékeből" hogyan tudok "az LCD-n változó hosszúságú csíkot" létrehozni
![]()
A soros megoldás az kézenfekvő...
Köszönöm... ...de tudnál javasolni valamit az exe elkészítésére, vagy maradjak a terminálnál? (Hátha van valami egyszerű programozási felület...)
Szia!
Egy fordító, mindegy milyen nyelv... Visual C, C++, C#, Basic, Delphi, Java...
Ha beleszólhatok.
Ha soros kommunikációra kell, nézd meg a Processing-et. Viszonylag egyszerű, nyílt forráskódú, ingyenes, program. Rengeteg példával, köztük a soros kommunikáció, és a futtatható exe állomány készítését is támogatja. Idézet: Nem baj, ez úgy sem jó arra, amire használni szeretnéd.„a piccolo_i2c.c állományban megtaláltam a beolvasásra írt függvényedet (ic2_read2...) de nem tudom értelmezni.” Neked ugyanis nem két bájtot kell olvasni, hanem egyet, de előtte ki kell küldeni a regiszter címét. Sajnos, az adatlap nem túl informatív, és a PICCOLO projekt nem tartalmaz kész tranzakciós függvényt, de az alábbi lépéseket követve az i2c elemi műveletekkel is meg tudod oldani: i2c_start() i2c_putc() - 1. bájt kiküldés (slave cím és R/W=0) i2c_putc() 2. bájt kiküldés (a regiszter címe) i2c_restart() i2c_putc() - 3. bájt kiküldés (slave cím és R/W=1) i2c_getc() - 4. bájt olvasás NAK-kal (ez a kiolvasni kívánt adat) i2c_stop()
Szia! Ha adhatok egy tanácsot nézd át a linkelt oldalon a 11.4.9(összehasonlítás) algoritmusokat...Bővebben: Link
Köszi szépen, már megy is a progi
![]()
Most kezdem az égtőmet a pic16f628 égetni de nem tudom biztosan melyik lábakra tegyem az égetőt panelt csinálok a foglalatnak kérnél egy kis segítséget .
Az égetőnek van 1 .MOSI: Mester Oput Slave Input 2.Reset:A cél processzor / RESET-lába 3. SCK: Seriál ClocK 4. MISO:: Master Input Slave Oput 5.TVCC Target VCC (tüske felhelyezésekor +5v) 6. GDN:Ground azaz föld(0) Aki ismeri a láb kiosztást legyen szíves segíteni Előre is kösznőm.
Ez szerintem AVR-hez való égető, nem PIC-hez.
Töltsd le a pic adatlapját azon rajta van .
Sziasztok
Kezdő vagyok a témában, csak néhány napja foglalkozom PIC-el. Az alábbi programrészletben a CBLOCK -ban FO néven lefoglat cim pillanatnyi értékét szeretném kijelezni a C porton egy ledsorra. Az eredeti programban egy számlálás ugyan igy az INCF paranccsal lett megoldva és számol is, de nem látom éppen hol tart. Hogyan tudnám megjeleníteni hogy hol tart a számolás, mert ezzel a megoldással csak a 6. led világít? [quote]LISTP=PIC18F14K22; lista megadása INCLUDE RADIXhex; alapértelmezet számrendszer megadása CONFIGFOSC = IRC; belső oszcillátor CONFIGWDTEN = OFF; watchdog kikapcsolása CONFIGLVP = OFF; alacsony feszültségű programozás kikapcsolva CBLOCK0x20 FO ENDC #defineLEDPORTB,5 org0x0000; program memória kezdő címe nop; ICD miatt GOTOSTART org0x0028 START CALLINICIALIZALAS BSFLED;led engedélyezés CLRFFO KIJ INCFFO MOVLWFO MOVWFLATC GOTOKIJ INICIALIZALAS MOVLWB'00111010'; oszcillátor frekvenciája <4:6> MOVWFOSCCON; 111 = 16 MHz, 001 = 250 kHz, 000 = 31 kHz (kb óra kvarc) CLRFLATC; kimeneti portok törlése CLRFLATA; MOVLWB'00000000'; LATB = B'00000000' MOVWFLATB; alapban egyik kijelző sincs bekapcsolva MOVLWB'00000001'; analóg / digitális bemenetek MOVWFANSEL; MOVLWB'00011111'; A port MOVWFTRISA MOVLWB'00000000'; B port kimenet MOVWFTRISB MOVLWB'00000000'; C port kimenet MOVWFTRISC MOVLWB'11000000'; timer 0 beállítása, előosztó <2:0> MOVWFT0CON RETURN ;-------------------------------------------------------------------------- END
Bocs, sajnos a TAB-ok nem kerültek bele az idézetbe
Ezen túl vagyok csak azért kérek segítséget mert elbizonytalaodtam és nem akarom tőnkre tenni
aki már csinált ilyet tudja melyik lábakra megy a proogramozó. Írja a sámokhoz a lábszámot. Köszőnném nagyon fontos lene.
Olvastad potyo válaszát? A kivezetések elnevezése alapján ez egy AVR programozó lehet. És az AVR nem egyenlő a PIC-kel!
Köszi a segítséget. Elsőre nem igazán működik a dolog, de próbálkozom. Gondolom az nem lehet probléma hogy a 'buszon' már van 4 hőszenzor 90-töl kezdődő címen.
Üdv. Idézet: A probléma ott kezdődik, hogy a PIC két vonalat használ a programozáshoz (egy órajelet, és a kétirányú adatvonalat). A programozód viszont külön kimenő és bemenő adatvonalakat feltételez. Nyilvánvalóan nem PIC-hez való! „Írja a számokhoz a lábszámot. Köszőnném nagyon fontos lene.” Idézet: Ezzel mit tudok kezdeni?„Elsőre nem igazán működik a dolog, de próbálkozom.” Átmeneti megoldás lehet, de kicsit tisztességtelen megoldás, ha két lépésre bontod a tranzakciót (ne mondd el, hogy tőlem hallottad!): i2c_write1(MCP23017ADDR,REG_CIM); i2c_read1(MCP23017ADDR,&mydata); MCP23017ADDR és REG_CIM konstansok (a perifériabővítő címe és a kiolvasni kívánt regiszter címe. mydata egy uint8 típusú változó, amibe a kiolvasott adat kerül. A '&' jel nem viccból van ott, így lesz a paraméter uint8* típusú mutató! A dologban az a tisztességtelen, hogy a tranzakció közben elengedjük az I2C buszt (restart helyett stop és start lesz).
Ezzel a megoldással próbálkozom, de a kiolvasott adat mindíg 1
int mc23017_readAdat(uint8 addr2){ int8 mcp1adat; i2c_start(); i2c_putc(addr2 & 0xFE); // addr2=(0x40) i2c_putc(0x12); // A port regisztere i2c_rstart(); i2c_putc(addr2 | 0x01); mcp1adat=i2c_getc(I2C_NAK); i2c_stop(); return ((int8)mcp1adat); }
Sziasztok. Egy kis segítséget szeretnék kérni.
Hi-Tech fordítót használok és C-ben szeretnék RB0-as lábra megszakítást írni(16f877A pichez). A mellékelt kódig eljutottam. Ez most jelen esetben annyit csinál, hogy elindul a PIC és a PORTD-n kiküldi ezt: 10110001. ha megnyomom a gombicot akkor be lép az interrupt-ba és beírja azt a kódot amit ott adok meg neki. Eddig ez szép és jó de én, hogy tudom megszakítani az interrupt kérést?(pl ha megnyomom még egyszer akkor újra a main-ben megadott kódot írja ki, vagy eltelik egy kis idő és magától visszalép) egy délutánt végig szerencsétlenkedtem vele már ![]() ![]()
ha azt csinálom, hogy az interruptba ezt írom:
PORTD ^= 0xFF; akkor kiküldi az FF-et a PORTD-re és onnantól semmire nem reagál a cucc ![]() |
Bejelentkezés
Hirdetés |