Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   1006 / 1319
(#) potyo válasza kalmangabi hozzászólására (») Júl 27, 2011 /
 
Ebből még nem következik az, hogy az időzítés jó, csak annyi, hogy valami más is rossz. Tegyél egy-egy 100nF kondenzátort az AN0-GND és AN1-GND közé, és ha még akkor sem jó, akkor mutasd a kódot. Illetve azt is jó lenne tudni, hogy milyen órajelent fut a kontroller.
(#) kalmangabi válasza potyo hozzászólására (») Júl 27, 2011 /
 
Üdv!
Nem jó a kondikkal se.
Az oszcillátor 10MHz es.
Kipróbáltam 2 MHzessel és azzal megy, szóval akkor gondolom, hogy valami beállítás hiba.


Ez amúgy egy keverőpult lesz reményeim szerint .
Egyet már építettem egy éve, de az teljesen analóg volt viszont még mindig nem recseg pedig rengeteget használtam és a leggagyibb potik vannak benne.
De előbb vagy utóbb úgy is elkezd majd recsegni. Ezért kezdtem el ezt fejleszteni. A maximtól ingyen rendelt DS1801 es digitális spi potikon alapszik.

  1. MAIN
  2.                 CALL    INITPIC
  3.                 NOP
  4.                 NOP
  5.                 NOP
  6.                 NOP
  7.                 NOP
  8. MAIN-1          CALL    SETPOTS
  9.                 GOTO    MAIN-1
  10.                 CALL    FINISH
  11. ;----------------------------------
  12. INITPIC
  13.                 BANKSEL PORTB
  14. M_ADC           EQU     0X20
  15. M_BAL           EQU     0X22
  16. M_SETPOT22      EQU     0X23
  17. M_LVL           EQU     0X24
  18. M_8BIT          EQU     0X25
  19.                 BANKSEL TRISB
  20.                 BCF     TRISB,0 ;LED
  21.                 BANKSEL TRISC
  22.                 BCF     TRISC,7 ;D
  23.                 BCF     TRISC,6 ;CLK
  24.                 BANKSEL PORTC
  25.                 BCF     PORTC,7
  26.                 BCF     PORTC,6
  27.                 BANKSEL TRISD
  28.                 BCF     TRISD,7 ;RST CH1
  29.                 BCF     TRISD,6 ;RST CH2
  30.                 BCF     TRISD,5 ;RST CH3
  31.                 BCF     TRISD,4 ;RST CH4
  32.                 BCF     TRISD,3 ;RST MASTER
  33.                 BCF     TRISD,2 ;RST HEADPHONES
  34.                 BCF     TRISD,1
  35.                 BCF     TRISD,0
  36.                 BANKSEL ADCON1
  37.                 MOVLW   B'00000000'
  38.                 MOVWF   ADCON1
  39.                 RETURN
  40. ;----------------------------------
  41. SETPOTS
  42.                 BANKSEL PORTB
  43.                 MOVLW   B'10000001'
  44.                 CALL    READADC
  45.                 CALL    POTLVL
  46.                 BANKSEL PORTD
  47.                 BSF     PORTD,7
  48.                 CALL    SETPOT
  49.                 BANKSEL PORTD
  50.                 BCF     PORTD,7
  51.                 NOP
  52.                 NOP
  53.                 BANKSEL PORTB
  54.                 MOVLW   B'10001001'
  55.                 CALL    READADC
  56.                 CALL    POTLVL
  57.                 BANKSEL PORTD
  58.                 BSF     PORTD,6
  59.                 CALL    SETPOT
  60.                 BANKSEL PORTD
  61.                 BCF     PORTD,6
  62.                 NOP
  63.                 NOP
  64.                 BANKSEL PORTB
  65.                 MOVLW   B'10010001'
  66.                 CALL    READADC
  67.                 CALL    POTLVL
  68.                 BANKSEL PORTD
  69.                 BSF     PORTD,5
  70.                 CALL    SETPOT
  71.                 BANKSEL PORTD
  72.                 BCF     PORTD,5
  73.                 NOP
  74.                 NOP
  75.                 BANKSEL PORTB
  76.                 MOVLW   B'10011001'
  77.                 CALL    READADC
  78.                 CALL    POTLVL
  79.                 BANKSEL PORTD
  80.                 BSF     PORTD,4
  81.                 CALL    SETPOT
  82.                 BANKSEL PORTD
  83.                 BCF     PORTD,4
  84.                 NOP
  85.                 NOP
  86.                 BANKSEL PORTB
  87.                 MOVLW   B'10100001'
  88.                 CALL    READADC
  89.                 CALL    POTLVL
  90.                 BANKSEL PORTD
  91.                 BSF     PORTD,3
  92.                 CALL    SETPOT
  93.                 BANKSEL PORTD
  94.                 BCF     PORTD,3
  95.                 NOP
  96.                 NOP
  97.                 RETURN
  98. ;----------------------------------
  99. POTLVL         
  100.                 BANKSEL PORTB
  101.                 MOVFW   M_ADC
  102.                 BTFSC   STATUS,2
  103.                 GOTO    POTLVL-4
  104.                 MOVLW   H'00'
  105.                 MOVWF   M_LVL
  106. POTLVL-3        MOVLW   H'00'
  107.                 MOVWF   M_BAL
  108.                 DECFSZ  M_ADC,1
  109.                 GOTO    $+2
  110.                 GOTO    POTLVL-1
  111.                 INCF    M_BAL,1
  112.                 DECFSZ  M_ADC,1
  113.                 GOTO    $+2
  114.                 GOTO    POTLVL-1
  115.                 INCF    M_BAL,1
  116.                 DECFSZ  M_ADC,1
  117.                 GOTO    $+2
  118.                 GOTO    POTLVL-1
  119.                 INCF    M_BAL,1
  120.                 DECFSZ  M_ADC,1
  121.                 GOTO    $+2
  122.                 GOTO    POTLVL-1
  123.                 INCF    M_LVL,1
  124.                 GOTO    POTLVL-3
  125. POTLVL-1        DECFSZ  M_BAL,1
  126.                 GOTO    $+2
  127.                 GOTO    POTLVL-2
  128.                 DECFSZ  M_BAL,1
  129.                 GOTO    $+2
  130.                 GOTO    POTLVL-2
  131.                 INCF    M_LVL,1
  132. POTLVL-2        MOVLW   H'00'
  133.                 MOVWF   M_BAL
  134.                 INCF    M_LVL,1
  135.                 GOTO    $+3
  136. POTLVL-4        MOVLW   H'00'
  137.                 MOVWF   M_LVL
  138.                 RETURN         
  139. ;----------------------------------
  140. READADC
  141.                 BANKSEL PORTB
  142.                 MOVWF   ADCON0
  143.                 BSF     ADCON0, GO_DONE
  144.                 BTFSC   ADCON0, GO_DONE
  145.                 GOTO    $-1
  146.                 BANKSEL PORTB
  147.                 MOVFW   ADRESH
  148.                 MOVWF   M_ADC
  149.                 RETURN
  150. ;----------------------------------
  151. SETPOT
  152.                 CALL    SETPOT2
  153.                 RRF     M_LVL,1
  154.                 CALL    SETPOT2
  155.                 BANKSEL PORTB
  156.                 BSF     PORTB,0
  157.                 RETURN         
  158. ;----------------------------------
  159. SETPOT2
  160.                 BANKSEL PORTB
  161.                 MOVLW   D'8'
  162.                 MOVWF   M_8BIT
  163. SETPOT-0        RRF     M_LVL,1
  164.                 BTFSS   STATUS,C
  165.                 GOTO    $+3
  166.                 CALL    WRITE1
  167.                 GOTO    $+2
  168.                 CALL    WRITE0
  169.                 DECFSZ  M_8BIT,1
  170.                 GOTO    SETPOT-0
  171.                 RETURN
  172. ;------------------------------------
  173. WRITE1
  174.                 BANKSEL PORTC
  175.                 BSF     PORTC,7
  176.                 NOP
  177.                 BSF     PORTC,6
  178.                 NOP
  179.                 NOP
  180.                 NOP
  181.                 NOP
  182.                 NOP
  183.                 NOP
  184.                 NOP
  185.                 NOP
  186.                 NOP
  187.                 NOP
  188.                 NOP
  189.                 NOP
  190.                 NOP
  191.                 NOP
  192.                 NOP
  193.                 NOP
  194.                 BCF     PORTC,6
  195.                 NOP
  196.                 NOP
  197.                 RETURN
  198. ;------------------------------------
  199. WRITE0
  200.                 BANKSEL PORTC
  201.                 BCF     PORTC,7
  202.                 NOP
  203.                 BSF     PORTC,6
  204.                 NOP
  205.                 NOP
  206.                 NOP
  207.                 NOP
  208.                 NOP
  209.                 NOP
  210.                 NOP
  211.                 NOP
  212.                 NOP
  213.                 NOP
  214.                 NOP
  215.                 NOP
  216.                 NOP
  217.                 NOP
  218.                 NOP
  219.                 NOP
  220.                 BCF     PORTC,6
  221.                 NOP
  222.                 NOP
  223.                 RETURN
  224. ;----------------------------------
  225. FINISH          END
(#) kalmangabi válasza kalmangabi hozzászólására (») Júl 27, 2011 /
 
még egy észrevétel:
Ha az egyik poti teljesen fel van tekerve a másik meg le akkor van némi "áthallás". Vagyis ha mondjuk a ch1 en 0V van a ch2 n meg 5V, akkor a ch1 en (az ADC által) mért feszkó kb 0.5V. Ez is hibás bállításokra vall szerintem.
Várom az ítéletet.
(#) Hp41C válasza kalmangabi hozzászólására (») Júl 27, 2011 / 1
 
Szia!

Nem vársz eleget (2*Tad a minimálisan betartandó idő)... A 142. sorban kiválasztod a csatornát és indítod az A/D -t, mivel az adat 0. bitje 1. A 143. sorban még egyszer indítod az A/D -t.

Kerüld a goto $+n ill. goto $-n formájú ugrásokat, a regiszterek bitjeit a nevükkel használt (STATUS,2 helyett STATUS,Z olvashatóbb). A műveleti jelet tartalmazó cimke sem szerencsés (POTLVL-3).
(#) neutrox hozzászólása Júl 27, 2011 /
 
köszönöm szépen a segitségeket (watt, bbalazs_ és icserny) már el tudtam kezdeni de sajnos elakadtam, az eggyik oldalon talált ASM pédát kicsit átdolgoztam és elakad (az alap példa le sem fordul mert a RES parancsra azt írja hogy csak páros számokkal működik)

  1. CBLOCK  0x000
  2.         szamlalo1
  3.         szamlalo2
  4.         szamlalo3
  5.         ENDC
  6.  
  7.         org     0x00
  8. main:   clrf    PORTA   ;porta 0
  9.         clrf    TRISA   ;trisa mind kimenet
  10.         bsf     PORTA,2
  11. ciklus: call    delay
  12.         btg     PORTA,3
  13.         BTG     PORTA,2
  14.         goto    ciklus
  15.                
  16. delay:  movlw   0x10
  17.         movwf   szamlalo3
  18.         MOVLW   0XFF
  19.         MOVWF   szamlalo2
  20.         MOVWF   szamlalo1
  21. loop:   decfsz  szamlalo1
  22.         GOTO    loop
  23.         decfsz  szamlalo2
  24.         GOTO    loop
  25.         decfsz  szamlalo3
  26.         GOTO    loop
  27.         return
  28.         END


a konfigurációt nem másoltam át mert az hosszú (esetleg csak annyit a konfig al kapcsolatban hogy a 20MHz hez jó e a FOSC = HS amit az adatlap javasol)

a program felváltva kéne hogy villogtassa a 2 és 3 "lábakat" de csak azt csinálja hogy bekapcsolja a 3-ast aztán átvált a 2-esre és úgy marad, átírtam a programot más parancsokkal
  1. ciklus: call    delay
  2.         bsf     PORTA,3
  3.         bcf     PORTA,2
  4.         call    delay
  5.         bcf     PORTA,3
  6.         bsf     PORTA,2
  7.         goto    ciklus

így azt kapom hogy villog EGY led és nem felváltva a kettő... a láb biztos hogy működik. Mi lehet a baj?
(#) Hp41C válasza neutrox hozzászólására (») Júl 27, 2011 /
 
Szia!

Milyen típusú kontrolleren futtatod? Kikapcsoltad az A/D -t vagy az analóg komparátort?
(#) neutrox válasza Hp41C hozzászólására (») Júl 27, 2011 /
 
PIC18F2550
alap állapotban vannak abba még nem néztem bele.
Eddig csak 16F el foglalkoztam és ott másik bankban voltak... 18F nél nem tudom hogy váltok bankot... vagy hogy kell e.
Megnéztem az adatlapot és ezek alapból ki vannak kapcsolva. Működik amikor elösször azt mondom neki hogy
kapcsolja be... de amikor már felváltva kéne villognia akkor nem villog csak az egyik.
(#) kalmangabi válasza Hp41C hozzászólására (») Júl 27, 2011 /
 
No!

Beiktattam egy ilyet:



DELAY
BANKSEL PORTB
MOVLW D'150'
MOVWF M_DELAY
DECFSZ M_DELAY,1
GOTO $-1
RETURN

a mérések elé és szuperül működik.
Nagyonszépen köszönöm a segítséget mindenkinek!
(#) neutrox válasza neutrox hozzászólására (») Júl 27, 2011 /
 
Átírtam a programot és most működik (csak nem tudom hogy miért ) van valakinek ötlete hogy most miért jó?

amire átírtam:
  1. ciklus: call    delay
  2.         btg     PORTA,0
  3.         call    delay
  4.         btg     PORTA,1
  5.         goto    ciklus
(#) bbalazs_ válasza neutrox hozzászólására (») Júl 27, 2011 / 1
 
Jajj, te!
Org-nal nem tettel indulo vektort es a ket interruptot is kihagytad.

org 0-ra csak annyit tegyel, hogy jmp main
org 8-ra retfie 0
org 18-ra retfie 0
org 20
main:

De legyen az a PortA LATA.
Azert tutti ami fix alapon, az ADCON1-ben az also negy bitet allitsd 1-be.
(#) Hp41C válasza kalmangabi hozzászólására (») Júl 27, 2011 /
 
Szia!

Írd át a programot.... Legfőképen a POTLVL-n címkéket. A szegény fordító nem azt fordítja, amit gondoltál, hanem azt, amit leírtál:

Hova is ugrik a 13 sorban levő GOTO POTLVL-4 utasítás ? Szerintem a 4. sorban levő BCF PORTD,3 utasításra...

  1. BSF     PORTD,3
  2.                 CALL    SETPOT
  3.                 BANKSEL PORTD
  4.                 BCF     PORTD,3
  5.                 NOP
  6.                 NOP
  7.                 RETURN
  8. ;----------------------------------
  9. POTLVL  
  10.                 BANKSEL PORTB
  11.                 MOVFW   M_ADC
  12.                 BTFSC   STATUS,2
  13.                 GOTO    POTLVL-4


Az ellenőrzéshez használd a szimulátort.
(#) icserny válasza neutrox hozzászólására (») Júl 27, 2011 / 1
 
Read-modify-write hiba lehetett. PORTA helyett a LATA regiszter bitjeit kellene billegtetni. Bővebben: Link (különösen az 5. ábrát ajánlom figyelmedbe)
(#) neutrox válasza bbalazs_ hozzászólására (») Júl 27, 2011 /
 
rendben, megcsináltam. köszönöm. Az
org 0x20
mit csinál? (A többit tudom.)
(#) neutrox válasza icserny hozzászólására (») Júl 27, 2011 /
 
köszönöm szépen a linket. Érdekes, nem is tudtam hogy már ilyenek vannak a 18F ben, azt hiszem érdemes lenne átnéznem alaposabban az adatlapot.
(#) L2773 hozzászólása Júl 27, 2011 /
 
Ha van ideje válaszolni valakinek...
A WinPIC800 működik-e Windows 7 alatt?
Megépítettem a Watt féle LPT v.4 programozót, és a kipróbálás előtt szeretném kizárni az operációs rendszer hibát. Amennyiben nem, úgy sem hagyom abban, telepítek XP-t a 7-es mellé. Úgy tűnik, hogy igen, legalábbis az ICProg-gal szemben, amelyik már induláskor hibát jelez (DLL...)
Az első PIC égetésem lenne, és nem akarom tönkretenni az égetőt, LPT portot vagy PIC-et.
(#) trudnai válasza kalmangabi hozzászólására (») Júl 27, 2011 /
 
Orulok, hogy mukodik, azonban valoszinuleg BANKSEL M_DELAY-t szerettel volna PORTB helyett?

Amugy adatlapbol kinezheted mennyit kell varakozni ill kiprobalhatod, hogy mekkora a minimum amivel meg mukodik es arra rakj ra valamekkora varakozast pluszban es ugy akkor nem kell feleslegesen sokat varakozni (en ugy emlekeszem elegendo nehany us neki, de majd kiderul).
(#) L2773 hozzászólása Júl 27, 2011 /
 
Egy másik kérdésem:
A MCLR és a Vpp közti 10 k-s ellenállást az égetőbe tettem (Link), mert nem szándékszom a céláramkörben programozni, hanem égetéskor áthelyezem az égetőbe.
Így helyesen működik-e, vagy kiemelhetem onnan?
(#) bbalazs_ válasza neutrox hozzászólására (») Júl 27, 2011 /
 
Azon a memoriacimen fogja folytatni a forditast, vagyis tulajdonkeppen azt mondja, hogy az a cimke vagy utasitas, amit ez utan elhelyezel, azt oda fogja mar tenni, az onnan fog indulni.
(#) trudnai válasza L2773 hozzászólására (») Júl 27, 2011 /
 
Igen, annak mindenkepp ott kell lennie Watt mester szerint:

Idézet:
„Ez utóbbi esetben is be kell építeni az égetés idejére, mert ellenkező esetben az MCLR láb az odavezető Vpp kapcsolótól tartó hosszú vezetéken lebeg, ami tönkre teheti a PIC-et.”


Szoval akkor az egeto aramkorbe tedd bele, ha mindenkepp aramkoron kivuli programozot valositasz meg (gondolom ZIF vagy DIP foglalattal?).
(#) L2773 válasza trudnai hozzászólására (») Júl 27, 2011 /
 
Kösz, akkor bent van.
Volna még kérdésem:

Próbálom égetni a PIC-et.
WinPIC800-at használok.
A beállítások a Watt oldalán leírtak alapján.
Az is, hogy ha az eszközfelismerés megvan, akkor "nagy baj nem lehet." Meg is van a felismerés az Eszköz -> IC felismerés menüpont alatt. Üzenet: Találtam - > 16F684.
Ugyanis ezzel kezdtem. Majd
Eszköz -> Hardware teszt: Hardware OK üzenettel
Eszköz -> Mindet Töröl: OK

Azonbanm mikor égetek, vagyis Eszköz -> Mindet beír, akkor a következő üzenetet kapom:
HIBA - > Cím írása 0x000002
Beírva : 0x22F8 Kiolvasás : 0x2000

Már-már reménykedtem, de
Mit rontok el???
Pls
(#) trudnai válasza L2773 hozzászólására (») Júl 27, 2011 /
 
Torles utan ha kiolvasod a program terulet tartalmat mindenhol 3FF-eket latsz? Vpp es Vdd fesz szintje rendesen megvan torleskor es iraskor?
(#) L2773 válasza trudnai hozzászólására (») Júl 27, 2011 /
 
Hát Eszköz - > Kiolvas Kód vagy Kiolvas Adat után mindenhol 3FFF-től különböző értékek vannak...
Kiolvas Kód: 2048 szó
Kiolvas Adat: 256 Byte

Meg a Törlés - > OK után a 100% pirosban van, nem tudom az baj-e...

Eszköz -> Mindet ellenőriz után:

Találtam -> 16F684
[ Ellenörzés ]
Olvasás Kód - 2048 szó
Olvasás ID - 4 szó
Olvasás Konfig - 2 szó
Olvasás Adat - 256 byte
Kód - Ok
ID - Ok
Konfig - Ok
Adat - Ok
(#) L2773 válasza trudnai hozzászólására (») Júl 27, 2011 /
 
A Vpp es Vdd-t hogy ellenorizzem, az írás vagy olvasás pár másodpercet tart, azalatt mérjem ?

Az Vdd és Vpp az IC lábán rajta van

Az Adat gomb alatt mindenutt FF van
(#) potyo válasza L2773 hozzászólására (») Júl 27, 2011 /
 
Olvasd el első körben watt holnapján az égetőről szóló dolgokat. Szépen leírja, hogyan kell éleszteni...

Amúgy van valami oka, hogy Winpic800-at akarsz használni? Ott van watt programja, használhatnád azt is.
(#) L2773 válasza potyo hozzászólására (») Júl 27, 2011 /
 
"PIC16F684" 'no teszt

Csatolnám a beállításaimat..
(#) L2773 válasza potyo hozzászólására (») Júl 27, 2011 /
 
"PIC16F684" 'no teszt
Átolvastam az oldalt többször is
A v4-es változatot építettem meg, mert arról szól, hogy végleges. A 16F684-gyel kapcsolatban nem gondolkodtam igaz. Lehet, hogy egy 877-essel kellett volna próbálkozzak, csak arra gondoltam, "könnyebben kibírom egy egyszerűbb halálát". Meg a 684-esben benne van timer, CCCP, PWM, A/D konverter, szoval majd-minden...
(#) L2773 válasza L2773 hozzászólására (») Júl 27, 2011 /
 
Ezek a képek a törlés után.

Megnézem a Watt programját.
(#) watt válasza L2773 hozzászólására (») Júl 27, 2011 /
 
Idézet:
„"PIC16F684" 'no teszt”

Ez csak annyit jelent, hogy nem volt ilyen PIC-em, azaz nem tudtam tesztelni, de most te megteheted! Elvileg működnie kell!
A minivel csak a WPB működik együtt, a mini támogatás kipipálásával. A többi programmal esetleges a dolog.
(#) erdoszoli válasza icserny hozzászólására (») Júl 28, 2011 /
 
Szia
köszi a tippet, azzal a deklarálással már jól ír ki mindent. Köszönöm!
(#) erdoszoli hozzászólása Júl 28, 2011 /
 
Sziasztok ismét, sok a szabadidőm
Próbálkozom gombok mátrixos kezelésével, 4 sor 4 oszlop, 1ik sort aktivvá teszem , megnézem melyik oszlop lesz aktív a gombnyomásra és ezt kiértékelem, ha egyik sem akkor lépek egy sort.. kb ez az elv. Emellett van kijelző, motorvezérlés pwm-el , kommunikáció . A kérdésem annyi hogy az mcc18 beépített moduljait használva lehetséges-e hogy a kimeneti , bemeneti lábaim átíródnak ? Csatolva van egy rövid program ami csak erre van lekicsinyitve. Kiirja melyik gombot nyomtam meg.. Probléma hogy csak az oszlop1 érzékel változást, és a sor1 nem is tud aktív lenni ( szkópon nézve RA1en nincs semmi lüktetés mint a többi sor lábon) .
A pwm kell a kijelző háttérvilágításának állításához, azt a P1D kimenetre küldtem, de ahogy látom pont a P1A , P1B, és P1C lábakon van a többi "oszlop" . Létezik hogy pwm-el együtt nem tudom sima I/O lábnak használni ezt a 3 lábat? Elvileg a pwm_initben beállítottam hogy csak a P1D legyen pwm kimenet, de lehet elrontottam ?
ui: ez egy 18f14k22 -es pic éppen.
Következő: »»   1006 / 1319
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem