Fórum témák
» Több friss téma |
Ezeknek a kontrollereknek a Reset cime a fizikai memoria utolso cimere mutat aholis gyartaskor elhelyeztek egy movlw xx utasitast. A xx ertek a gyari kalibracios adat.
Ezert kezdodik ezeknek a kontrollereknek a pr0gramja igy: ORG 0x1FF ; processor reset vector ORG 0 init movwf OSCCAL ; update register with factory cal value Ezert fontos hogy egy uj program beegetese elott kiolvassuk ezt az erteket, majd a hex betoltese utan ujra beirjuk, es igy egetjuk. Persze vannak programok amik automatikusan megcsinaljak, pl PK2, PK3, sot a veletlen kitorles utan tudjak generalni az erteket.
Igen termeszetesen sok uj kontroller jelent meg, de en azt akartam mondani ezzel, hogy az atlag user aki a konya konyv 16F84 peldait forditgatja, nem feltetlen szukseges a legutolso MPLAB. Persze ha hetente uj eszkozt hasznal, es mindig a kurrenseket akkor termeszetesen illik megcsinalni a frissitest. A mult heten hasznaltam a 7.54-est mert a gepre regen telepitettem, es nincs net csatlakozasa. Most nem alltam neki floppizni az uj MPLAB miatt. Igy is fog maradni mig ki nem dobjak. 16F819 volt a cel, eskellett egy-ket dolgot valtoztatnom.
Igazad van, a PIC12C508-nál tényleg a memória végére ugrik reset-kor. A PIC12F629 és társai esetében azonban más a helyzet: ott a a programszámláló kinullázódik reset esetén. Így ott a kalibrációs értéket nem veszi elő automatikusan.
Nem tudom, hogy miért jó az, hogy a PIC12 kategóriában ekkor eltérések vannak. Hívnák inkább PIC14-nek! Idézet: Az mar foglalt. Volt ugye a szepremenyu 14C000 tipus Slope AD-vel 16 bit felbontasig, de hamar lecsengett a gyartasa. „Hívnák inkább PIC14-nek!”
Régi nagy igazság:
Régi program = ismert hibák, tulajdonságok... Új program = felderítetlen, nem várt hibák... Most próbáltam a 8.66 -tal EEPOM8 memóriába fordítani tartalma, nem ment, a régiekkel ment. Nem értettem... A 8.76 -tal megint működik... A 8.76 release notes -jában olvasható: Idézet: „Repairs and Enhancements Made Since v5.30 Problems resolved between v5.40 and v5.41: ( MPASM-337) LGOTO instruction is not working for the address ranges expecting to set the 5-bit of the PCLATH register for 16F193x devices ( MPASM-349) "Argument out of range (0000 not between 0005 and 0007)" error is observed on building any code for the devices, 12C671, 12C672, 12CE673, 12CE674 & 16C433. ( MPASM-350) "Processor type is undefined" error is observed on building any code for the device 16C58A. ( MPASM-356) Configuration Macro does not properly set some of the configuration bits ( MPASM-360) No support for EEPROM8 in resource file ( MPASM-361) Build error in the include file when using PIC12C671” Idézet: „az atlag user aki a konya konyv 16F84 peldait forditgatja, nem feltetlen szukseges a legutolso MPLAB.” Ebben igazad van, csakhogy tapasztalat szerint a kezdo elobb-utobb bele akar fogni olyan projectbe, amihez a regi MPLAB mar nem jo -- es akkor jonnek a kerdesek es mivel mar elfelejtettuk regit hasznal az illeto, naphosszat talalgathatunk miert nem megy neki egy trivialis funkcio... Szerintem nem olyan nehez lecserelni az MPALB-ot, raadasul ingyenes
Át kellene térni MpLabX -re.... Nem támogatja a PICKit2 -t és az ICD2 -t, isszonyú körülményes...
Az MpLab 7.xx futtatható még régebbi gépeken Win98, Win2K alatt is, az újabbak már nem garantáltan.
Én MPLAB 8.43-at használok, elég jónak tűnik :yes:
üdv,
Olyan programot szeretnék írni ami gyorsítja a ledek villogtatását. (később a gyorsítást szeretném nyomógombbal szabályozni). Csatolom az általam írt programot (ami sajnos nem működik). Mi lehet a hiba? Ti milyen megoldást javasoltok?
De peldaul az ujabb MPLAB nem garantalja a hasznalatot w98,wMe alatt. En pont ezert hasznaltam egy regi P1 gepen ami fenn volt rajta. Termeszetesen XP alatt altalaban frissitem en is.
Sziasztok, frissitettem az Mplab-ot. Beállitottam a bemeneteket a stimulátor-ban (azt csak remélem hogy jó-is), szoval mikor alacsony szintre huzom az 'sw1' bemenetet elöször növekszik 1el, mégegyszer megnyomom visszaáll az érték az első gombnyomás elötti értékre, ugyanez igaz a másik bemenetre 'sw2' a következő kódrészlet tartalmazná a bemenetek kezelését, ha jól sejtem egy rossz helyen lévö ugrás miatt lehet. (DUTY_CYCLE
BTFSC GPIO,SW1 ;Test for change of duty cycle goto check_decrement ;Check next switch MOVLW H'16' ;Start switch debounce MOVF TEMP1,W debounce_loop_0 MOVLW H'20' MOVF TEMP0,W debounce_loop_1 CLRWDT CALL DELAY ;Maintain current PWM output DECFSZ TEMP0 ;Apply 15ms debounce to switch goto debounce_loop_1 DECFSZ TEMP1 goto debounce_loop_0 BTFSC GPIO,SW1 ;Check switch after debounce RETLW H'00' INCF DUTY_CYC ;If good then increment duty cycle goto check_duty_threshholds check_decrement BTFSC GPIO,SW1 ;Test for change of duty cycle RETLW H'00' MOVLW H'16' ;Start switch debounce MOVF TEMP1,W debounce_loop_2 MOVLW H'20' MOVF TEMP0,W debounce_loop_3 CLRWDT CALL DELAY ;Maintain current PWM output DECFSZ TEMP0 ;Apply 15ms debounce to switch goto debounce_loop_3 DECFSZ TEMP1 goto debounce_loop_2 BTFSC GPIO,SW2 ;Check switch after debounce RETLW H'00' DECF DUTY_CYC ;If good then decrement switch check_duty_threshholds MOVF DUTY_CYC,W BTFSC STATUS,Z ;See if duty cycle is H'00' INCF DUTY_CYC ;If so increment duty cycle INCF DUTY_CYC,W ;See if duty cycle is H'FF' BTFSC STATUS,Z DECF DUTY_CYC ;If so decrement duty cycle RETLW H'00')
Na látszik nemvagyok túl gyakorlott forumozó, bocs mindenkitöl.
Hát ez eléggé átláthatatlan. Esetleg csatold az asm fájlt hátha az átláthatóbb. Máskor használd a kód gombot!
Kedves Tagok!
Azt tapasztalom egy PIC es rendszerben hogy amíg egy relé meghúz addig egy ADC mérés értéke - mintha kondenzátoron keresztül töltődne - emelkedik (nincs közük egymáshoz - max. a GND ) Lehet hogy a relé előtti BC182 és a pic közötti ellenállás helytelen megválasztása okozza?
Foldhurok lehet meg. A foldek egy ponton, csillagszeruen kozosuljenek, akkor nincs ilyen jelenseg vagy ha van, akkor nem a fold az oka. Itt szerintem ez lesz, mert a rele meghuzasakor jelentos aram lehet, ami egy fa-szerkezetu foldpont-kozosites eseten a GND-k valtozasat okozza.
Kondi javithatja a jelenseget, ha nem akarod attervezni a NYAK-ot vagy ha kokanyolsz, akkor a rele labatol vastag vezetek a fold lekorabbi pontjahoz, a korabbi foldszal 'elhegedulese' mellett.
Mégegyszer megprobálom.
Fontos dolog az elektronikaknal a tap stabilitasa, es a megfelelo szures. Barmilyen elektronikus keszuleknel fontos a megfelelo szereles is. Persze vannak kihegyezett esetek, ilyenek az induktiv terheles kapcsolgatasa. Ugyebar van az a Lentz torveny.Ez eloidez egy magas feszultsegcsucsot a kikapcsolaskor. Ez a csucs zavarja a tobbi elektronika mukodeset. Persze lehet ellene tenni, pl egy diodat kell zaroiranyban a tekerccsel parhuzamosan kotni. Nem mellekes az aramkori elemek meretezese is. A kapcsolotranzisztor megfelelo meghajtasa (nem tapasztalati uton!) szamolhato a rele arama, es a tranzisztor parameterei alapjan. Ajanlanek 1-2 elektronikai alapmu forgatasat. A konyvespolcon az analog szekcioban talalhatsz ilyen konyveket.
Mivel ez a kezdőknek topik ezért lenne 1 zöldfülű kérdésem.
Eddig csak 1x-übb dolgokat csináltam PIC 16f690-re. Most 1 picit bonyolultabbat eszközt szeretnék csinálni PIC08f4620-al. Projekt: terminált akarok építeni ami tertalmaz: -mobiltelefont -Vonalkódolvasót (Vagy bill) -4x20 as kijelzőt. -pár gomb (még nem kristályosodott ki a menniysége) Működés: Modemes kapcsolatot hoz létre 1 pc-vel, a PC mindig átküld(i/ené) az éppen aktuális interakció képét. Amit tudok: -Modemes kapcsolat felépítése/bontása -Kijelző kezelése -PC program -Szerintem a bill. is menne. (ezzel még nem foglalkoztam) Gondom: Soros porton érkező adatokat miként tudnám, gyorsan, string -tudom, hogy itt ilyen nincsen) féleségbe lementeni. Még csak tervezem azt a részét, de úgy gondolom, hogy a memóriába 2x 40bájtos helyre tölteném fel folytonosan a mobiltelefonról és a vonalkód olvasóról érkező adatokat. Kérdés: Valami 1x-übb megoldás nincsen az érkező adatok gyors letárolására? Vagy csak ez a pointer + direkt memóriacímzés. Egyáltalán itt ez létezik, használható? Gépi kódba írom/akarom megírni a programot. Segítséget előre is köszönöm. (Remélem világosan fogalmaztam)
A honlapomom található PICula projekt a 18f4620 "kistestvérével" foglalkozik. Nézd, meg, hátha találsz benne támpontot vagy átvehető megoldást a részfeladatokhoz! (Például a soros port interruptos, gyűrűtárral bufferelt kezelése...)
Én bootloadert használok, de egyszerűen kihagyható, ha az include/picula_config.h állományban kommentbe teszed az USE_BOOTLODER szimbólum definiálását. A soros port használatához pedig (ez nálam valójában egy USB-UART átalakítón keresztül az USB-re történő kapcsolódást jelent, de ne izgasd vele magad!) az USE_USART és az USE_INTERRUPT szimbólumok definiálása szükséges. Vagy a fentemlített konfigurációs állományban, vagy a projekt opciók között. Mellesleg nem éppen kezdőnek való fába vágtad a fejszédet, de sok sikert hozzá! Idézet: Miért nem mindjárt Intel HEX formátumban? „Gépi kódba írom/akarom megírni a programot.”
Mint írtam van elképzelésem és 1 része már működik is. Eddig nem foglalkoztam olyasmivel, hogy a PIC input eszköz és több bájtal szórom meg, ezért írtam, hogy a bejövő adatokat 1-1 tárterületre tenném (40 bájt) és a feltöltött bájtok számát 1 pointerben tárolnám. Így tudnám, hogy mennyi karakter (bájt) jött át. Viszont nem tűnik túl elegáns megoldásnak. Ezért kérdeztem, hogy volna erre valami jó egyszerű és szép megoldás asm-ban. A PC-n futó progi megírása nem tűnik bonyolultnak (VBASIC 6-ban). A telefont egyszerűen soros portra kötöttem fel és egyszerűen AT paranccsal tárcsázik a PIC (ATZ; ATDTxxxxxxxxxx). A telefon egyszerű nokia 6100. A másik oldalon modem vagy mobiltelefon, de ez itt lényegtelen.
Itt mint írtam a gondom, a 2+gombok helyekről érkező inputok lekezelése. Az infót köszönöm igyekszek minél előbb átnézni.
En nem tartom nagy kihivasnak ezt a soros kezelest. Meg lehet oldani, hogy ket pointert hasznalsz. Az egyik a veteli pointer, a masik az olvasasi pointer. Amikor a ketto egyezik nincs uj adat. Hasznalom ezt a modszert. Igaz en CCS C-t hasznalok, de vegulis ASM-ben sem lehetetlen. A gombok kezelesere valami IT megoldast lehetne hasznalni. A RB<7:4> bitek valtozasakor lehet interruptot kerni, igy a portok figyelese nem vesz el plusz idot a programtol. Mivel 18F uC-rol van szo, meg az IT prioritasal is lehet varialni. Persze ASM-ben programozni egy ilyen projektot egy kicsit mazohizmus. Vannak mar ingyenes C programok (demo?) a gyartonal, es mas cegeknel is. Nem annyira nehez atterni ASM gyakorlat utan ezekre a programnyelvekre. Meg esetleg elony lehet a C fordito beepitett fvenyei is amik segithetik a gyorsabb programozast (vagy hatraltatjak ha nem ismered a kezelesuket).
Üdv! Most ismerkedek a PIC programozással. A rendelkezésemre PIC16F84 mikrokontroller áll. Hogy kipróbálhassam az égetőmet (PICKit2 klón), egy jelzőlámpa projektbe vágtam a fejszémet. Találtam is kapcsolási rajzot és forráskódokat ezen az oldalon. Felprogramoztam a PIC-et, ám ha elindítom az áramkört, nem történik semmi. Semmilyen LED nem világít. Ha valaki tudna segíteni, azt megköszönném.
Üdv! Lehet hogy csak én nem találom de hol vannak a konfigurációs szavak? :O
Szia! Próbáld ki ezzel a programmal...
Szia!
A 16F84 nemprogramozható a PICKit2 -vel, csak ha módosított eszközleírást alkalmazol. Nem a legabb leíró, de kiegészítésként tartalmazza a 16F84-et. Nem ismeri fel, hiszen nem rendelkezik típusazonosítóval, de kézzel kiválasztható.
Sziasztok most kezdek ismerkedni a a FLOWCODE for PIC v4.3.7.63 verzióval. Tetszett és szereztem egy PIVkit3-at, de a legegyszerűbb programot sem sikerül betölteni a PIC-be. Mindig ezt az üzenetet kapom:
Launching the programmer... C:\Program Files\Matrix Multimedia\Flowcode V4\Tools\PICkit3\PK3CMD.exe -P18F45K20 -F"4.hex" -E -M -Y"4.hex" ......................................... Connecting... PICkit 3 detected Connecting to PICkit 3... Firmware Suite Version...... 01.26.71 Firmware type......................PIC18F .. PICkit 3 Connected. PK3Err0045: You must connect to a target device to use PICkit 3. Return code = 2 A Flowcode nem tudja átküldeni a folyamatábrát a mikro vezérlőbe. Kérem vizsgálja meg a programozót, és a kapcsolatot FINISHED Mi lehet a gond? Segítsetek Köszönöm. A PICkit3-hoz adott gyakorló panel (PIC18f45k20) ill. mintaprogramok az MPLAB-al sikerül felprogramozni, gondolom a PICkit3 jó, de a programozó nem megy a FLOWCODE-vel.
Hali!
Szerintem csak a PICkit2-t támogatja a FlowCode. Bár én ha FlowCode-val dolgozok, mindig a Microchip PICkit 2 (v2.61) programjával rakom bele a HEX-et a PIC-be.
A PICkit3 -nak nem találtam a gyári CD-n égetőt, megnézem a neten, és megpróbálom.
Köszönöm.
Használd az MPLAB-ot, ott pedig a File menü Import menüelemének kiválasztása után importálod a .hex fájlt, mellyel szerintem megoldható a PICKit3- mal történő programozás. Én sosem próbáltam, mert sosem volt ilyen jellegű gondom, de szerintem megoldható így.
Naszóval, neked PICkit 3 program lenne a legjobb, bár nem találtam hirtelen sehol, csak egy egy béta verziót: Bővebben: Link
|
Bejelentkezés
Hirdetés |