Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   1102 / 1320
(#) Hp41C válasza _vl_ hozzászólására (») Nov 6, 2012 /
 
Most már én nem tudom, hogy jó helyre írtam-e a hozzászólásomat? Ez nem a PIC - Miértek, hogyanok téma? Egy ARM cpu nem egy DIP8, DIP28 tokban kapható. Persze azoknak is van előnyük és hátrányuk...

Watt: Ott a honlapon van egy Where to buy gomb, arról a lapról közvetlenül lehet rendeni. Nem próbáltam még.
A hozzászólás módosítva: Nov 6, 2012
(#) vilmosd válasza _vl_ hozzászólására (») Nov 6, 2012 /
 
Tudok olcsobbat. Veszel 4 $-os PIC24HJxxx IC-t es megirod ra a coproci FW-t. Mivelhogy ok is ezt csinaltak.
(#) potyo válasza vilmosd hozzászólására (») Nov 6, 2012 /
 
Attól függ, hány kell és milyen sürgős. Ha 1-2 darab kell és/vagy kevés idő van rá, akkor venni kell. Ha viszont sok kell vagy van rá sok idő, akkor érdemes nekiállni fejleszteni.

Juteszembe, olyan kóddal/projekttel nem találkozott valaki, hogy egy pl. 14 lábú kontroller, ami karakteres LCD-t hajt meg, önmaga elintézi az LCD inicializálását, és a fő kontroller számára I2C vagy SPI perifériaként kezelhető pl. egyszerűen memóriaként? Amiket látok ebayen ilyen soros-párhuzamos átalakítókat LCD-hez, azok tipikusan sima portbővítő ic-k, ahol továbbra is a kontrollernek kell foglalkoznia az LCD időzítéseivel, nem tudja csak egyszerűen kitolni a buszon az adatot, aztán a többit lerendezi az lcd modul. Ráadásul egyes esetekben még drágábbak is, mint maga az LCD...

Itt van az oldalon Topi kapcsolása az aszinkron soros portosról, valami ilyesmire gondolok csak I2C vagy SPI buszra. Bár gondolom Topi is azért csinálta ezt, mert nem talált készen.
A hozzászólás módosítva: Nov 6, 2012
(#) vilmosd válasza potyo hozzászólására (») Nov 6, 2012 /
 
Egy 16F684-be belefer talan a LCD meghajtas, es a I2C slave. Persze ezt is meg kell irni, de csak egyszer. Olcsobb mint keszen megvenni. De valahol lattam hasonlot, de TTL UART-on. Itt is van egy de nem PIC hanem 'LS176 segitsegevel. Mondjuk ez nem az amit Te keresel. En csinaltam ilyen UART-os kijelzot valamikor 16F690 volt az agya. Ez TTL szinten soros vonalon kommunikalt a masik procival, es 3 gombot is kezelt.
A hozzászólás módosítva: Nov 6, 2012
(#) _vl_ válasza potyo hozzászólására (») Nov 6, 2012 /
 
Én csináltam ilyet, egyelőre dugdosós panelen van/volt csak összerakva (azaz csak kb. 95%-ban tekinthető késznek), mivel amire akartam használni, az a projekt egyelőre holdba került. Nem 14-lábú, hanem 16f887 (ilyen volt itthon), és nem csak a kijelzőt hajtja meg, hanem tud PWM-mel kontrasztot is állítani, a Cvref kimenetével meg egy MCP6001/2-vel háttérvilágítást szabályozni, ill. gombok is köthetőek rá.
A koncepció az volt, hogy az előlapra került őkelme, és csak a tápok (külön egy 5V neki, meg egy stabilizálatlan a sok mA-nyi háttérvilágításnak), és az I2C megy bele, minden mást ő megold.
Kevés gombnál végülis egy 28-lábú is bőven elég, a program talán 2KW körül lehet, szóval kisebb modellbe is bele kéne férnie, viszont nagy kijelzőnél (nekem 4x20 kell) nem nagyon fér el kevés memóriában.
(#) kissi hozzászólása Nov 6, 2012 /
 
Sziasztok!

Én még nem ismertem, hátha másnak is hasznos:

Bővebben: Link

Steve
(#) potyo válasza _vl_ hozzászólására (») Nov 7, 2012 /
 
Én 1kw programmemóriát is elégnek saccolok hozzá. Esetleg a RAM lehet kevés, de végülis 4x20-as kijelző az 80 karakter, marad 48 bájt szabad memória, az szerintem elég lenne, mivel ennek semmi más dolga nem lenne. 16F1826 jónak is tűnik, van benne I2C és SPI is, van elég lába is. Na majd ha nagyon unatkozom, nekiállok
(#) Hp41C válasza potyo hozzászólására (») Nov 7, 2012 /
 
Szia!
Egyrészt a 16F1826 2kw program és 256 byte RAM memóriával rendelkezik, másrészt két lépcsőben lehet lábkompatibilis, azonos családba tartozó típusra cserélni: 16F1827 (4kw/384 byte RAM), 16F1847 8kw/1k ram. Továbbá a 16F1459 négy csatornán is fogadhatná az adatokat (SPI, I2C, UART, USB).
Másrészt az I2C slave megoldások nem egységesek (ld. AN734 appnote). Ez a dokumentum nem tartalmazzaí még az advanced midrange család tulajdonságait. A fenti típusok nyomkövetéséhez PICKit3 / ICD3 kellene, egy 16F88 (4kw/384 byte) egy PICKit2 -vel is működne.
(#) icserny hozzászólása Nov 8, 2012 /
 
Gondot okoz, hogy az MPLAB nem támogatja a PICkit2 készüléket az újabb PIC32 mikrovezérlők programozásához és nyomkövetéséhez. A programozáson még esetleg segíthet a DevFile Editor, de a nyomkövetésen nem.

Ezen a honlapon azonban egy alternatív lehetőséget hirdetnek, miszerint az ejtagproxy programon keresztül a GNU GDB segítségével végezhetünk nyomkövetést. A támogatott eszközök listáján a PICkit2 is szerepel. A mintapéldában egy ChipKit Max32 (PIC32MX795F512L) szerepel. Írják, hogy lassú a kommunikáció, de ha nincs más, ez is megteszi...
(#) watt válasza icserny hozzászólására (») Nov 8, 2012 /
 
Ez érdekes hír, köszi!
(#) lajos1969 hozzászólása Nov 10, 2012 /
 
Sziasztok!
Megépítettem ezt a kapcsolást http://www.andrewhazelden.com/blog/2010/11/digital-poi-spinning-per...splay/ csak egy olyan problémába ütköztem, hogy nincs 18f2685 kéznél csak 18f2550. Sajnos én nem tudok programot írni meg módosítani. Ez a két pic nagyon hasonló még a bekötése is ugyanaz, nem lehetne átírni a programot 2550-esre, Valaki meg tudná ezt nekem csinálni persze ha lehetséges. Köszönöm szépen.
A hozzászólás módosítva: Nov 10, 2012

SDC17053.JPG
    
(#) valaki2 hozzászólása Nov 11, 2012 /
 
Korábban már foglalkoztam az pic explorer 16 panellel. Most ismét elő vettem. Már egészen elfejeltettem, hogy is voltak a dolgok ezzel a panellel. A fórumban talált leírást, hogy lehet pic kit 2 vel programozni. A panelon levő 4550 –s picre rátöltöttem már a bootlodert. Az eredeti hex kóddal az LCD – n nem jelenik meg semmi. Majd rátöltöttem icserny által felötlött lcd4bit.hex file –t, ekkor a kijelzőn egy két betűt látszódót és az egyik led villogót.
Ezután megpróbálkoztam még egyszer a gyári kóddal, de semmi.
Van valakinek valami ötlete, mi lehet ez? Talán tönkre ment volna az LCD?
(#) icserny válasza valaki2 hozzászólására (») Nov 11, 2012 /
 
Idézet:
„Talán tönkre ment volna az LCD?”
Ez sem lehetetlen, mert nekem tönkrement. De akkor tök zavaros minta jelent meg a kijelzőn...
Csinálj alaposabb és szisztematikusabb teszteket!
(#) valaki2 válasza icserny hozzászólására (») Nov 11, 2012 /
 
annyit elfelejtettem még, hogy csak teli szegmenseket látok. Sajnos csak multiméterem van, ezzel megpróbálok valamit méricskélni. Oszcilloszkópom nincs.
Milyen jellegű tesztre gondoltál?
(#) watt válasza valaki2 hozzászólására (») Nov 11, 2012 /
 
A programokat eltoltad 0x1000 kezdőcímre? A bootloader konfigurációs beállításait veszed figyelembe az áramkör kapcsolásánál és az LCD időzítéseinél?
(#) Krisszes hozzászólása Nov 12, 2012 /
 
sziasztok,

hogyan tudnék usb-s kommunikációt összehozni a legegyszerűbben pic24fj128ga010-ra?

előre is köszönöm.
(#) icserny válasza Krisszes hozzászólására (») Nov 12, 2012 /
 
Milyen USB kommunikációt? Host/device, HID/CDC/egyéb?
Explorer16 kártyád van, vagy valami más?
(#) icserny válasza valaki2 hozzászólására (») Nov 12, 2012 /
 
Idézet:
„Sajnos csak multiméterem van”
Azzal ellenőrizd a kijelző kontrasztját vezérlő feszültséget!
(#) Hp41C hozzászólása Nov 12, 2012 /
 
Sziasztok!
Megnyitott a ChipCad Web Áruház.
(#) cassis hozzászólása Nov 12, 2012 /
 
SPI adatátvitelt csinálnék 18F26J11 en. Menne is a dolog, ha nem bonyolódtam volna bele a BF "buffer üres" jelzőbit vizsgálatába. A doksi szerint egyértelmű a dolog: ha SSPxSTAT=1, akkor SSPxBUF full. Még az adatlap példapogramja is ezt erősíti meg.
  1. OOP BTFSS SSP1STAT, BF ;Has data been received (transmit complete)?
  2. BRA LOOP ;No
  3. MOVF SSP1BUF, W ;WREG reg = contents of SSP1BUF
  4. MOVWF RXDATA ;Save in user RAM, if data is meaningful
  5. MOVF TXDATA, W ;W reg = contents of TXDATA
  6. MOVWF SSP1BUF ;New data to xmit

A nem írható BF bit reset utánn értéke fixen 1.
Eddig rendben, de nekem csak akkor működik az SPI, ha BF=0 ra értelmezem a Receive complete állapotot, egyébként végtelen BF ellenőrző ciklus fut. (most késleltő ciklusokakt tettem bele, míg a buffer kiürül....)
Tovább zavaró, hogy az PIC18F67j50 adatlapján SSPxSTAT regiszterben minden bit 0 értékű, pedig gondolom ugyanaz a modul szerepel mindkettőben.
Ja és igen, az Errata nem ír semmit erről.
A hozzászólás módosítva: Nov 12, 2012
(#) icserny válasza cassis hozzászólására (») Nov 12, 2012 / 1
 
Nálam így néz ki az adatküldés/fogadás. Egyes típusoknál (pl. 18f4550) kifejezetten ellenjavalt a BF bit vizsgálata. A 18f26j11-hez nég nem volt szerencsém, tehát nem tudm, hogy mennyire mérvadó az ajánlás erre a típusra.

A PIC18F4550 Errata szerint az átvitel végét jelző BF bitet nem szabad közvetlenül vizsgálni, ezért helyette a programmegszakítás jelzőbitet vizsgáljuk. Szintén az Errata ajánlja, hogy adatküldés előtt olvassuk ki az SSPBUF regisztert, ami egyúttal törli a BF bitet. Ha elmulasztjuk a BF bit törlését, akkor a következő beolvasott adat nem másolódik át az SSPBUF regiszterbe!

  1. uint8 spi_io( uint8 data) {
  2. uint8 tmp;  
  3.   PIR1bits.SSPIF = 0;                   // törli az interrupt jelzőbitet
  4.   SSPCON1bits.WCOL = 0;                 // törli az esetleges írás ütközés hibajelzőt
  5.   tmp = SSPBUF;                         // törli a BF jelzőbitet
  6.   SSPBUF = data;                        // kirakja a kimenő adatot az SSPBUF regiszterbe
  7.   while( !PIR1bits.SSPIF );             // megvárjuk a busz ciklus végét
  8.   return (SSPBUF);                      // a vett bájttal térünk vissza
  9. }
(#) cassis válasza icserny hozzászólására (») Nov 12, 2012 / 1
 
Lassan már nemcsak az adott típus Errata -ja lesz kötelező olvasmány, hanem az összes! Módosítottam a programot, kiválóan működik! Köszi! Nálam az SSPBUF regisztert nem kellet olvasni BF törléséhez. SSPBUF -t enélkül is tudom írni.
A dolog azért fura, mert arra gondoltam, hogy maga az MSSP modul már jól kidolgozott megoldás, amit csak átemelnek egyik típusból a másikba, és ebből adódóan új és váratlan hibák nem keletkeznek.
A hozzászólás módosítva: Nov 12, 2012
(#) Krisszes válasza icserny hozzászólására (») Nov 12, 2012 /
 
Az USB témát most már biztos, hogy körbe kell járom alaposabbal ...
30 I/O port állapotát szeretném változtatni gyakori rendszerességgel, és havi egy alkalommal pedig 6 bájt adatot szeretnék közölni a processzorral PC-ről.
Az áramkört én építem, jelenleg még dugaszolós verziónál tartok.
(#) watt válasza Krisszes hozzászólására (») Nov 13, 2012 /
 
Én nem bíznám rá az ilyen fleladatokat a PC-re és az USB-re. Ilyen hosszú távon nem megbízható. Szakad az USB időnként a Win dolgai miatt, még a HID-is, bár az nem annyira jellemző. Ez csak arra való, hogy rácsatlakozz, monitorozz, beállíts, minden mást a hardver kell, hogy végezzen egymás között...
(#) icserny válasza watt hozzászólására (») Nov 13, 2012 /
 
Meg lehetne próbálni közbeiktatni egy köztes "gépet", pl. a fillérekért kapható TP-link WR-703N routert openwrt oprendszerrel, az hátha stabilabb. A PC pedig etherneten vagy Wifin csatlakozhatna hozzá.
(#) icserny válasza Krisszes hozzászólására (») Nov 13, 2012 /
 
Idézet:
„Az áramkört én építem, jelenleg még dugaszolós verziónál tartok.”
Akkor hogy vagy miért jön a képbe a PIC24FJ128GA010, ami sem USB-hez, sem dugaszolós próbapanelhoz sem fejlesztéshez (kicsi az újraprogramozhatósági szám) nem alkalmas?
(#) watt válasza icserny hozzászólására (») Nov 13, 2012 /
 
Esetleg egy PIC87J60, de nem biztos, hogy kell a LAN. Lehet, hogy elég egy 18F2550, amivel néha felcsatlakozik a PC-re, megnéz, módosít alapjelet ha kell és ha van egyáltalán alapjel. Az a kevés adat mehet egy SD-re, amit néha ki lehet olvasni és a kommunikáció lehet RS485 a hardverek között, ha egyáltalán lesz ilyen egység.

Nem ismerjük, hogy az adat honnan származik, mi a feladat stb.
De az biztos, hogy PC-re és USB-re nem szabad szabályzást, vezérlést, adatgyűjtést bízni, maximum monitorozást, alapjelek megadását.
(#) cassis hozzászólása Nov 13, 2012 /
 
No megint meggyűlt a bajom az PIC18F26J11 el. Most az USART interruptja nem akat működni. Amit simán tudok használni az a Timer0 és 1 alacsony és magas prioritása, de az USART2 Low megszakítása nem akar generálódni. A TX ág rendben, szkópon látom a PIC bemenetére érkező soros jelet mégsem történik semmi... Az interrupt ágban lévő LED vizuális megjelenítése lenne a várt eseménynek...

  1. org             h'0018'         ;Low-Priority Interrupt Vector
  2.  
  3.         btg             LATC,0                  ;LED1
  4.         decf            RCREG2,W,access
  5.         movwf           TXREG2,access
  6.         btfss           PIR3,TX2IF
  7.         bra             $-2
  8.         bcf             PIR3,TX2IF
  9.         retfie
  10.  
  11.  
  12.  
  13.  
  14. ;Interrupt_Init:
  15.         bsf             RCON,IPEN       ;Enable priority levels on interrupts
  16.         bsf             INTCON,7                ;Enables all high-priority interrupts
  17.         bsf             INTCON,6                ;Enables all low-priority peripheral interrupts
  18.  
  19.         bsf             INTCON2,TMR0IP  ;TMR0    Overflow Interrupt High Priority
  20.         bsf             IPR1,TMR1IP     ;TMR1    Overflow Interrupt High Priority
  21.         bcf             IPR1,RC1IP      ;EUSART1 Receive  Interrupt Low  Priority
  22.         bcf             IPR3,RC2IP      ;EUSART2 Receive  Interrupt Low  Priority
  23.  
  24.         bsf             PIE1,RC1IE      ;Enables the EUSART1 receive interrupt
  25.         bsf             PIE3,RC2IE      ;Enables the EUSART2 receive Interrupt
  26.         bsf             INTCON,TMR0IE   ;Enables the TMR0   overflow interrupt
  27.         bsf             PIE1,TMR1IE     ;Enables the TMR1   overflow interrupt
  28.  
  29.  
  30.  
  31. ;Init Usart:
  32.         movlb   d'14'                   ;regiszter EECON2 bank 15 ben  
  33.  
  34.         movlw   0x55
  35.         movwf   EECON2,access  
  36.         movlw   0xAA
  37.         movwf   EECON2,access  
  38.         bcf     PPSCON,IOLOCK,banked    ; PPS Write Protect off
  39.  
  40.         movlw   0x00                    ;RP0  EUSART2 bemenet
  41.         movwf   RPINR16,banked          ;
  42.         movlw   0x5                     ;RP1  EUSART2 kimenet  
  43.         movwf   RPOR1,banked            ;
  44.        
  45.         movlw   0x55
  46.         movwf   EECON2,access
  47.         movlw   0xAA
  48.         movwf   EECON2,access
  49.         bsf     PPSCON,IOLOCK,banked    ; PPS Write Protect on
  50.         ;movlb  d'15'
  51.  
  52.         movlw   b'01100000'             ;BRGH = 0 (Low speed), 9-Bit Transmit Enable
  53.         movwf   TXSTA1,access
  54.         movlw   b'00100000'             ;BRGH = 0 (Low speed), 9-Bit Transmit disable
  55.         movwf   TXSTA2,access          
  56.         movlw   b'11010000'             ; 9-Bit Receive Enable
  57.         movwf   RCSTA1,access
  58.         movlw   b'10010000'             ; 9-Bit Receive Disable
  59.         movwf   RCSTA2,access
  60.         movlw   b'0000000'              ;Idle state for transmit is high level
  61.         movwf   BAUDCON1,access                 ;
  62.         movwf   BAUDCON2,access         ;8-bit Baud Rate Generatort használunk (BRG16.bit =0)
  63.         movlw   RS485_Baud              ;osc: 32 MHz, BAUD: 9600 --> SPBRG = 51        
  64.         movwf   SPBRG1,access
  65.         movwf   SPBRG2,access
  66.  
  67.  
  68.        
  69.  
  70. Main:
  71.         bra     Main

A hozzászólás módosítva: Nov 13, 2012
(#) Hp41C válasza cassis hozzászólására (») Nov 13, 2012 / 1
 
Szia!
Azt hiszen többször leírtam:
- Hibakezelés: Ha egyszer egy keretezési vagy ráfutási hiba lesz, akkor többet nem vesz az UART. Le kell tiltani, ki kell olvasni a vett karaktert és újra engedélyezni kell.
- Nem szabad megvárni, míg az adó elkészül, mert a vevő is vehet ez alatt az idő alatt egy karaktert és máris kész a ráfutás.
A megoldás egy fifo nyújt, a vevő beleteszi a vett karattert engedélyzi az adási megszakítást és visszatér. Az adási megszakítás mindaddig tiltva van, míg nincs adni való, ha van adni való, akko kiveszi a fifo -ból és átadja az uartnak, megnézi, hogy van-e még adni való, amennyiben nincs letiltja az adási megszakítás kérést.
(#) cassis válasza Hp41C hozzászólására (») Nov 13, 2012 /
 
[off][Ha egyszer egy keretezési vagy ráfutási hiba lesz, akkor többet nem vesz az UART. Le kell tiltani, ki kell olvasni a vett karaktert és újra engedélyezni kell.
/off]

Igen, ez az OERR: Overrun Error bit vizsgálatával történik meg. A dolog ismerős, de én azt várom, hogy legalább az első karaktert elfogadja az interruptba. Keretezési hiba azért nem lehet, mert a PIC18F által adott kaktert tökéletesen felismeri a PC adott 9600,8,1,None beállítással, adáskor pedig természetesen ugyanezeket ezeket is használja. Ráfutási hiba pedig azért nem, mert kézzel adom a uP -nak egyesével a karaktereket, ezidő alatt bőven lehetősége van kiolvasni.

Idézet:
„- Nem szabad megvárni, míg az adó elkészül, mert a vevő is vehet ez alatt az idő alatt egy karaktert és máris kész a ráfutás.


Ezt pedig nem is értem. Elvileg külön - külön regiszterből történik az adás - vétel (TXREGx, RCREG) ezután hogy értelmezel ráfutást?

Idézet:
„A megoldás egy fifo nyújt, a vevő beleteszi a vett karattert engedélyzi az adási megszakítást és visszatér. Az adási megszakítás mindaddig tiltva van, míg nincs adni való, ha van adni való, akko kiveszi a fifo -ból és átadja az uartnak, megnézi, hogy van-e még adni való, amennyiben nincs letiltja az adási megszakítás kérést.


A fentieket nem értem pontosan. FIFO a hardver része, de itt a blokkséma szerint csak 1 mélységű ez. Rsézleteznéd mire gondoltál?
A hozzászólás módosítva: Nov 13, 2012
Következő: »»   1102 / 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