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   1103 / 1210
(#) nedudgi válasza whalaky hozzászólására (») Dec 9, 2019 /
 
Nekem az elején a buszon keletkező értetlenkedések okozták a gondot. Előfordult, hogy valamelyik slave nem tudta fogadni, nem értette a master által küldött csomagot, és ezért a NAK miatt a master végtelen ciklusba került. Ezt kezeled programban?
(#) whalaky válasza Hp41C hozzászólására (») Dec 9, 2019 /
 
Semmi akadálya, de gondolom az I2C busz nem okoz nehézséget.Egy PCF874, egy DS1307 és egy AM2320 az I2C buszon. egyenlőre semmi más. ez egy a későbbi projectek alapja lenne ha müködne. A kód pedig.... csomagolom és feltöltöm. Gyerek cipőben jár, még inkább csak vázlat de elvileg műkődnie kéne.

A.zip
    
(#) slimcolt hozzászólása Dec 10, 2019 /
 
Sziasztok,

Szeretném használni a komparátor modulját egy PIC12LF1571-nek, sajnos nem találom az adatlapjában, hogy a komparátor megszakítása felébreszti e a kontrollert az alvásból. Feltételezem igen, csak nem találom a sorok között.
(#) Tasznka válasza slimcolt hozzászólására (») Dec 10, 2019 /
 
147.oldal "Wake-up from Sleep" .
(#) whalaky válasza whalaky hozzászólására (») Dec 11, 2019 /
 
STOP!
Ma délben megjelent (legalábbis nálam) az MSSP [PIC10/PIC12/PIC16/PIC18] újabb verziója
az MCC-ben. Átbogarászom et is hátha egszerübb lesz hazsználni mint az előző kiadást és elfogadható méretű kódot generál.
Pár éjszaka és meglátom.....
(#) slimcolt válasza Tasznka hozzászólására (») Dec 11, 2019 /
 
Köszi! Jól elmentem mellette...
(#) siemenstaurus hozzászólása Dec 12, 2019 /
 
Sziasztok!
Elméleti kérdés:
Modul rendszerben gondolkodunk, a kérdésem az lenne, ha minden modulon van egy-egy mikrovezérlő, egyforma típusúak és a panelok is egyformák ugyan azzal a feladattal, a programozó lábakat ki lehet-e vezetni összekötve, hogy együtt kapják meg ugyan azt a programot, vagy ezt csak egyesével ajánlott megtenni? Válaszokat köszönöm előre is! Szép estét!
(Terepasztal vezérlés lenne, a jelzővezérlésen agyaltunk.)
(#) Hp41C válasza siemenstaurus hozzászólására (») Dec 12, 2019 /
 
Egyesével ajánlott. A programozás során olvasni is kell adatot a kontrollerből az esetleges hiba felderítésére. Ha párhuzamosítanánk a programozási vezetékeket egyrészt a tápegységet (Vpp és/vagy Vdd) túlterhelnénk, másrészt az olvasott adatok esetleges eltérő értéke miatt a kontrollerek kimenete tarthelődne túl.
(#) MrBrown hozzászólása Dec 12, 2019 /
 
Sziasztok,
Segítséget szeretnék kérni mert lehet hogy én rontok el valamit.
16F1825-öt programoznék fel pic2kit-el.
Az IC-knek jónak kell lenniük, most rendeltem a chipcadtől és többet is kipróbáltam.
1-es lábra Vdd
14-esre Vss
4-re Vpp (MCLR)
12-re PGC
13-ra PGD
A program azt mondja higy no device detected, kipróbáltam egy régi 16F84-el és azzal működött minden.
Esetleg mégis rosszul kötöttem be valamit?
köszönöm, Barna
(#) siemenstaurus válasza Hp41C hozzászólására (») Dec 12, 2019 /
 
Akkor nem kísérletezünk. Köszönöm!
(#) Kera_Will válasza siemenstaurus hozzászólására (») Dec 13, 2019 /
 
Ha viszonylag tobbszor kell az egyes uC konfigjat modositani es maceras lenne mindig korbe korbe jarni a fel le dugdosassal a programozoval . Akkor erdemesebb lenne egy "állapottáblát" az eeprom teruletekre eltarolni.
Ezt kivulrol elerhetove tenni egy i2c vagy soros busszal amire fel vannak fuzve a uCek.
A uCek egyedileg cimezhetok legyenek , hogy a busz vegen levo szamitogeprol elerheto legyenek.
A uCben futo program indulaskor az eeprom tartalmabol olvassa ki az allapottabla tartalmat.
Ez alapjan konfiguralja fel a ki/be portokat , ha idozitesek vannak ebbol olvasa ki az idoket, minden olyan parametert amit at at tekertek idonkent.
+ az a "beszelgeto" protokol amivel az eeprom tartalom modosithato.
Címzesuk softverbol fixen beirva , esetleg par darab kulso port bealdozasaval hardveresen is megoldhato.
(#) icserny válasza siemenstaurus hozzászólására (») Dec 13, 2019 /
 
Lehet használni bootloadert (ha talász vagy csinálsz ilyet), és a modulokat fel lehet fűzni valami egyszerű buszra - pl. RS-485 vagy CAN. Az utóbbit azért írom, mert pl. a DS30 Loader támogatja...
(#) gabilow válasza MrBrown hozzászólására (») Dec 13, 2019 / 1
 
Szia! Szerintem a "PK2DeviceFile.dat" fájlt kell kicserélni újabbra, ami a PK2 telepítési mappájában van. Próbáld meg ezzel:
A hozzászólás módosítva: Dec 13, 2019
(#) MrBrown válasza gabilow hozzászólására (») Dec 13, 2019 /
 
Szia,
Igen, kicseréltem és most már azonnal fel is ismerte a pic-et és fel is programozta.
Köszönöm szépen a segítséget!
(#) cross51 hozzászólása Dec 15, 2019 /
 
Sziasztok!

Egy kis érdekesség.
Elektró tanárom volt ChipCAD-es szaknapon és mesélt egy érdekes dolgot.
Tudjátok, hogy az M-éknél hogyan van offsetelve egy OPA tokozás után?
Elvileg kerül bele egy EEPROM, tokozás után kimérik és az EEPROM-ba égetik az offset értéket.
(#) pipi válasza cross51 hozzászólására (») Dec 16, 2019 /
 
Azt is mesélte az eepromban tárolt digit infóból hogyan lesz analóg kompenzáció?
(#) kissi válasza pipi hozzászólására (») Dec 16, 2019 /
 
Lehet, hogy digitális potival !?
(#) cross51 válasza pipi hozzászólására (») Dec 17, 2019 /
 
Mi közben írtam nekem is ez jutott eszembe, rá kérdezek hátha volt róla szó.
(#) pipi válasza cross51 hozzászólására (») Dec 18, 2019 /
 
Egyszerűbb ha van benne egy ellenállás háló, és ezt sütögetik, ja lehet az eeprom kimenetével kapcsolgatnak osztót.
(#) szSzilard hozzászólása Dec 19, 2019 /
 
Sziasztok,

PIC30F4013 kontrollernél szeretném használni az I2C függvényeket de már az #include "i2c.h" meghívásakor hibát ír ki.
Mi lehet a probléma?

Köszönöm.
A hozzászólás módosítva: Dec 19, 2019
(#) icserny válasza szSzilard hozzászólására (») Dec 20, 2019 /
 
Idézet:
„Mi lehet a probléma?”

Ezt a hibajelzés mondja meg. Valószínűleg nem ott van, ahol a fordító előfeldolgozója keresi.
(#) szSzilard válasza icserny hozzászólására (») Dec 23, 2019 /
 
MPLAB X IDE v5.10 és XC16 (v1.36) használok. Fájlkezelővel rákerestem az I2C.h fájlra, de nem találta. Lehet hogy külön kell telepíteni?
(#) icserny válasza szSzilard hozzászólására (») Dec 24, 2019 / 1
 
Nem tudom, én nem használom ezeket.
(#) usane válasza szSzilard hozzászólására (») Dec 24, 2019 / 1
 
Biztos valami régi kódot használsz. Az új XC verziók nem tartalmazzák a periféria könyvtárat. Legalábbis a 16 és 32 bites chipeknél, a 8 bitesre most nem emlékszem benne van-e még. Valószínűleg a harmony miatt. Vagy használj hozzá egy régebbi fordítót, azt hiszem az 1.24-ben még benne volt, vagy az újhoz fel kell tenni a PLIB könyvtárat.

szerk: A google-t miért nem használja senki? Első találtat
A hozzászólás módosítva: Dec 24, 2019
(#) szucsistvan123 hozzászólása Dec 25, 2019 /
 
Üdv!

C programozáshoz kérnég egy kis segítséget! (pic-et programozok, szóval egy kicsit ide vág )

Egy tömbre mutató pointer (függvénynek cím szerint átadva) tartalmát kellene tükrözni.
A következő kódra hibát dob a fordító. Hogyan lehet megoldani, hogy egy adott címen lévő változó egy másik címen lévő értéket vegyen fel?
(több változóval, meg hosszabb kóddal meg tudnám csinálni, azzal nincs gond, inkább azt nem értem hogy ez miért nem jó így.)

Fordító: XC16.

  1. for(index = 0; index < (tomb_meret / 2); index ++){ //egesz karakterek csereje
  2.         temp = *str_pointer[index];
  3.         *str_pointer[index] = *str_pointer[tomb_meret - index];
  4.         *str_pointer[tomb_meret - index] = temp;
  5.     };//END for


Köszi!
A hozzászólás módosítva: Dec 25, 2019
(#) szucsistvan123 válasza szucsistvan123 hozzászólására (») Dec 25, 2019 /
 
Próbáltam a címeket cserélni, nem pedig az értéket, de így meg nem cseréli ki!
  1. for(index = 0; index < (tomb_meret / 2); index ++){ //egesz karakterek csereje
  2.         temp = str_pointer[index];
  3.         str_pointer[index] = str_pointer[tomb_meret - index];
  4.         str_pointer[tomb_meret - index] = temp;
  5.     };//END for
(#) matheattila válasza szucsistvan123 hozzászólására (») Dec 25, 2019 / 1
 
Üdv, jó lenne látni a hibaüzeneteket is, de szerintem egyik probléma itt lesz:
  1. tomb_meret - index

ide szerintem ez kellene, mert ha az index 0 akkor a tömbön kívüli címre mutat...:
  1. tomb_meret - index - 1

Ha így se menne akkor próbáld másképp címezni a tömb elemeit, mert lehet címszerinti átadás miatt nem látja tömbnek, próbáld így esetleg:
  1. for(index = 0; index < (tomb_meret / 2); index ++){ //egesz karakterek csereje
  2.     temp = *(str_pointer + index);
  3.     *(str_pointer + index) = *(str_pointer + tomb_meret - index -1);
  4.     *(str_pointer + tomb_meret - index -1) = temp;
  5. };//END for

Boldog Karácsonyt!
A hozzászólás módosítva: Dec 25, 2019
(#) szSzilard válasza usane hozzászólására (») Dec 26, 2019 /
 
PLIB könyvtárat honnan tudom letöltnei?
(#) icserny válasza szSzilard hozzászólására (») Dec 26, 2019 / 1
 
Ha ezt kerested, akkor innen: Legacy PIC24 MCU & dsPIC DSC Peripheral Library
(#) szucsistvan123 válasza matheattila hozzászólására (») Dec 26, 2019 /
 
Köszi! Neked is!

Sajnos nem lett jó, nem cseréli fel az elemeket.

Itt a teljes kód:
  1. #include<xc.h>
  2. #define FCY 10000000
  3. #include<libpic30.h>
  4. #include <p24FJ256GA702.h>
  5.  
  6. float tomb[5] ={3700.478, 7047.849, 1.001, 0.194, 50.314};
  7. unsigned char string[15];
  8. unsigned char index;
  9.  
  10. uint8_t tizedesjegy = 0;
  11.  
  12.  
  13. void num_to_char(float num, unsigned char *str_pointer, uint8_t tizedesjegy);
  14. void UART_Print(unsigned char *strings);
  15.  
  16. int main() {
  17. /**************************|Periferiak inicializalasa|*************************/    
  18.     Port_Initialize();
  19.     PPS_Setup();
  20.     UART_Initialize();  
  21. /******************************************************************************/    
  22.    while(1){
  23.         for(index = 0; index < 5; index ++){
  24.            num_to_char(tomb[index], string, 0);
  25.            UART_Print(string);
  26.            UART_Print("\n");
  27.            __delay_ms(1000);  
  28.  
  29.        }//END for
  30.     };//END while
  31.     return 0;
  32. }//END main
  33.  
  34. void num_to_char(float num, unsigned char *str_pointer, uint8_t tizedesjegy){
  35.     unsigned int egesz, tort;
  36.     unsigned char digit;
  37.     unsigned char temp;
  38.     unsigned char tomb_meret = 0;
  39.     unsigned char tizedes_state = 3;
  40.     unsigned int index;
  41.    
  42.     egesz = (int)num;
  43.     tort = (num - egesz) * (10^tizedesjegy);    
  44.    
  45.     do{
  46.         digit = egesz % 10;
  47.         *str_pointer = '0' + digit;
  48.         egesz /= 10;
  49.         tomb_meret ++;
  50.         str_pointer ++;
  51.     }
  52.     while(egesz != 0);
  53.    
  54.    
  55.     for(index = 0; index < (char)(tomb_meret / 2); index ++){ //egesz karakterek csereje
  56.         temp = *(str_pointer + index);
  57.         *(str_pointer + index) = *(str_pointer + tomb_meret - index -1);
  58.         *(str_pointer + tomb_meret - index -1) = temp;
  59.     };//END for
  60.    
  61.     *str_pointer = '\0';
  62.  
  63.    
  64. };//END num_to_char
A hozzászólás módosítva: Dec 26, 2019
Következő: »»   1103 / 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