Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Hy Hp41c!
köszi sokat segítettél, megtaláltam a hibát: hiányzott egy küldés engedélyezés: "BSF TXSTA,TXEN". Már müködik!!! ![]()
Nem tudom mit vergődsz a TRMIT -tel... Ez működik...
Üdv Mindenkinek
Megoldódott köszönöm. Túl sok minden volt benne az előző progiból. Gond nélkül lefordítja. Köszönöm.
Mégse jó csak azért fordította le mert a megszakított rész az END után volt.
;------------------------------------------------------------------------------------- Message[305] C:\USERS\ANDRAS\DOCUMENTS\ASM\REPKOND2\ADC.ASM 112 : Using default destination of 1 (file). Message[305] C:\USERS\ANDRAS\DOCUMENTS\ASM\REPKOND2\ADC.ASM 114 : Using default destination of 1 (file). Message[305] C:\USERS\ANDRAS\DOCUMENTS\ASM\REPKOND2\ADC.ASM 120 : Using default destination of 1 (file). Message[305] C:\USERS\ANDRAS\DOCUMENTS\ASM\REPKOND2\ADC.ASM 133 : Using default destination of 1 (file). Executing: "C:\Program Files\Microchip\MPASM Suite\mplink.exe" /p16F887 "adc.o" /u_DEBUG /z__MPLAB_BUILD=1 /z__MPLAB_DEBUG=1 /z__MPLAB_DEBUGGER_PICKIT2=1 /z__ICD2RAM=1 /o"adc.asm.cof" /M"adc.asm.map" /W MPLINK 4.43, Linker Device Database Version 1.9 Copyright (c) 1998-2011 Microchip Technology Inc. Error - section '.org_1' can not fit the absolute section. Section '.org_1' start=0x00000004, length=0x00000022 Errors : 1 Link step failed. ---------------------------------------------------------------------- Debug build of project `C:\Users\andras\Documents\ASM\repkond2\adc.asm.mcp' failed. Language tool versions: MPASMWIN.exe v5.46, mplink.exe v4.44, mplib.exe v4.44 Preprocessor symbol `__DEBUG' is defined. Target debug platform is `__MPLAB_DEBUGGER_PICKIT2=1'. Debug platform options are: `__ICD2RAM=1'. Sun Sep 01 10:16:43 2013 ---------------------------------------------------------------------- BUILD FAILED
Szia!
A megszakítást (0x04-tő)l olyan helyre akarod fordíttatni, ahová a fordító már generált kódot. ORG 0x0-ra tegyél egy GOTO START utasítást, a START elé pedig pl. ORG 0x100-at. Így nem ütközik a megszakítással.
A "klasszikus" megoldás az, hogy elöl van a kódban az interrupt rutin, aztán a főprogram az általad leírt módszerrel:
Hálás köszönet ez volt a gond.
VL_ megoldását választottam. Szépen lefordította.
Sajnos rosszul számoltam. Előbb kell gyököt vonnom és utána osztanom nem pedig fordítva. Így viszont a szám amiből gyököt kell vonnom még nagyobb és nem elég a 4 bájt. 5 bájtból (34 bitből) kellene négyzetgyököt vonnom assembly-ben. Na, ilyen rutint nem nagyon találok. Eddig 32 bit a legnagyobb amibe belebotlottam a neten.
![]()
Hmm, mondasz valamit!
![]() A gyökvonás után 10-zel kellene osztanom egyébként, de a gyökvonás után és az osztás közt még hozzáadnék 5-öt a kerekítés miatt. Így most akkor mennyit kellene hozzáadnom és mihez? A hozzászólás módosítva: Szept 2, 2013
Sziasztok!
MikroC-t használ valaki közületek? Azon belül HW-es I2C libraryt? TM1636-hoz kellene. Adatlapról a kód, picit már átírva MikroC-re. Működik, csak jobb szeretném HW I2-c-re tenni.
Ez egy saját szoftveres I2c írás, majd utána várja az ACk-t egy függvény:
Ezt a 8. bit utáni ACK visszatérést hogy lehetne megoldani hardware-esen? Regisztert török? Vagy stop, és következő újra kiír? Vagy idle? Vissza nem kell adat, csak küldök. ACk nélkül viszont nem megy. A hozzászólás módosítva: Szept 4, 2013
Lenne egy CEREBOT MX7CK fejlesztő panelem de sajnos nem tudom használni, mert az MPLAB X V1.85 ezzel a hibával dobja ki:
"PICkit 3 firmware too old", az MPLAB IPE-vel sem működik. Mit lehetne csinálni?
Sajnos, nekem nincs ilyen, de a leírását könnyű megtalálni. Eszerint MPLAB 8.63-mal biztosan megy (de az újabbakkal is mennie kellene), de a menüben nem PICkit3-at, hanam "Licensed Debugger"-t kell kiválasztani.
Az MPLAB és a fordítók régebbi verziói erről az oldalról tölthetők le.
"Licensed Debugger"-t választottam ki, ezért is nem értem miért PIC kit a hibaüzenet.
A hozzászólás módosítva: Szept 10, 2013
Ha jól nézem a fémyképét, a "Debugging cicruit" helyén egy PIC24FJ256GB106 ül... Ilyen van a PICkit3 -ban is...
Igen tényleg az van benne, akkor arra kéne valami újat rá flesselni?
PIC18F25K80-ról van szó.
Írogatok egy programot, amiben van egy olyan rész hogy az HLVD modul a PIC tápfeszének megszűnésekor megszakítást generál, majd a megszakításban elment az EEPROM-ba kb 18-20 bájtot. Bekapcsoláskor pedig, amikor újból tápfeszültséget kap az áramkör akkor betölti az EEPROM-ból az elmentett regisztereket a memóriába és onnan dolgozik szépen tovább. Ez így szuperül működik is, azonban néha az egyik regiszter (pont az egyébként amit utoljára mentek el), nem azt tartalmazza amit kellene. Próbáltam debuggerben megnézni mi történik de ott nem szűntethetem meg a PIC tápját mert akkor leáll a debuggolás is ugyebár. Ezért beírtam pár sort pluszban a programba hogy ha az áramkörben lévő egyik csati két lábát rövidre zárom akkor hívja meg ugyan azt az EEPROM-ba elmentő szubrutint mint amit a HLVD modul hív meg a megszakításban, majd ugorjon a PIC resetvektorra. Így a debuggolás már nem áll meg és ellenőrizni tudnám hogy pontosan mi is történik, de így nem jön elő a hiba! Gondolkodtam rajta hogyan lehetne még rájönni; beleégettem a programot a PIC-be és programozási módba léptem hogy a PICkit3 csak tápfeszt adjon az áramkörnek, a PIC magától tudjon futkározni. Ekkor lehúztam a PICkit3-at az áramkörről majd újra rádugtam (tápfesz le majd vissza) aztán beolvastam az EEPROM tartalmát, és a kérdéses bájt FF volt! Pedig 00-nak kellett volna lennie. Ötlet hogy mi lehet a gond? Arra is gondoltam hogy megváltoztatom a bájtok EEPROM-ba való elmentésének sorrendjét hogy ne ez a bájt legyen az utolsó hanem egy másik, ez esetben az a másik bájt lett a hibás. Ekkor arra gyanakodtam hogy talán pont akkor szűnik meg a PIC tápfesze annyira hogy már nem tudja azt az utolsó bájtot megírni. Ezért próbaképp írtam pár sort ami teleírja az EEPROM-ot amíg csak le nem kapcsol a PIC teljesen. Nos nem emlékszem már pontosan de kb 350 bájtot sikerült megírnia úgyhogy ez a hibalehetőség kizárva.
Annyit még kipróbálhatsz, hogy az utolsó írás után a címregisztert átírod, hogy akkor az átírt verzió szerinti byte romlik el, vagy az utoljára írott. Az első esetben valami random történés generál egy írásműveletet, a második verzió esetében viszont az utolsó írás valamiért nem fejeződik be rendesen, mire elmegy az áram.
Írj plusz két bájtot (pl.: 55,00), így az újraindított program ellenőrizni tudja, hogy a mentés teljesen lefutott (55). Visszatöltés után töröld az 55-öt (vagy átírod AA-ra).
Helló!
Nincs valakinek valamilyen új információja a PIC32MZ-ről?
Helló mindenki!
A hangkártyámat, hogy tudnám rákötni egy PIC -re? Szeretnék valami látványos hangulatvilágítást készíteni. LED szalag, PIC. Ha zenét hallgatok villoghatna zenére a LED szalag, amúgy meg a PIC villogtathatná stb. Előre is köszi!
Egy analóg bemenetet vagy esetleg egy komparátort használhatsz ilyen célra.
Idézet: A hangártya kimenő jelét a PIC ADC-je tudja fogadni. Esetleg egy műveleti erősítő kellhet közéjük... „A hangkártyámat, hogy tudnám rákötni egy PIC -re?”
Olyasmire gondoltam, hogy basszusra villoghatna. Tehát logikai egyes jelenjen meg ritmusra, mint a kivezérlés jelzőnél. A hangkártyából milyen feszültségszintek érkeznek?
Sziasztok!
Egy kis segítségre lenne szükségem. Valaki tudna magyarázatot adni arra, hogy van egy PIC16f886+4x20lcd+16darab ds18b20. Amikor feszültség alá helyezem, akkor nagyon ritkán, 10-ből 1x nem ír ki semmit az lcd így azt sem tudom, hogy elindult e a program, vagy mi történik. A kijelző háttérvilágítás az bekapcsol, de nem látszik semmi. Valami az inicializálással lehet? Csatolom a config biteket.
Inkább az LCD inicializálása lehet a gond. Megcsinálod azt, hogy háromszor egymás után 8 bitessé inicializálod, és ha négy bitesként akarod kezelni, akkor csak ezután inicializálod négy bitessé, mint ebben az adatlapban a 45. és 46. oldalakon mutatja a folyamatábra?
Csatolom az lcd.c kódot:
Itt meg az lcd.h kód:
Idézet: „Megcsinálod azt, hogy háromszor egymás után 8 bitessé inicializálod, és ha négy bitesként akarod kezelni, akkor csak ezután inicializálod négy bitessé?” Tehát?
Elvileg ez 3x megcsinálja.
Esetleg valami ötletetek nincs? Ugyanezt a kódot használom 2x16 lcd-re is. Ott nincs ilyen gond.
|
Bejelentkezés
Hirdetés |