Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   793 / 1320
(#) icserny válasza valaki2 hozzászólására (») Aug 27, 2010 /
 
T2CON-ba rossz értéket írtál, a T2ON bit 0-ban maradt...
(#) Hp41C válasza geri12 hozzászólására (») Aug 27, 2010 /
 
Szia!

A már sokszor ajánlott oldal a számok átalakításához...
(#) robotech hozzászólása Aug 27, 2010 /
 
Üdv!

Foglalkozott valaki már behatóbban a capacitive sensing modullal a PICekben?

Valami nem teljesen kerek hardware oldalról, ezért felvázolnám:
Az AN1101,és AN1102 adatlapokban a szerző egy olyan megoldásnak a hardveres körülményeit említi,amikor is olyan PIC-et használ, amelyben a CSM (capacitive sensing module) nincs implementálva, így a komparátor,és timer ,ill. egy külső rezgőkör (ha jól látom) segítségével érzékeli a kapacitásváltozást.

A PIC16F727-be (többek között) már implementálva van a CSM, amelynek a használatára egy példaprogram is van C ben: AN1171, amely csak a szoftveres részt tartalmazza, a hardver kiépítéséről nincs szó.
A kérdésem az lenne, hogy vajon a CSM-el rendelkező PIC-ek esetén csak elegendő-e a dedikált lábakra kötni az érintkező felületeket, vagy itt is a T1CK lábat, és egyéb ellenállásokat satöbbiket szükséges-e használni?
Mellékelem a 1101At (7. oldal érdekes), és a 1171-et.
(#) valaki2 válasza icserny hozzászólására (») Aug 27, 2010 /
 
T2CON = 0x02 -> 01 Prescaler is 4

T2-t 24-es sorban kapcsolom be, mielőtt belépnék a while-ba ( TMR2ON = 1; ). Amúgy szimulátoron a TMR2 érétke megfelelően változik. A gondom továbbra is az, hogy mikor megszakítás van, a jelző bit beállítódik, de a hozzá tartozó rutin nem fut le..
(#) icserny válasza valaki2 hozzászólására (») Aug 27, 2010 /
 
Idézet:
„T2-t 24-es sorban kapcsolom be”
OK, ezt nem vettem észre! :hide:
  1. InitPic();
Ezt nem tudom, mit csinál, emiatt nem fordult le. Ha ezt írom helyette, akkor lefordul:
  1. TRISD=0;
  2.                 PORTD=0x55;

Nálam a szimulátorban működik az interrupt is, de ahogy elnézem, a kimenetet túl hamar visszakapcsolja a főprogram, mivel a while ciklus sokkal gyorsabb, mint ahogy Timer2 túlcsordul (PR2 alapértelmezetten FF).
(#) icserny válasza robotech hozzászólására (») Aug 27, 2010 /
 
Idézet:
„AN1171 ... csak a szoftveres részt tartalmazza, a hardver kiépítéséről nincs szó.”
Szerintem le van írva benne, hogy a CSM külső oszcillátor nélkül működik, csupán az érzékelő PAD-ekhez kell kötni a CPS0...CPS16 bemeneteket. Az A Függelék vázlatrajzából úgy tűnik, hogy minden más belül kapcsolódik össze (a frekvenciaméréshez), amit a szoftver konfigurál.
(#) valaki2 válasza icserny hozzászólására (») Aug 27, 2010 /
 
az Initpic() -l a pic-et inicializálom fel. Mellékeltem a progit. Eddig az InitPic külön .h be volt, de most áttettem a "main"-be.

Megszakításkor a counter- nek 1-re kéne váltani. A watch- ablakban nézve, a counter nálam nem lesz, egy, lépésben futtatva továbbra sem jutok el a megszakítás rutinba..

Lépésenként futtatva, init t2 -nél a TMR2IF = 0; után PIR1 = 0x02. Vagyis:
TMR2IF: Timer2 to PR2 Interrupt Flag bit
1 = A Timer2 to PR2 match occurred (must be cleared in software)

Ezt nem értem miért... És ugye ekkor még a számláló nincs is bekapcsolva, tehát még túlcsordulni sem tud..

pwm.c
    
(#) icserny válasza valaki2 hozzászólására (») Aug 27, 2010 /
 
A mellékelt kódban (rám hallgatva?) most túl korán engedélyezed Timer2-t, még mielőtt az inicializálásokon végigmennél. Ha visszaírom T2CON=2-re, akkor később, 111 utasításciklussal jut el az interrupt kiszolgáló elárásba.

Mindesetre más verziókat használunk, így a konfigurációs beállítások nálam kiakasztják a fordítót. Az include-ok becsatolása sem stimmel, így próbáld:
  1. #include <htc.h>
  2. //#include <pic16f887.h> <--- ez nem kell!
  3. #include <stdio.h>
  4. #include <string.h>


Ha jól látom, akkor nálam HI-TECH C Compiler for PIC10/12/16 MCUs V9.71a van fenn.
(#) geri12 válasza Hp41C hozzászólására (») Aug 27, 2010 /
 
Még nem ismertem az oldat. Most nézegetem. Sokat segít így elsőre. Köszi!
(#) El_Pinyo válasza icserny hozzászólására (») Aug 27, 2010 /
 
Nálam a 9.70- es PRO verzió a pwm.c fájlt lefordítja miután az include- okon változtattam, az MPLAB SIM szerint pedig jó a megszakítás. Egyébként elég megtévesztő, hogy a korábbi hozzászólásban 16f877, a forrásban pedig 16f887 van használva. Én a 887-re fordítottam le.
(#) icserny válasza El_Pinyo hozzászólására (») Aug 27, 2010 /
 
Idézet:
„Egyébként elég megtévesztő, hogy a korábbi hozzászólásban 16f877, a forrásban pedig 16f887 van használva.”
Valóban megtévesztő, mert én a 16f877-re fordítottam (ez lehet a magyarázata a konfigurációs bitek körüli mizériának). Mindenesetre a szimulációhoz ez nem kellett, így nálam is működött az interrupt.
(#) icserny hozzászólása Aug 27, 2010 / 7
 
Ha valakit érdekel: az Embedded Adventures honlapján van némi tutorial, és a letöltések oldalon egy jól összeszedett C nyelvű támogatói programkönyvtár.

A támogatott eszközök:
FM Radio: AR1000
Temperature sensors: DS1631, TMP75, LM75
Real Time Clock (RTC): DS1307, M41T81S
LED display (4 digit): HC4
Digital compass: HMC6352
IEEE 802.15.4 transceivers: MRF24J40
Propriatry transceivers: NRF2401A
LCD display
Pressure sensors: MS5540
Humidity sensors: SHT15, SHT11
Audio player: SOMO-14D

Bootloader az alábbi vezérlőkhöz van (tehát feltételezhető, hogy a támogatói programkönyvtár ezeken fut - ha a hardver erőforrások elégségesek): 16f876a, 16f877a, 16f88, 18f14k50, 18f2455, 18f252, 18f25k20, 18f2620, 18f26k20, 18f452, 18f4520, 18f4550, 18f67j50, 18f87j50

Van benne saját USB CDC és USB HID támogatás is.

Az egyetlen szépséghiba, hogy ez valószínűleg Boost C-hez készült, de ettől függetlenül sokat lehet belőle okosodni!
(#) El_Pinyo válasza icserny hozzászólására (») Aug 27, 2010 /
 
Igen, nálam is előjöttek a konfigurációs bitek helytelenségéből eredő hibák, aztán miután jobban átnéztem a kódot észrevettem, hogy 887- re van írva a program. Módosítva a kontroller típusát már lefordult.
(#) valaki2 hozzászólása Aug 28, 2010 /
 
Köszönöm a hozászolásokat!
Valóban elírtam a processzor típusát, elnézést érte. A megszakítás itt is megy, az időviszonyokba gabalyodtam bele.
(#) Toco25 hozzászólása Aug 28, 2010 /
 
Sziasztok!

Találtam egy leírást a neten, hogy hogyan lehet viszonylag egyszerűen rávenni egy PIC-ket arra, hogy valamilyen képet megjelenítsen egy tv képernyőn:

Bővebben: PIC B&W video

Sok minden van ezen az oldalon, de én kapásból ezzel akartam kezdeni.

Van némi különbség nálam, mert nekem 16F877A-m van és 4Mhz-es órajelem és persze a c regisztert akarom használni, de szerintem ez nem lehetne probléma. Írtam egy kódot, hogy működjön a dolog, de semmi nem történik, hardver része szerintem jó, a programot megnézhetnétek, hátha valamit nem jól értek, előre is köszönöm:

  1. LIST P=16F877A
  2.  #INCLUDE "P16F877A.INC"
  3.  __CONFIG _HS_OSC&_CP_OFF&_WDT_OFF&_LVP_OFF
  4.  
  5.  
  6. #define VIDEO_PORT PORTC
  7.  
  8.        
  9.         CBLOCK  0x20                    ;A 0x20 egy szabad memória rész kezdő címe
  10.  
  11.         COLOR_SYNC
  12.         COLOR_BLACK
  13.         COLOR_GRAY
  14.         COLOR_WHITE
  15.         ENDC
  16.  
  17.         ORG     0
  18.  
  19. START
  20.         BSF     STATUS,RP0                     
  21.  
  22.  
  23.         CLRF     TRISC
  24.        
  25.                
  26.         BCF     STATUS,RP0                     
  27.  
  28.  
  29.         MOVLW   B'00000000'
  30.         MOVWF   COLOR_SYNC
  31.  
  32.         MOVLW   B'00000100'
  33.         MOVWF   COLOR_BLACK
  34.  
  35.         MOVLW   B'00001000'
  36.         MOVWF   COLOR_GRAY
  37.  
  38.         MOVLW   B'00001100'
  39.         MOVWF   COLOR_WHITE
  40.                
  41.  
  42.  
  43.  
  44.  
  45. UG1
  46.  
  47.         movlw COLOR_SYNC       
  48.         movwf VIDEO_PORT        
  49.    
  50.         NOP
  51.         NOP
  52.  
  53.         movlw COLOR_BLACK      
  54.         movwf VIDEO_PORT        
  55.         NOP
  56.         NOP
  57.         NOP
  58.         NOP
  59.         NOP
  60.         NOP
  61.  
  62.  
  63.         movlw COLOR_GRAY                
  64.         movwf VIDEO_PORT
  65.  
  66.         NOP
  67.         NOP
  68.         NOP
  69.         NOP
  70.         NOP
  71.         NOP
  72.         NOP
  73.         NOP
  74.         NOP
  75.         NOP
  76.         NOP
  77.         NOP
  78.         NOP
  79.         NOP
  80.         NOP
  81.         NOP
  82.         NOP
  83.         NOP
  84.         NOP
  85.         NOP
  86.         NOP
  87.         NOP
  88.         NOP
  89.         NOP
  90.         NOP
  91.         NOP
  92.         NOP
  93.         NOP
  94.         NOP
  95.         NOP
  96.         NOP
  97.         NOP
  98.         NOP
  99.         NOP
  100.         NOP
  101.         NOP
  102.         NOP
  103.         NOP
  104.         NOP
  105.         NOP
  106.         NOP
  107.         NOP
  108.         NOP
  109.         NOP
  110.         NOP
  111.         NOP
  112.         NOP
  113.         NOP
  114.         NOP
  115.  
  116.  
  117.         GOTO UG1
  118.  
  119.  
  120.         END                                             ;Teljes program végét jelentő END
(#) Hp41C válasza Toco25 hozzászólására (») Aug 28, 2010 /
 
Szia!

A hiba a 48., 54., 64. sorban van. Itt a movlw a megadott címet teszi a W regiszterbe, nem a címen található tartalmat. A címek 0x20 .. 0x23 közé esnek, tehát nem azokat a kimeneteket vezérlik, amin várod a jelet. Ezek helyett az utasítások helyett a movf cím,w -t kellene használni.:
48: movf COLOR_SYNC,w
54: movf COLOR_BLACK,w
64: movf COLOR_GRAY,w
(#) Toco25 válasza Hp41C hozzászólására (») Aug 28, 2010 /
 
Köszi szépen!

Átírtam, de még mindig nem az igazi, de már van valami villódzás a kép szélén , én arra gondolok, hogy a micro secundumot nem jól értelmezem.

Köszi még egyszer!
(#) szilva válasza Toco25 hozzászólására (») Aug 28, 2010 /
 
Ez a program nem csinál függőleges szinkront a TV-nek, ezért ha a sorokat meg is fogja, a kép futni fog, nem áll meg. PAL TV esetén legalább a 312. sor után kellene képszinkronjelet előállítani, ezzel már talán álló kép is kialakulhatna, bár a teljesen korrekt szinkronimpulzus-sorozat ott van a linkelt oldalon egy ábrával.
(#) icserny hozzászólása Aug 28, 2010 /
 
A www.cpustick.com honlapról letölthető a StickOS, amelyet többféle mikrovezérlőre és fejlesztői hardverre implementáltak. A programcsomag egyik érdekessége, hogy beépített BASIC fordítót és értelmezőt tartalmaz (a fordító valami közbenső kódra fordít).

A vicces az, hogy olyan processzron/hardveren is fut, amire elvileg nincs is implementálva: ilyen pl. a PIC32MX795F512L (PIC32 Ethernet Starter Kit).

Az pedig még viccesebb, hogy a PIC32 USB kimenete a PC oldaláról az FTDI virtuális soros port driverrel működik!!! Hyperterminállal szépen kommunikál. A kapcsolódás után egy Enter-re bejön az üdvözlés és a prompt.

Egyelőre gőzöm nincs, hogy hogy működik az egész, de egy egyszerű LED villogtató programot a dokumentációt követve sikerült működésbe hozni.

A PIC32 starter kite-eken RD0, RD1 és RD2 a három LED, ezek közül RD0-t fogjuk 1 Hz frekvenciával villogtatni:
  1. dim square as pin rd0 for digital output
  2. while 1 do
  3.   let square = !square
  4.   sleep 500 ms
  5. endwhile


A program beírása után run paranccsal indul, CTRL-C-vel pedig megállítható a futás. Help paranccsal segítség kérhető. Ha jól értem a leírást, a beírt BASIC program alapból RAM-ban fut, a save paranccsal írható flash-be.

A honlapon már közzétették az újabb verziót, ebben több perifériakönyvtár van, s talán az FTDI drivert is mellőzték. Az új verziót még nem próbáltam.

stickos.png
    
(#) lidi válasza icserny hozzászólására (») Aug 28, 2010 /
 
Tehát a PIC azt mondja magárol a winnek, hogy ő egy ftdi ? Ugyes.
(#) Toco25 válasza szilva hozzászólására (») Aug 28, 2010 /
 
Sziasztok!

Rájöttem a fő problémára, nem a szoftverben és a hardverben volt a hiba, hanem a tv kb. 10 másodperc után kapcsolja az állandó képet és ezt nem vártam meg eddig. Egyébként nekiállok a vízszintes szinkronjel probléma megoldásához. Arra már rájöttem, hogy a 4Mhz nagyon kevés lesz, azt is növelem majd, persze a jelenlegi PIC-emnél ez nem probléma csak cserélnem kell a kristályt.

Ha bárkit érdekel ez a dolog (egyszerű videojel PIC-el), akkor amit eddig megtudtam, azt már át tudom adni

Nemsoká sorra veszem a színes verziót is, aztán lehet, hogy én is írok egy egyszerű játékot, hanggal képpel vezérlővel és lehet, hogy ehhez már elkészítem az első nyáklemezemet is.

Kösz a választ mindenkinek!

Üdv!
(#) danci1995 hozzászólása Aug 29, 2010 /
 
Sziasztok!

Megépítettem a mellékelt kapcsolást. Ki még nem próbáltam illetve a tápot még nem kötöttem a programozóhoz. A táppal viszont van egy kis gondom. Mindent jól kötöttem be, rámértem a 2 IC-re. A 13,2V helyett én 12,59V -ot méretem az 5V helyett pedig 4,76-ot. Tápnak egy AC/DC 12V os tápot használtam. Tettem fel erről is képet. Ennyi eltérés normális ?? Vagy talán gyenge a táp??

Előre is köszi!!
(#) watt válasza danci1995 hozzászólására (») Aug 29, 2010 /
 
A tápodra az van írva, hogy 12V. Mérted mennyi jön ki belőle?
(#) danci1995 válasza watt hozzászólására (») Aug 29, 2010 /
 
Terheletlenül, ha nem kötök rá semmit 19,10V-ot mérek.
(#) bbalazs_ válasza danci1995 hozzászólására (») Aug 29, 2010 /
 
A dugasztap 12V-ot ir magara. Neked kell 13.2V.
Ez a majdnem feloldhatatlan ellentmondas csak nekem tunik fel?

A PIC programozasi resze elegge kenyes a programozofeszultsegre (aram alig kell, de a feszultseg fontos).
A pic maga eljar szerintem a 4.7-bol, de magasabb frekin bizonytalankodhat. Pontos specifikacio az adatlapjaban.
(#) watt válasza danci1995 hozzászólására (») Aug 29, 2010 /
 
És ha rákötöd a tápokat?
Műszered biztosan jól mér? (Ellenőrizd 3 új elemmel! 4,5V!))
(#) danci1995 válasza watt hozzászólására (») Aug 29, 2010 /
 
Akkor ha bedugom a tápba 17,80V-ot mérek.
(#) tardis hozzászólása Aug 29, 2010 /
 
Hétvégén megszivatott a Pickit3. Télen foglalkoztam vele utoljára, akkor ment. Most telepítettem az MPLAB 8.53-at. Ez hozott magával egy "PK3FW_012617.jam" firmware-t. Ezzel minden OK, csak nem lehet debugolni. Rosszul süti be debug módban a procit.
Visszatettem a 8.4-es MPLAB-et, ez tartalmaz egy 'PK3FW_012510.jam' -et. Na ezzel már jól megy.

A procik, amivel kipróbáltam:
16F818
16F819
12F627
12F509
12F877

Gondoltam szólok, hátha valaki ugyanezzel szív.
Egyelőre ennyi. Még kipróbálom a többi FW-t is.
(#) danci1995 válasza watt hozzászólására (») Aug 29, 2010 /
 
Hello Watt!

Szerinted úgy megkapnám a megfelelő feszültségeket ha mondjuk 14-24V os DC-t adnék neki?
(#) watt válasza danci1995 hozzászólására (») Aug 29, 2010 /
 
Az elég. Mi van a műszered ellenőrzésével?
Következő: »»   793 / 1320
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