Fórum témák

» Több friss téma
Fórum » PIC kezdőknek
 
Témaindító: Placi84, idő: Okt 3, 2005
Témakörök:
- A PIC ÖSSZES Vdd és Vss (AVdd és AVss) (tápfeszültség) lábát be kell kötni!
- A táplábak mellé a lehető legközelebb 100nF-os KERÁMIA kondenzátorokat kell elhelyezni.
- Az MCLR lábat, 10kohm-mal fel kell húzni a Vdd tápfeszültségre.
- Külső kvarc használatakor 4MHz-ig XT, a fölött pedig HS konfigurációt kell beállítani.
- Stabilizált tápegységet kell használni, a kapcsoló üzemű "telefon töltő" adapterek okozhatnak hibákat.
- Programozáshoz, használj lehetőleg PICKIT2 vagy 3 programozót. Kerülendő a JDM (soros porti) programozó.
- A PIC adatlapja (PDF), tartalmazza a lábak kiosztását és a PIC minden paraméterét. Az adatlap ingyen letölthető!
- Egyes PIC típusoknál az RA4 nyitott nyelőelektródás (Csak lefelé húz L szintre, H szintet nem ad ki!)
- Ha a PGM lábat digitális ki-/bemenetnek használod, az alacsony feszültségű programozási lehetőséget le kell tiltani.
Lapozás: OK   435 / 1210
(#) nedudgi válasza Sicka hozzászólására (») Júl 21, 2013 /
 
Ha program forrást teszel fel, használd a [Kód] gombot!
  1. ; Igy olvashatobb lesz a program
  2. ; ez csak a vege
  3. MainLoop:
  4.           movf    Display,w     ; Copy the display to the LEDs
  5.           movwf PORTC
  6.           call      kesleltetes    ; 0,197 masodperc
  7.           call      kesleltetes    ; megegyszer
  8.           bcf      STATUS,C        ; ensure the carry bit is clear
  9.           rrf       Display,f
  10.           btfsc   STATUS,C        ; Did the bit rotate into the carry?
  11.           bsf      Display,3        ; yes, put it into bit 3.
  12.           goto    MainLoop
  13.  
  14. kesleltetes
  15. OndelayLoop:
  16.           decfsz Delay1,f         ; Waste time.
  17.           goto    OndelayLoop ; The Inner loop takes 3 instructions per loop * 256 loopss = 768
  18.           decfsz Delay2,f         ; The outer loop takes additional 3 instructions per lap * 256
  19.           goto    OndelayLoop ; (768+3) * 256 = 197376 instructions = 0.197 sec.
  20.                                            ; call it a two-tenths of a second.
  21.           retlw   0
  22.           end
  23. ;

Ha a késleltetést a fő programciklusból egy szubrutinba helyezed át, egyből érthetőbb lesz a program. Egy újabb változót használhatva számolod, hányszor hívtad meg a késleltetést, akkor kevesebbet kell írni.
(#) Sicka válasza nedudgi hozzászólására (») Júl 21, 2013 /
 
Köszönöm a segítséget nagyjából világos minden csak ez a szubrutinba helyezéses téma hogy zajlik az nem egészen, valamint mit kell átírnom , hogy tudjam megfelelőre állítani a sebességet?!?!
(#) Hilo hozzászólása Júl 21, 2013 /
 
Sziasztok, a kérdésem a következő lenne: van két 16f886-os PIC amiket egy adó/vevő modul párossal szeretnék össze kötni. Első körben még csak ez lenne a későbbiekben viszont több vevő-PIC is lenne ugyan ahhoz az adóhoz. Ha jól szűrtem le akkor itt az aszinkron adatátvitel jöhet szóba. Ha az átvinni kívánt adat 2x8 bit lenne (8 bit azonosító hogy melyik vevőnek szól az adat / 8 bit "hasznos" adat.) Manchester kódolással ez már 32 bit. Van e erre valami portja/akármije a 886-osnak, vagy nekem kell lekezelnem programból? Illetve a maximális adatátviteli sebességet nézve tulajdonképpen a bittek "hosszára" kell figyelnem? Azaz ha adott egy 9600 bps maximális bit ráta akkor egy bit ideje nem lehet rövidebb mint 1/9600 másodperc, de e legjobb ha ez alatt maradok (~felénél) hogy minél kevesebb hibás adat legyen? Előre is köszönöm.
(#) foxi63 válasza Hilo hozzászólására (») Júl 21, 2013 / 1
 
Szia!
Ha ajánlhatnám az rfm12B adó/vevő modulpárt ez kielégít minden igényt.
Egyébként tényleg aszinkron adatátvitellel megy át az adat, nem kell Manchester kódolás sem.
átviteli sebesség állítható, adó és vevő egyben,eleve van egy kódszám, ami beérkezése után kezdi feltölteni az adatpufferét, ezért nem érzékeny a zavarjelekre sem.
Ha rászánod magad akkor segítek az RFM12BS topicban, inkább odatartozó probléma.
(#) Bell válasza Hilo hozzászólására (») Júl 21, 2013 / 1
 
Nem kínlódnék Manchester kódolással és előbb alacsonyabb sebességgel, pl. 300-1200bd -al próbálkoznék. De van róla infó (Bővebben: Link)
(#) zenetom válasza Hilo hozzászólására (») Júl 21, 2013 / 1
 
Szia!
Az egyszerű modulokban nincs kódolás, így neked kell csinálnod (pl. Bővebben: Link és adópárja). De amiken már kommunikációs interfész van (SPI, UART ..stb), azok már komolyabb modulok, raknak bele kódolást, tehát neked azzal nem kell foglalkoznod. Csak küldöd neki az adatot és kész (illetve ezeket lehet konfigurálni is, amit be lehet állítani pl. egy jumperral).
(#) Bell válasza Hilo hozzászólására (») Júl 21, 2013 /
 
A lényeg lemaradt. Az RC6 a TX, RC7 az RX láb. Ezeket értelemszerűen ki-, illetve bementetként kell konfigurálni.
Ha összekötöd a TX kimenetet az RX bemenettel, vissza is tudod olvasni a kiküldött byte-ot.
(#) Hilo hozzászólása Júl 21, 2013 /
 
Köszönöm mindenkinek a hozzászólást. Itthon jelenleg HM-T868 /HM-R868 adó/vevő párosom van, ezekkel szeretném megoldani a kérdést.
Egyrészről hogy megértsem a működését, ha nekem kell megcsinálnom a kódolást akkor azzal tanulom meg a legjobban. Másrészt így csak 1 lábát köti le a PIC-nek.
Későbbiekben lehet hogy rfm12B modul párt is kipróbálom, akkor mindenképpen benézek a RFM12BS topicba. Köszönöm a felajánlást.
PIC-ezni azért kezdtem hogy tanuljak, megértsem a dolgokat. Ha megépítek valami, 99% próba panelon teszem, ha működik ahogy elképzeltem, szétszedem és bele vágok valami másba.
Jól értettem amúgy hogy a bittek "hossza" tulajdonképpen amire figyelnem kell az adó maximum sebességénél?
A hozzászólás módosítva: Júl 21, 2013
(#) Bell válasza Hilo hozzászólására (») Júl 21, 2013 /
 
Az EUSART sebessége (baud) kisebb legyen, mint a modul átviteli sebessége.
(#) Hp41C válasza Hilo hozzászólására (») Júl 21, 2013 / 1
 
(#) Hilo hozzászólása Júl 21, 2013 /
 
Ismételten köszönöm, USART leírás akad esetleg magyarul vagy marad az angol?
Ha a PIC EUSART modulját használom, kell-e a küldendő biteket kódolnom, vagy csak küldöm, fogadom és örülök hogy megjött? (értem ezalatt hogy mondjuk 00000000 -at vagy 11111111 -et szeretnék küldeni azt is átküldi így?)
Ha 8 bit azonosító + 8 bit adat kombinációt szeretnék használni, akkor EUSART al küldöm byte-onként, majd a fogadó oldalon programból lekezelem hogy mit szeretnék kezdeni vele, jól értem?
Hp41C a linket nagyon köszönöm!
(#) Sicka hozzászólása Júl 21, 2013 /
 
  1. #include <p16F690.inc>
  2.      __config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF)
  3.  
  4.      cblock 0x20
  5. Delay1              ; Assign an address to label Delay1
  6. Delay2
  7. Display             ; define a variable to hold the diplay
  8.      endc
  9.      
  10.      org 0
  11. Start:
  12.      bsf       STATUS,RP0          ; select Register Page 1
  13.      clrf      TRISC               ; make IO PortC all output
  14.      bcf       STATUS,RP0          ; back to Register Page 0
  15.      movlw     0x08
  16.      movwf     Display
  17. MainLoop:
  18.           movf    Display,w     ; Copy the display to the LEDs
  19.           movwf PORTC
  20.           call      kesleltetes    ; 0,197 masodperc
  21.           call      kesleltetes    ; megegyszer
  22.           call      kesleltetes    ; 0,197 masodperc
  23.           call      kesleltetes    ; megegyszer
  24.           call      kesleltetes    ; 0,197 masodperc
  25.           call      kesleltetes    ; megegyszer
  26.           call      kesleltetes    ; 0,197 masodperc
  27.           call      kesleltetes    ; megegyszer   call      kesleltetes    ; 0,197 masodperc
  28.           call      kesleltetes    ; megegyszer
  29.           call      kesleltetes    ; 0,197 masodperc
  30.           call      kesleltetes    ; megegyszer   call      kesleltetes    ; 0,197 masodperc
  31.           call      kesleltetes    ; megegyszer
  32.           call      kesleltetes    ; 0,197 masodperc
  33.           call      kesleltetes    ; megegyszer   call      kesleltetes    ; 0,197 masodperc
  34.           call      kesleltetes    ; megegyszer
  35.           call      kesleltetes    ; 0,197 masodperc
  36.           call      kesleltetes    ; megegyszer   call      kesleltetes    ; 0,197 masodperc
  37.           call      kesleltetes    ; megegyszer
  38.           call      kesleltetes    ; 0,197 masodperc
  39.           call      kesleltetes    ; megegyszer   call      kesleltetes    ; 0,197 masodperc
  40.           call      kesleltetes    ; megegyszer
  41.           call      kesleltetes    ; 0,197 masodperc
  42.           call      kesleltetes    ; megegyszer   call      kesleltetes    ; 0,197 masodperc
  43.           call      kesleltetes    ; megegyszer
  44.           call      kesleltetes    ; 0,197 masodperc
  45.           call      kesleltetes    ; megegyszer   call      kesleltetes    ; 0,197 masodperc
  46.           call      kesleltetes    ; megegyszer
  47.           call      kesleltetes    ; 0,197 masodperc
  48.           call      kesleltetes    ; megegyszer   call      kesleltetes    ; 0,197 masodperc
  49.           call      kesleltetes    ; megegyszer
  50.           call      kesleltetes    ; 0,197 masodperc
  51.           call      kesleltetes    ; megegyszer   call      kesleltetes    ; 0,197 masodperc
  52.           call      kesleltetes    ; megegyszer
  53.           call      kesleltetes    ; 0,197 masodperc
  54.           call      kesleltetes    ; megegyszer   call      kesleltetes    ; 0,197 masodperc
  55.           call      kesleltetes    ; megegyszer
  56.           call      kesleltetes    ; 0,197 masodperc
  57.           call      kesleltetes    ; megegyszer   call      kesleltetes    ; 0,197 masodperc
  58.           call      kesleltetes    ; megegyszer
  59.           call      kesleltetes    ; 0,197 masodperc
  60.           call      kesleltetes    ; megegyszer   call      kesleltetes    ; 0,197 masodperc
  61.           call      kesleltetes    ; megegyszer
  62.           call      kesleltetes    ; 0,197 masodperc
  63.           call      kesleltetes    ; megegyszer   call      kesleltetes    ; 0,197 masodperc
  64.           call      kesleltetes    ; megegyszer
  65.           call      kesleltetes    ; 0,197 masodperc
  66.           call      kesleltetes    ; megegyszer   call      kesleltetes    ; 0,197 masodperc
  67.           call      kesleltetes    ; megegyszer
  68.           call      kesleltetes    ; 0,197 masodperc
  69.           call      kesleltetes    ; megegyszer   call      kesleltetes    ; 0,197 masodperc
  70.           call      kesleltetes    ; megegyszer
  71.           call      kesleltetes    ; 0,197 masodperc
  72.           call      kesleltetes    ; megegyszer   call      kesleltetes    ; 0,197 masodperc
  73.           call      kesleltetes    ; megegyszer
  74.           call      kesleltetes    ; 0,197 masodperc
  75.           call      kesleltetes    ; megegyszer   call      kesleltetes    ; 0,197 masodperc
  76.           call      kesleltetes    ; megegyszer
  77.           call      kesleltetes    ; 0,197 masodperc
  78.           call      kesleltetes    ; megegyszer   call      kesleltetes    ; 0,197 masodperc
  79.           call      kesleltetes    ; megegyszer
  80.           call      kesleltetes    ; 0,197 masodperc
  81.           call      kesleltetes    ; megegyszer   call      kesleltetes    ; 0,197 masodperc
  82.           call      kesleltetes    ; megegyszer
  83.           call      kesleltetes    ; 0,197 masodperc
  84.           call      kesleltetes    ; megegyszer   call      kesleltetes    ; 0,197 masodperc
  85.           call      kesleltetes    ; megegyszer
  86.           call      kesleltetes    ; 0,197 masodperc
  87.           call      kesleltetes    ; megegyszer   call      kesleltetes    ; 0,197 masodperc
  88.           call      kesleltetes    ; megegyszer
  89.           call      kesleltetes    ; 0,197 masodperc
  90.           call      kesleltetes    ; megegyszer   call      kesleltetes    ; 0,197 masodperc
  91.           call      kesleltetes    ; megegyszer
  92.           call      kesleltetes    ; 0,197 masodperc
  93.           call      kesleltetes    ; megegyszer   call      kesleltetes    ; 0,197 masodperc
  94.           call      kesleltetes    ; megegyszer
  95.           call      kesleltetes    ; 0,197 masodperc
  96.           call      kesleltetes    ; megegyszer   call      kesleltetes    ; 0,197 masodperc
  97.           call      kesleltetes    ; megegyszer
  98.           call      kesleltetes    ; 0,197 masodperc
  99.           call      kesleltetes    ; megegyszer   call      kesleltetes    ; 0,197 masodperc
  100.           call      kesleltetes    ; megegyszer
  101.           call      kesleltetes    ; 0,197 masodperc
  102.           call      kesleltetes    ; megegyszer
  103.           bcf      STATUS,C        ; ensure the carry bit is clear
  104.           rrf       Display,f
  105.           btfsc   STATUS,C        ; Did the bit rotate into the carry?
  106.           bsf      Display,3        ; yes, put it into bit 3.
  107.           goto    MainLoop
  108.  
  109. kesleltetes
  110. OndelayLoop:
  111.           decfsz Delay1,f         ; Waste time.
  112.           goto    OndelayLoop ; The Inner loop takes 3 instructions per loop * 256 loopss = 768
  113.           decfsz Delay2,f         ; The outer loop takes additional 3 instructions per lap * 256
  114.           goto    OndelayLoop ; (768+3) * 256 = 197376 instructions = 0.197 sec.
  115.                                            ; call it a two-tenths of a second.
  116.           retlw   0
  117.           end
  118.  
  119. kesleltetes
  120. OndelayLoop:
  121.           decfsz Delay1,f         ; Waste time.
  122.           goto    OndelayLoop ; The Inner loop takes 3 instructions per loop * 256 loopss = 768
  123.           decfsz Delay2,f         ; The outer loop takes additional 3 instructions per lap * 256
  124.           goto    OndelayLoop ; (768+3) * 256 = 197376 instructions = 0.197 sec.
  125.                                            ; call it a two-tenths of a second.
  126.           retlw   0
  127.           end





Sziasztok!
tudna valaki segíteni? van egy futófényes (rotate) programom aminek a gyorsaságán tudtam állítani nedudgi segítségének köszönhetően a call paranccsal... Hogy lehetne azt megoldani , hogy ne kelljen ennyiszer leírni a call parancsot ???? valamint van négy led a probapanelen és mindegyik ledet különböző ideig szeretném kivilágítani pl 1 led kapcsol 10 -15 másodpercig világít ezután kikapcsol bekapcsol a második led 20-25 másodpercig világít majd kikapcsol következik a harmadik led 30-35 másodpercig világít majd kikapcsol aztán a negyedik 40-45 másodperc aztán kikapcsol...
(#) Hilo válasza Sicka hozzászólására (») Júl 21, 2013 /
 
Nem tudom van e valami szabvány megoldás erre, én a következő képen csinálnám:
Elején deklarálsz 3 változót az időzítéshez.
Megírod az időzítő rész, majd ezt meghívod különböző paraméterekkel attól függően mennyi késleltetést szeretnél.
  1. cblock
  2.         t1
  3.         t2
  4.         t3
  5.         endc
  6.  
  7. Delay
  8.         movlw   0x11
  9.         movwf   t1
  10.         movlw   0x66
  11.         movwf   t2
  12.         movlw   0x42
  13.         movwf   t3
  14. Delay_0
  15.         decfsz  t1, f
  16.         goto    $+2
  17.         decfsz  t2, f
  18.         goto    $+2
  19.         decfsz  t3, f
  20.         goto    Delay_0
  21.  
  22.         return

A fenti kód 15 másodperces késleltetés 8MHz sebességen. Bizonyos késleltetési idő felett szükség van t4 re is.
t1, t2, t3, t4 értéke határozza meg a késleltetés idejét, és függ a PIC órajelétől.
Felhasználás a te esetedben pl.:
led 1 be
call Delay (15 mp)
led 1 ki
led 2 be ......
(#) foxi63 válasza Sicka hozzászólására (») Júl 22, 2013 /
 
Szia! nehéz elmagyarázni, ezért összeütötten neked egy progit.
A főprogramban van egy 0,1sec és egy 1sec időnközönként ismétlődő rész, oda tedd be a kódodat. A portok (a b c ) nincsenek beállítva.
  1. #include <p16F690.inc>
  2.      __config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF)
  3.  list p=16f690
  4. errorlevel 2
  5. RADIX DEC ; 10-ES SZÁMRENDSZER AZ ALAP
  6.      cblock 0x20
  7.      W_TEMP,STATUS_TEMP
  8.         T2_01   ;T2 ÁLLÍTJA 0.1SEC SZÁMLÁLÓ
  9.         T2_1            ;T2 ÁLLÍTJA 1SEC SZÁMLÁLÓ
  10.         LED_HOLDREG;
  11.         FLAG            ;ELZŐBITEK
  12.                         ;0. BIT 0,1 SEC JELZÉSE
  13.                         ;1.BIT  1 SEC JELZÉSE
  14.      ENDC
  15.      ORG0X00
  16. CALL    INIT
  17. GOTO    PRG
  18. ;////////////////////////////////////////
  19. ORG 0X04                ;MEGSZAKÍTÁSOK JÖNNEK IDE
  20.         MOVWF   W_TEMP
  21.         SWAPF   STATUS,W
  22.         MOVWF   STATUS_TEMP
  23.         BTFSS   PIR1,TMR2IF     ;IRQ-T TMR2 OKOZTA?
  24.         GOTO            M00                     ;NEM TOVÁBB
  25.         BCF             PIR1,TMR2IF
  26.         DECFSZ  T2_01
  27.         GOTO            M00                     ;HA MÉG NEM JÁRT LE
  28.         MOVLW   10                      ;IDŐZÍTŐ VISSZAÁLLÍTÁSA
  29.         MOVWF   T2_01          
  30.         BSF             FLAG,0          ;FŐPROGRAMBA JELZÉS
  31.         DECFSZ  T2_1
  32.         GOTO            M00
  33.         MOVLW   10
  34.         MOVWF   T2_1
  35.         BSF             FLAG,1          ; 1SEC LEJÁRT JELZÉS A FŐPROGRAMNAK
  36. M00:    SWAPF   STATUS_TEMP,W
  37.         MOVWF   STATUS
  38.         SWAPF W_TEMP,F
  39.         SWAPF W_TEMP,W
  40.         RETFIE
  41.    
  42.  ;/////////////////////////
  43. INIT
  44.         BANKSEL  OSCCON
  45.         MOVLW   B'01100001'     ;4MHZ BELSŐ OSC.
  46.         MOVWF   OSCCON          ;BEÁLLÍTÁSA
  47.         MOVLW   249
  48.         MOVWF   PR2                     ;TIMER2 250 UTÁN NULLÁZÓDIK
  49.         MOVLW   B'01001101'     ;T2 ON 10POST   4 PRE
  50.         BANKSEL T2CON
  51.         MOVWF   T2CON
  52.         BSF             INTCON,GIE
  53.         BSF             INTCON,PEIE     ;TMR2 MEGSZAK ENG.
  54.         BANKSEL PIE1
  55.         BSF             PIE1,TMR2IE     ;
  56.         BANKSEL 0
  57.         MOVLW   10
  58.         MOVWF   T2_01           ;0,1 SEC BEÁLLÍTÁSA
  59.         MOVWF   T2_1                    ;1 SEC BEÁLLÍTÁSA
  60. ;PORTBEÁLLÍTÁSOK HIÁNYOZNAK
  61.         RETURN
  62.  
  63. PRG:
  64.         BTFSS   FLAG,0  ;LEJÁRT  0.1 SEC ??
  65.         GOTO            P00             ;NEM TOVÁBB
  66.         BCF             FLAG,0
  67.  
  68.         NOP                             ;IDEJÖN AMIT 0,1 SEC IDŐKÖZÖNKÉNT KELL CSINÁLNI
  69.  
  70. P00:    BTFSS   FLAG,1  ;LEJÁRT AZ 1 SEC ??
  71.         GOTO            P01             ;NEM TOVÁBB
  72.         BCF             FLAG,1  ;JELZŐ TÖRLÉSE
  73.  
  74.         NOP                             ;IDE JÖNNEK AZ 1 MÁSODPERCESEK
  75.  
  76.  
  77.  
  78. P01:    GOTO    PRG
  79. END
Ezzel nincs feleslegesen elpazarolva a PIC ideje a ciklusszámolgatással, mást is tud csinálni.
A hozzászólás módosítva: Júl 22, 2013
(#) nox72 hozzászólása Júl 22, 2013 /
 
Sziasztok! Segítséget szeretnék kérni PIC16F628A-20 program beégetésre. A program HEX-ban meg van de nincs programozóm. Egy PIC-ben cserélni kellene és 4 PIC-be beletenni.

Tudna nekem valaki segíteni? Budapesten belül szívesen elmegyek a kollégához. Igazán fontos volna!

Köszönöm előre is! Ha tudok én is szívesen segítek amire szüksége van.

Üdv!
(#) proba válasza Sicka hozzászólására (») Júl 22, 2013 /
 
Én a 0.2s késleltetés rutinja után betennék egy következő változót csökkentő utasítást. Ha a változó nem 0 akkor vissza a késleltetés elejére.
Amikor a késleltető rutint meghívom, ebbe a változóba eltárolnám hányszor kell a 0.2 s.
Így egy egyszerű szám módosítással tudsz állítani 50s ig 0.2s felbontással.
Ha a programodnak más dolga is akad akkor tényleg a timmerek felprogramozása marad.(mellékesen pontosabb, és szebb is.)
(#) Hilo hozzászólása Júl 22, 2013 /
 
Sziasztok, PIC16f886-os EUSART-al kapcsolatban lenne kérdésem.
Első nekifutásra egy tesztet szerettem volna csak szimulátorral. Adatlapja szerint mindent beállítottam amit kell, de mégsem látok kimeneti jelet a szimulátoron.
MPLAB SIM en a "Logic Analyser" ablakocska nem mutat semmi aktivitást a kimenő lábon.
Ha jól tudom alap állapotban logikai 1-en kéne állnia, nekem végig logikai nullát mutat.
Mit rontottam el/hagytam ki? Előre is köszönök minden választ!
  1. LIST P=16f886
  2.         #include <p16f886.inc>
  3.         __CONFIG 2007, H'20D4'
  4.         __CONFIG 2008, H'3EFF'
  5.  
  6.         CBLOCK  0x20    ;Szabad memória hely
  7.         T1      ;
  8.         T2      ;
  9.         T3      ;
  10.         ENDC
  11.  
  12.         org 0
  13.  
  14. ;*****  PortB digitálsi bemenetté állítás (joystick)  *****
  15. ;**********************************************************
  16.         banksel TRISB   ;
  17.         movlw b'11111111'       ;PortB bemenetre
  18.         movwf TRISB     ;
  19.  
  20.         banksel ANSELH  ;
  21.         clrf ANSELH     ;bemenet digitálissá állítása (AN8-13)
  22. ;**********************************************************
  23.  
  24. ;**********************************************************
  25. ;*****  Baud Rate beállítása  *****
  26.         movf SPBRGH,w   ;Init
  27.         banksel SPBRG   ;
  28.         movlw d'12'     ;d'12' -> 4800bps 4Mhz-en (hiba ~0,16%)
  29.         movwf SPBRG     ;
  30.  
  31. ;*****  EUSART beállítása  *****
  32.         banksel TXSTA   ;CSRC/TX9/TXEN/SYNC/SENDB/BRGH/TRMT/TX9D
  33.         movlw b'00100000'       ;
  34.         movwf TXSTA     ;
  35.  
  36.         banksel RCSTA   ;SPEN/RX9/SREN/CREN/ADDEN/FERR/OERR/RX9D
  37.         movlw b'10000000'       ;
  38.         movwf RCSTA     ;
  39. ;**********************************************************
  40.  
  41.         banksel TXREG
  42.         movlw h'F8'             ;
  43.         movwf TXREG     ;
  44.  
  45. IDE
  46.         banksel PORTB
  47.         movf PORTB,f    ;PortB beolvasása
  48.        
  49.         goto IDE       
  50.  
  51.         end; Teljes program lezáró
(#) Hp41C válasza Hilo hozzászólására (») Júl 22, 2013 /
 
Logikai analizátor helyett: Debugger / Settings / Uart1 I/0: "Enable Uart1 IO" és az "Output to file" kipipálása. Újrafordítás, szimuláció indítása.
(#) Hilo válasza Hp41C hozzászólására (») Júl 22, 2013 /
 
Köszönöm! Így megy tökéletesen.
(#) moltam hozzászólása Júl 23, 2013 /
 
Helosztok.
Ha használom egy 12f683 nál a megszakítás bemenetet, akkor trisiot gp2 re bemenetnek kell állítani? Vagy akkor már a láb nem is gpio?
(#) kokesz185743 hozzászólása Júl 24, 2013 /
 
Amikor be akartam égetni a processzorba a programot, akkor ezt a hibaüzenetet kaptam:

"PKWarn0003: Unexpected device ID: Please verify that a PIC16F884 is correctly installed in the application."


- PICkit 2-vel égetnék PIC16F884-et,
MPlab verzióm: v8.84
nem tudom, hogy mi okozhatja a hibát. Mellékletben küldök egy képet a bekötésről, lehet, hogy azzal van a gond.

123.JPG
    
(#) kistee válasza kokesz185743 hozzászólására (») Júl 24, 2013 /
 
Próbáld meg a PICKit2 saját szoftverével felismertetni. Ha nem ismeri fel automatikusan, akkor a "Device family" menüből válaszd a "Midrange, Standard"-ot és akkor fel kell ismernie.

Ha úgy sem, akkor kézzel add meg a tipusát. Nem tudom, van-e ebben a vezérlőben DeviceID...

Gyári Pickit2-ed van, vagy klón?
(#) Panhard hozzászólása Júl 24, 2013 /
 
Sziasztok! Olyan kérdésem lenne, hogy egy asm-ben megírt projektbe be lehet-e szúrni c kódot? Akár egy include fájlként.
(#) Bell válasza Panhard hozzászólására (») Júl 24, 2013 /
 
Ha lefordítasz valamit C-ről asm-re, ismered az eredmény ki/be címeit, adatait, az adatok és program szerkezetét, a működés minden részletét, illeszteni tudod a meglévő programodhoz, akkor igen.
Ezek nélkül egy olyan előadáshoz hasonlítana, ahol a fontos részeknél az előadó átvált kínaira.
(#) Bell válasza Panhard hozzászólására (») Júl 24, 2013 /
 
C nyelvű programba beszúrni asm-et sokkal egyszerűbb. A fordító doksijában vannak részletek.
(#) Panhard válasza Bell hozzászólására (») Júl 24, 2013 /
 
A programot ismerem, én írtam, csak kellene egy olyan bonyolult számolást végrehajtani, amit asm-ben nem tudok megcsinálni, c-ben viszont már van erre példaprogram. A BMP085 szenzor szamítása lenne az. 4 bájt hosszú változókkal dolgozik, ami nekem még kicsit nehéz.
(#) Bell válasza Panhard hozzászólására (») Júl 24, 2013 /
 
Amit írtál, az egyértelmű. A C program fordításakor kapsz egy másik programot, azt kell értelmezned és átírni, a saját programodhoz illeszteni.
Szerintem egyszerűbb megtanulni a C-t.
(#) Llajti válasza Panhard hozzászólására (») Júl 25, 2013 /
 
A kollégák eggyel továbbgondolták már a választ
Asm-be közvetlenül c-t nem szúrhatsz be, csak egy asm-re lefordított c kódot, de az meg ugye a c környezet beállításait is használja. Szóval, ha nem akarsz c-t tanulni, akkor kénytelen leszel a 4 bájtos változókat te magad kezelni (viszont erre biztos vannak a neten példák).
(#) nedudgi válasza Panhard hozzászólására (») Júl 25, 2013 /
 
Próbaképpen annyit megtehetsz, hogy a C program Main részébe, (tehát az inicializálás után) beteszel egy ugrást az assembly programra, és onnan már meg tudod hívni a C szubrutint. Biztos módszer nincs, de így van némi esély a probléma megoldására.
(#) Panhard válasza Llajti hozzászólására (») Júl 25, 2013 /
 
Így már értem, hogy miért nem lehet beszúrni. Körülnézek neten megoldás után. Köszi mindenkinek.
Következő: »»   435 / 1210
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