Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   1113 / 1319
(#) nem válasza icserny hozzászólására (») Márc 6, 2013 /
 
Ugyanúgy van bekötve, mint a Starter Kit-en (ismerem azt a kapcsolást amúgy, egyszer már megépítettem, csak akkor nem tettem rá RTC kristályt), a SOSCI és SOSCO lábakra, csak épp nem 11pF-os terhelő kondikkal, mivel az én kristályomnak 12pF kell... vagyis 12.5pF kell neki, de nem hinném, hogy fél pF olyan sokat számítana.. legalábbis a 8MHz-es system clock kristálynál még sosem volt gond néhány pF eltérésből, meg nem is olyan pontos értékűek ezek a kerámia kondik...

Úgy értettem, amit írtam, vagyis a programozó a srác azt mondta, hogy: olyan módon nem lehet elvileg konfigolni a PICet, ami 32kHz-es kristály frekvencia (tehát helyes kristály "működés" ) mellett olyan frekvenciával pörgeti a másodperceket, mint ahogy tapasztaljuk (LCD-re kiírva).. magyarul ez csak arra vonatkozik, hogy valószínűleg nem a konfigurációval van a baj, hanem hardveres a gond.
A hozzászólás módosítva: Márc 6, 2013
(#) nem válasza nedudgi hozzászólására (») Márc 6, 2013 /
 
Éppenséggel lehet, csak nem szeretném, ha nem muszáj.. elvileg mennie kéne egy 32 kHz-es kaviccsal is.. Köszönöm az ötletet ettől függetlenül!
(#) _vl_ válasza nem hozzászólására (») Márc 6, 2013 / 1
 
Szerintem az, hogy 10pF, vagy 12.5, az tök mindegy. Meg merem kockáztatni, hogy még 0pF-dal is menne (a lábaknak meg a panelnak is van legalább 5-10pF kapacitása), a 18-22 is még valószínűleg beleférne. Szóval én sem hiszem, hogy a kondi lehet a probléma.
Ha jól értem, megy az az oszcillátor, csak irreális frekivel. Akkor meg kéne nézni egy szkóppal, hogy mit látni a kvarc lábain - az irreális frekit, vagy ott még minden rendben van, csak belül számol rosszul.
A hozzászólás módosítva: Márc 6, 2013
(#) szabics hozzászólása Márc 6, 2013 /
 
PIC BASIC PRO-ban Hogyan van a config a PIC18F25520 esetében ha belsó oszcilátort akarok használni?
Most így van megadva :

intcon2 = %10000000 ' RBUP ellenállás engedélyezés (1)
OSCCON = %11110000 ' 8 Mhz, belsől oszc
OSCTUNE = %11000000 ' 4x PLL engedélyezve

ADCON1.7 = 1 ' 10 bites felbontás
ADCON0 = %11000001 ' A/D BEALLITASA ES BEKAPCSOLASA
ADCON1 = %10001110 ' PORTA.0 ANALOG BE, A TOBBI DIGITALIS


Mikor betöltöm a programozó szoftverébe az írja, hogy néhány config szó nincs a hex file-ban. Mi hiányzik?
(#) Moderátor hozzászólása szabics hozzászólására (») Márc 6, 2013
 
Miért nem elég egy helyre betenni a kérdésedet? Szabályzat
(#) Hp41C válasza szabics hozzászólására (») Márc 7, 2013 /
 
Szia!

Ezek az idézett sorok valóban nem a konfigurációs szavakat állítják be.
(#) sirály12 válasza nem hozzászólására (») Márc 7, 2013 / 1
 
Nekem is voltak gondjaim a 32khz-es kvarccal. De a külföldi fórumokban sokan panaszkodtak erre.
Nekem végül azthiszem a második, vagy harmadik lett jó, és 22pf-al hajtom. A hosszabb idejű pontosságát még nem néztem, de majd ha lesz rá időm megnézem azt is. (Örültem, hogy végre beindult, mert elég sokat szívtam vele)
(#) nem válasza sirály12 hozzászólására (») Márc 7, 2013 /
 
Aham, hát köszönöm, hogy leírtad a tapasztalatod.. elég idegesítő dolog, mert egy RTC kb. a legalapabb csicska dolog egy kontrolleren és kb. az az egyetlen, amit nem sikerült rajta belőni rendesen
Majd próbálkozom még kristályokkal meg kondikkal.. legrosszabb esetben marad a külső RTC IC, csak hát az ugye plusz helyet foglal és a hely kérdése az én esetemben jelenleg kritikus.
Ha esetleg rémlene, hogy hol vetted azt a kavicsot, amivel jó lett, akkor annak az infónak még örülnék.
Köszönöm
(#) nem válasza _vl_ hozzászólására (») Márc 7, 2013 /
 
meg sem próbáltam a szkópozást, mert korábban már próbáltam kristályra rászkópozni, de elég érdekes eredményekkel zárult a mérés és aztán hallottam valahol, hogy azt csak úgy nem lehet. Na de jelen esetben nem volt semmi gond vele... és kb megvan a 32kHz, tehát mégis csak konfig gond lehet, de arra tényleg nincs rálátásom. Mindenesetre azt mondja a programozó srác, hogy ilyen 2-szeres "másodperc-takk"-ot elvileg nem lehet belőle kiszedni, csak finomállítani lehet szoftveresen... Még azt tudom elképzelni, hogy a mérés befolyásolja a rezgőkört és olyankor jól jár, amikor rámérek, amúgy meg nem. Mindjárt utána is járok ennek.
(#) nem válasza nem hozzászólására (») Márc 7, 2013 /
 
Na szóval, bedobtam egy LED villogót, ami gyors volt alapból, szkópozás közben meg stimmelt. 10pF a szkópom névleges bemeneti kapacitása, úgyhogy rádobtam 22pF-osokat az egyébként 12pF-os terhelő kapacitást igénylő kristályra és most jó... csak ez azért fura, mert ezt a kombinációt szerintem már próbáltam... na de mindenesetre a jövőre nézve mindenkinek üzenem, hogy:

A PIC32MX795F512 RTC-jére a következőt érdemes tenni:
ilyen kristály 22pF-os terhelő kapacitásokkal
A hozzászólás módosítva: Márc 9, 2013
(#) Simon Kornél hozzászólása Márc 8, 2013 /
 
Sziasztok!
A következő probléma miatt nyitottam ezt a topicot. Böngésztem a fórumokat, de nem találtam minden kérdésemre választ a soros kommunikációval kapcsolatosan. A PIC18f4550-es mikrokontroller szerintem ma elterjedt és gondolom másokat is érdekel ez a téma.
A problémám a következő. Szeretnék létrehozni egy aszinkron soros kommunikációt (8 data bits - no partity - 1 stop bit) egy PIC és egy PICKit2-es UART között. A PIC adatlapját letöltöttem és az alapján írtam egy programot, hogy a PIC az UART-nak küld egy karaktert. A karakter küldését bele tettem egy végtelenített ciklusba, hogy folyamatosan küldje a jelet. Az UART-t kap jelet, csak értelmetleneket.
Az alábbi kódrészlettel hozom létre a soros kommunikációt:
  1. void init_test(void)
  2. {
  3.         TXSTAbits.BRGH = 1;             // high speed
  4.         BAUDCONbits.BRG16 = 1//
  5.         SPBRGH  = 0x41;                 //300bps 20MHz Osc
  6.         SPBRG   = 0x19;
  7.         TXSTAbits.SYNC=0;               // asynchronous mode
  8.         RCSTAbits.SPEN = 1;             // enable serial port - configures RX/DT and TX/CK pins as serial port pins
  9.         TXSTAbits.TX9 = 0;              // 8-bit transmission
  10.         TXSTAbits.TXEN = 0;     // reset transmitter
  11.         TXSTAbits.TXEN = 1;     // transmit enabled
  12. }


A karakter kiküldését pedig az alábbi kóddal végzem:
  1. void putchar(unsigned char d_out )                      /* sends one char  */
  2. {
  3.         while (!PIR1bits.TXIF) ;
  4.         TXREG=d_out;
  5. }


Az UART-tal csak "?" jeleket veszek, nem kapom vissza azt a karaktert, amit kiküldtem a PIC-ről.
Mit rontottam el? Mit nézzek meg, hogy működjön a kommunikáció?

A hardverről még nem esett szó. Az áramkör egy PIC18F4550-es mikrovezérlőből és egy 20MHz-es kristályból áll (illetve a hozzá kapcsolód 22µF kondikból). A kapcsolás vagy USB-ről vagy az UART-ról táplálom meg. Ez gondolom így érthető, ezért nem csatoltam rajzot róla.

Továbbá az átviteli sebességekkel kapcsolatosan is lenne kérdésem. Valaki használta már a PIC-et 115200K-val? Ha igen, akkor mi a tapasztalata?

A válaszokat előre is köszönöm! Üdv.: Kornél

Névtelen.png
    
(#) cszotyi válasza Simon Kornél hozzászólására (») Márc 8, 2013 /
 
Helló!
Szerintem nem jól van beállítva az átviteli sebesség, a PIC-ben 300bps van az UART tool-ban pedig 1200 bps.

(#) Simon Kornél válasza cszotyi hozzászólására (») Márc 9, 2013 /
 
Az átviteli sebességem jó csak más átviteli sebességeket is megnéztem. A kép akkor készült, amikor az 1200K-s sebességet néztem. Elsőnek a 300K-s sebesség volt beállítva, akkor is "?" karakterek jöttek.
Köszönöm a válaszod.
(#) _vl_ válasza Simon Kornél hozzászólására (») Márc 9, 2013 /
 
Először is jó volna tudni, hogy milyen karaktereket küldesz, mert az egyébként pársoros programból pont ezt nem raktad fel. Másrészt a nézegető programot át kéne fent kattintani Hex állásba, hogy lehessen is látni, mi érkezik.
(#) Simon Kornél válasza _vl_ hozzászólására (») Márc 9, 2013 /
 
Szia!
Javítom a hiányosságomat...
  1. void main(void)
  2. {
  3.         //serial communication test
  4.         init_test();
  5.  
  6.         while( 1)
  7.         {    
  8.                 unsigned char x;
  9.                 x='P';
  10.                 putchar( x );
  11.                 putchar(0x76);
  12.         }
  13. }

Mellékelem a hexa kódokat.
Köszönöm a válaszodat!Üdv.:K
(#) Hp41C válasza Simon Kornél hozzászólására (») Márc 9, 2013 /
 
Szia!
Két pic (18F2550 és 18F252) között optikai leválasztással 300kbit/sec -et is használtam már hiba nélkül.
(#) _vl_ válasza Simon Kornél hozzászólására (») Márc 9, 2013 /
 
Próbáld ki 0xff-fel, 0x00-val, és 0x55-tel is.
(#) _vl_ válasza Hp41C hozzászólására (») Márc 9, 2013 /
 
Kornél félreérthetően fogalmazott: 300bps-t próbál használni. Ennyire van elvileg a BRG is állítva, és ennyivel nézi is. Ennek azért kéne működnie csípőből...
(#) _vl_ válasza Simon Kornél hozzászólására (») Márc 9, 2013 /
 
Idézet:
„egy 20MHz-es kristályból áll (illetve a hozzá kapcsolód 22µF kondikból)”

Öööö... fényképezd már le azokat a kondikat.
(#) kissi válasza _vl_ hozzászólására (») Márc 9, 2013 /
 
Idézet:
„Továbbá az átviteli sebességekkel kapcsolatosan is lenne kérdésem. Valaki használta már a PIC-et 115200K-val? Ha igen, akkor mi a tapasztalata?”

Szerintem erre válaszolt HP41C kolléga!
Steve
(#) watt válasza Simon Kornél hozzászólására (») Márc 9, 2013 /
 
Szia! A puffer ürességét ne a TXIF megszakítás jelző bittel vizsgáld, mert így eláraszthatod a TXREG-et.
Erre alkalmasabb a TXSTAbits.TRMT .
A másik, hogy ha az USB működik, akkor biztosan nem 20MHz a belső Fosc sebessége, hanem 48MHz! Azaz rosszul számolod ki a baudrate értékét.
A hozzászólás módosítva: Márc 9, 2013
(#) Simon Kornél válasza _vl_ hozzászólására (») Márc 9, 2013 /
 
Bocsi! Igazad van! elírtam. 22pF!
(#) _vl_ válasza Simon Kornél hozzászólására (») Márc 9, 2013 /
 
Akkor az rendben van.
A konfigurációs bitek hogyan vannak állítva, tényleg 20MHz-cel megy a CPU?
(#) Simon Kornél válasza watt hozzászólására (») Márc 9, 2013 /
 
Mellékelek egy kapcsolási rajzot. Jelenleg az oszcillátorom 20MHz-s. Nem ezt kell az átvitelnél alapul vennem? Nem ebből számolom az átvitelt?
(#) watt válasza Simon Kornél hozzászólására (») Márc 9, 2013 /
 
Nem csak a kristály határozza meg az Fosc-t. Hogyan állítottad be a konfigurációs biteket?
A hozzászólás módosítva: Márc 9, 2013
(#) Simon Kornél válasza watt hozzászólására (») Márc 9, 2013 /
 
Így állítottam be őket:
  1. #pragma config FOSC = HSPLL_HS          // Using 20 MHz crystal with PLL
  2. #pragma config PLLDIV = 5                       // Divide by 5 to provide the 96 MHz PLL with 4 MHz input
  3. #pragma config CPUDIV = OSC1_PLL2       // Divide 96 MHz PLL output by 2 to get 48 MHz system clock
  4. #pragma config FCMEN = OFF                      // Disable Fail-Safe Clock Monitor
(#) watt válasza Simon Kornél hozzászólására (») Márc 9, 2013 /
 
A 3. sorban mit is írnak megjegyzésben?
(#) Simon Kornél válasza watt hozzászólására (») Márc 9, 2013 /
 
Azt írja, hogy a rendszer időm 48MHz.
Akkor ezt kell alapul vennem az átviteli sebesség számításánál?
(#) icserny válasza Simon Kornél hozzászólására (») Márc 9, 2013 /
 
Idézet:
„Akkor ezt kell alapul vennem az átviteli sebesség számításánál?”
Pontosabban ennek a negyedét, mert a 48/4 = 12 MHz az a belső frekvencia ami például a timer-ek alap órajele.
(#) watt válasza Simon Kornél hozzászólására (») Márc 9, 2013 /
 
A kérdés, gondolom költői...
Következő: »»   1113 / 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