Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   827 / 1320
(#) sanyika válasza icserny hozzászólására (») Nov 2, 2010 /
 
A megjelölt adatlap nem az ATM adatlapja kipróbáltam és sajnos bíztosan nem is kompatibilis azzal. Minden esetre köszönöm az infót
(#) cNobody válasza sanyika hozzászólására (») Nov 2, 2010 /
 
Helló!

Próbáld meg úgy feltölteni, hogy az összes bájtot teleírod az ASCII tábla 33-126 karaktereinek kódjával. A nulladik karakterbe a 33-as kódút karaktert rakd, a következőbe a 34-est, és így tovább, amíg el nem fogy az értelmes karakter az ASCII táblából.
Ezután ha lesz valami az utolsó nyolc karakterén a kijelzőnek, akkor a kijelzett karakterből ki bírod következtetni, hogy hanyadik bájton van.

http://www.asciitable.com/

De akár az is elképzelhető, hogy hibás kijelzőt kaptál. Ha nem sikerül életet lehelni a másik felébe, akkor érdemes visszavinni a boltba. Próba cseresznye.
(#) icserny válasza sanyika hozzászólására (») Nov 2, 2010 /
 
Idézet:
„A megjelölt adatlap nem az ATM adatlapja”
Hát persze, hogy nem az ATM adatlapja, hanem az ATM1601A adatlapjában megnevezett vezérlő IC adatlapja (S6A0069)
(#) watt válasza sanyika hozzászólására (») Nov 2, 2010 /
 
Azt írtuk, hogy több, sokkal több karaktert próbálj kivinni rá, mert lehet, hogy a 9. karakter címe nem a 8. után következik! Remélem érted(eddig úgy tűnik nem!)!
(#) vilmosd válasza sanyika hozzászólására (») Nov 2, 2010 /
 
Hali
Probald meg a masodik felet 0x40 cimtol. Elvileg mukodni kell. Ez azert van igy, mert a HW tervezesenel egyszerubb a 0x40 cimtol elhelyezni a karaktereket. Mellekelek egy CCS rutint LCD kezelesere. Ebben is 0x40 cimtol irja a masik fel kijelzot.
Udv Vili
(#) sanyika válasza vilmosd hozzászólására (») Nov 3, 2010 /
 
Köszi a mellékelt .c programocskát. Ezt beillesztve a C++ keretrendszerben levő lcd.c helyett, tökéletesen működik!
(#) watt válasza sanyika hozzászólására (») Nov 3, 2010 /
 
Ennek örülünk, de mi is erről beszéltünk neked, csak meg kellett volna próbálnod és működött volna a másikkal is. Persze lehet, hogy téged nem érdekelnek a miértek, csak működjön...
(#) delmur82 hozzászólása Nov 3, 2010 /
 
Sziasztok!

szeretnék egy kis segítséget kérni. Írtam egy kis próbaprogit PIC16F819 - re. Az A/D konverterét szeretném feléleszteni. Csak annyi lenne, hogy az átkonvertált értéket tegye ki a PORTB -re, ahol 8 led van.
Az ADRESH regiszter két alsó bitjét mintha jól kijelezné,a PORTB alsó két bitje szépen reagál az analóg jel változására. de az ADRESL regiszterrel nem működik. Villog össze vissza. Szerintetek mi lehet a hiba?

  1. LIST P=16F819
  2.  #INCLUDE "P16F819.INC"
  3.  __CONFIG _XT_OSC&_CP_OFF&_WDT_OFF &_BODEN_OFF &_PWRTE_OFF & _LVP_OFF
  4.  
  5.  
  6.  
  7.                 ORG             0X0000
  8.                 GOTO    START
  9.  
  10.         CBLOCK  0X20
  11.                         T1
  12.                         T2
  13.         ENDC
  14.  
  15.  
  16. START  
  17.                
  18.                 MOVLW           b'11111111'                     ; Mindegyik bit bemenet
  19.                 BANKSEL         TRISA
  20.                 MOVWF           TRISA
  21.        
  22.                 BANKSEL         TRISB
  23.                 CLRF            TRISB
  24.                
  25.                 BANKSEL         PIE1                            ; Letiltjuk A/D interruptot
  26.                 BCF                     PIE1,ADIE
  27.  
  28.                 BANKSEL         ADCON0                         
  29.                 MOVLW           b'00010001'                     ; 1/2 Fosc, Analóg bemenet =  AN2, A/D konverzió még áll, A/D modul működik
  30.                 MOVWF           ADCON0
  31.  
  32.                
  33.                 BANKSEL         ADCON1
  34.                 MOVLW           b'10000000'                     ; Right justified, konverzió előosztó nincs kettőzve, AN0, AN1, AN2, AN3, AN4 analóg bemenetek
  35.                 MOVWF           ADCON1
  36.  
  37. VISSZA
  38.                 CALL            ADC
  39.                 GOTO            VISSZA
  40.                        
  41.  
  42.  
  43. ADC            
  44.                 CALL            DELAY
  45.                 BANKSEL         ADCON0
  46.                 BSF                     ADCON0,GO
  47. ADCLOOP
  48.                 BTFSC           ADCON0,GO
  49.                 GOTO            ADCLOOP
  50.                 BCF                     PIR1,ADIF
  51.                
  52.                 BANKSEL         ADRESH                          ; ADRESL is
  53.                 MOVFW           ADRESH                          ; ADRESL is
  54.                 MOVWF           PORTB  
  55.                
  56.                 RETURN
  57.  
  58.        
  59. DELAY:   MOVLW    d'100'
  60.          MOVWF    T1
  61. DEL:     MOVLW    d'255'
  62.          MOVWF    T2
  63. DEL1:    NOP
  64.          NOP
  65.          NOP
  66.          NOP
  67.          NOP
  68.          NOP
  69.          NOP
  70.          NOP
  71.          DECFSZ   T2,f
  72.          GOTO     DEL1
  73.          DECFSZ   T1,f
  74.          GOTO     DEL
  75.          RETURN
  76.  
  77.                
  78.                 END
(#) Hp41C válasza delmur82 hozzászólására (») Nov 3, 2010 /
 
Szia!

Az 55. sor elé egy
banksel PORTB
kellene, mivel az ADRESL a Bank1 -ben van...
(#) delmur82 hozzászólása Nov 3, 2010 /
 
Nos!

A következőt tettem: az init részben átállítottam a programot LEFT JUSTIFIED - re. Most az ADRESH szintén működik. Mind a nyolc bit szépen reagál az analóg jel változásra, igaz az utolsó 3 bit kicsit ingatag. Állandó jelnél is villognak kicsit. Ezt betudom a szűretlen tápnak. Viszont ha az ADRESH - t átírom ADRESL - re, hogy azt jelezzék ki a ledek, szintén nem ok a dolog. Az SDRESL értékét miért nem tudom megfelelően kijelezni?
(#) delmur82 válasza Hp41C hozzászólására (») Nov 3, 2010 /
 
Szia!

Köszi, pótoltam. Annyiban változott a helyzet, hogy a PORTB (ADRESL) megfelelő két bitje villog viszont továbbra is szabálytalanul. Ja még annyi hogy a kristály 4 Mhz - es.
(#) bbalazs_ válasza delmur82 hozzászólására (») Nov 3, 2010 /
 
Probalj mondjuk 16 merest egymas utan osszeadni es leshiftelni 4 bittel (atlagolas). Igy nyugodtabb lesz?
(#) icserny válasza delmur82 hozzászólására (») Nov 4, 2010 /
 
Az ADCON0-ba írt beállításod nem megfelelő ehhez a frekvenciához! Fosc = 4 MHz esetén TAD = Fosc/8 választás ajánlott az adatlap szerint. Például így:
  1. MOVLW      b'01010001'                        ; 1/2 Fosc, Analóg bemenet =  AN2, A/D konverzió még áll, A/D modul működik
  2.                 MOVWF      ADCON0
(#) delmur82 válasza icserny hozzászólására (») Nov 4, 2010 /
 
Köszi Át fogom állítani.

Jelenleg ott tart a dolog, hogy Működik mind az ADRESL és ADRESH kijelzése a PORTB - re kötött ledekkel viszont az ADRESL utolsó 4-5 bitje igen ugrál. Megpróbáltam írni egy átlagolásos rutint az előző programhoz de még nem tudom kipróbálni. Megnéznétek hogy jó -e? Az alap program beállításain változtattam TAD=Fosc/8 -ra, Hp41C kolléga módosítását is beszúrtam. Íme a rutin:
  1. ADC          
  2.                 CALL            DELAY
  3.                 BANKSEL         ADCON0
  4.                 BSF             ADCON0,GO
  5. ADCLOOP
  6.                 BTFSC           ADCON0,GO
  7.                 GOTO            ADCLOOP
  8.                 BCF             PIR1,ADIF       ; Az értékek ADRESL és ADRESH - ban vannak
  9.                
  10.                
  11.  
  12. ATLAGOLAS
  13.  
  14.                 DECFSZ          OSSZEG_SZAML,f
  15.                 GOTO            OSSZEG_L
  16.                 GOTO            OSZTAS
  17.                                
  18. OSSZEG_L
  19.                 BANKSEL         ADRESL
  20.                 MOVFW           ADRESL
  21.                 ADDWF           SUML,F
  22.  
  23.                 BANKSEL         STATUS
  24.                 BTFSS           STATUS,C
  25.                 GOTO            OSSZEG_H
  26.                
  27.                 MOVLW           D'1'
  28.                 ADDWF           SZUMH,F
  29.  
  30. OSSZEG_H
  31.                 BANKSEL         ADRESH
  32.                 MOVFW           ADRESH
  33.                 ADDWF           SUMH,F          ; Az összeg SUMH és SUML - ben van
  34.                
  35.                 GOTO            ADC
  36.        
  37. OSZTAS
  38.                 DECFSZ          OSZTAS_SZAML,F
  39.                 GOTO            HANYADOS_H
  40.                 GOTO            MUTAT
  41.  
  42. HANYADOS_H
  43.                 RRF             SUMH,F
  44.                 BCF             SUMH,7
  45.                 BANKSEL         STATUS
  46.                 BTFSS           STATUS,C
  47.                 GOTO            CARRY0         
  48.                 GOTO            CARRY1
  49.  
  50.  
  51. HANYADOS_L
  52. CARRY0
  53.                 RRF             SUML,F
  54.                 BCF             SUML,7
  55. CARRY1
  56.                 RRF             SUML,F
  57.                 BSF             SUML,7          ; Az átlag SUML és SUMH - ban van
  58.  
  59.                 MOVLW           D'17'
  60.                 MOVWF           OSSZEG_SZAML
  61.                 MOVLW           D'5'
  62.                 MOVWF           OSZTAS_SZAML


Esetleg ha lenne valami rövidebb rutin az is érdekelne
(#) Moderátor hozzászólása delmur82 hozzászólására (») Nov 4, 2010
 
Légy szíves, és ezt a kódot, meg a jövőben a hasonló hosszúakat fájlba tedd és úgy csatold a hozzászóláshoz!
Köszönöm!
(#) delmur82 hozzászólása Nov 4, 2010 /
 
Köszi Át fogom állítani.

Jelenleg ott tart a dolog, hogy Működik mind az ADRESL és ADRESH kijelzése a PORTB - re kötött ledekkel viszont az ADRESL utolsó 4-5 bitje igen ugrál. Megpróbáltam írni egy átlagolásos rutint az előző programhoz de még nem tudom kipróbálni. Megnéznétek hogy jó -e? Az alap program beállításain változtattam TAD=Fosc/8 -ra, Hp41C kolléga módosítását is beszúrtam. Íme a rutin:

831124 törlendő

proba.txt
    
(#) watt válasza delmur82 hozzászólására (») Nov 4, 2010 /
 
A 10bites pontosságú +-1bites mérési bizonytalanságú méréshez komoly áramköri kialakítás kell, főleg ha gyors mérésre van szükség. Lassú mérés esetén könnyebb, de nem könnyű. Analog test, pontos referencia, megfelelő áramköri kialakiítás a bemeneteken(illesztés, szűrés). Ez túlmutat a PIC kérdéseken, ez méréstechnológiai áramkörtervezés egy A/D bemenetre...
(#) spepe hozzászólása Nov 4, 2010 /
 
Sziasztok!

Szerintetek az miért lehet, hogy Microchip USB CDC-nél ha az ADCON1-be két bemenetet is analógra váltok akkor nem megy az USB de ha csak a 0. van bekapcsolva akkor meg gond nélkül fut?

A másik furcsaság még, hogy annak ellenére, hogy csak az 0. bemenet analóg az ADC mégis tud mérni az 1. bemeneten is.
(#) delmur82 hozzászólása Nov 4, 2010 /
 
Sziasztok!

Nos lassan összeállt a program. Kijavítottam a hibákat és annyit el tudtam érni. hogy az alsó négy biten kívül mindegyik érték nyugszik. Wattnak teljesen igaza van. Ennél pontosabbat a kis szűretlen próbapanelommal nem fogok elérni, úgy hogy az AN2 bemeneten csak egy ellenállásból és egy LDR - ből álló feszültségosztó van.
Esetleg ha valakinek van türelme átnézni a programot javaslatokat szivesen veszek amivel még jobban működne. Sajnos az átlagolásos rutin a programon belül nem működik jól. Nem jövök rá miért. Ebben kéne egy kis segítség.
(#) icserny válasza spepe hozzászólására (») Nov 4, 2010 /
 
Nem lehet akadály két analóg csatorna, hiszen használtam már kettőt a PICCOLO projektben (Mintaprogram az OpenADC() függvény használatára).

Arra tudok gondolni, hogy esetleg a programban (pontosabban a hardver profilban) bekapcsoltad az USB-ről jövő +5V figyelését, a hozzátartozó bemenetre meg kisebb feszültséget adtál, s erre automatikusan lekapcsolta magát az USB-ről a PIC.

Ezekre gondolok:
  1. #define USE_SELF_POWER_SENSE_IO
  2. #define USE_USB_BUS_SENSE_IO


Nálam mindkettő kommentben van, mert kizárólag az USB-ről kapja a PIC a tápfeszültséget.
(#) spepe válasza icserny hozzászólására (») Nov 4, 2010 /
 
Én is kiszedtem őket az usbcfg.h fájlban az összes ki van kommentezve de azért köszi a tippet.

Így van egyébként beállítva:

ADCON0 = 0b00000001;
ADCON1 = 0b00001110;
ADCON2 = 0b10110101;

TRISA = 0xCF;
(#) icserny válasza spepe hozzászólására (») Nov 4, 2010 /
 
Minden azért ne legyen kikommentelve, mert az alábbi definíciókra például szükség van:
  1. #define self_power          1
  2. #define USB_BUS_SENSE       1

Bővebben lásd 72-95. sorok közötti részt.

Megjegyzem én valami régebbi (talán 2.4-es) verziójú USB keretrendszert használok.
(#) Attila86 hozzászólása Nov 4, 2010 /
 
Mi az az "analóg front end periféria"?
(#) potyo válasza Attila86 hozzászólására (») Nov 4, 2010 /
 
Hol találtad?
(#) Attila86 válasza potyo hozzászólására (») Nov 4, 2010 /
 
Például itt:
Bővebben: Link
(#) watt válasza Attila86 hozzászólására (») Nov 4, 2010 /
 
Azt nem tudom, mi az a front-end periféria, de az biztos, hogy nem semmi ez az új PIC!
(#) vicsys válasza Attila86 hozzászólására (») Nov 4, 2010 /
 
Gondolom, könnyebb csatlakoztatni a nagyáramú részek(hez/felé) amin keresztül mér. Azt, hogy mi módon, nem tudom...
(#) spepe válasza icserny hozzászólására (») Nov 4, 2010 /
 
Mármint, hogy az összes fajta PIC típus alatt van kikommentezve.

Nem tudom, hogy jól gondolom-e de szerintem nekem még annál is régebbi lehet. Valami 1.3-as verzió elvileg: http://ww1.microchip.com/downloads/en/DeviceDoc/MCHPFSUSB_Setup_v1.3.exe

Nem is találkoztam még ilyen sorokkal az az igazság.
(#) Attila86 válasza potyo hozzászólására (») Nov 4, 2010 /
 
Itt az A/D-k közt is van analóg front end:
Bővebben: Link
(#) cua válasza Attila86 hozzászólására (») Nov 4, 2010 /
 
tokon belüli áramkör, ami csatlakozik a főáramkörhöz, jellemzően valami standard (i2c, spi..stb) bus-on keresztül.
itt gondolom van benne egy A/D (tokon belül), ami csatlakozik a PIC-hez.
Következő: »»   827 / 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