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   1210 / 1210
(#) Pali79 hozzászólása Okt 29, 2024 /
 

HI-TECH C

Nincs valakinek még működő Hi-tech C fordítója? Van egy ilyen nyelven írt projekt, ami érdekelne. Azt írták a Microchip oldalán, hogy az XC8 kompatibilis vele, de az azzal fordított hex nem működik. Elképzelhető, hogy más hiba is van a kódban, bár hiba nélkül fordul. Akkor ásnám magam bele jobban ha látom működni a próba panelon.
(#) icserny válasza Pali79 hozzászólására (») Okt 29, 2024 /
 
Az MPLAB® Development Ecosystem Downloads Archive oldalról letölthető, de nem tudom, hogy licensz nélkül működik-e.
(#) Pali79 válasza icserny hozzászólására (») Okt 29, 2024 /
 
Sajnos nem működik, pont ez a bajom.
(#) diginewl hozzászólása Dec 16, 2024 /
 

Pic helyettesítés

Érdeklődöm, hogy fel lehet-e cserélni a két PIC-et? A leírásban, és hozzá a HEX 16F630-ra vagy 16F676-re működik. Nekem viszont itt helyben csak a 16F 648 van. Működhet ezzel is?
A hozzászólás módosítva: Dec 16, 2024
(#) Bakman válasza diginewl hozzászólására (») Dec 16, 2024 /
 
Az egyik 14, a másik 18 lábú. Az egyiknek RA és RC portjai, a másiknak RA és RB portjai vannak. Biztos, hogy nem fog működni, a rgiszterek címei is eltérnek.
(#) Hp41C válasza diginewl hozzászólására (») Dec 16, 2024 /
 
Milyen projekt? Tedd fel ide a forrást vagy a hex-et.
(#) diginewl válasza Hp41C hozzászólására (») Dec 16, 2024 /
 
Nyilvánosan elérhető az asm, és a hex is. 12F629-is jó a hex, nyilván akkor kevesebbet tud.
Ez a forrás
Köszönök minden segítséget!!!
(#) Hp41C válasza diginewl hozzászólására (») Dec 16, 2024 /
 
Talán fut 16F648A-en...
A hozzászólás módosítva: Dec 16, 2024
(#) diginewl válasza Hp41C hozzászólására (») Dec 17, 2024 /
 
Köszönöm! Kipróbálom!
Rendelek, majd 16F630-at is. Azzal biztosan fog majd menni.
(#) david10 hozzászólása Dec 17, 2024 /
 

PIC18F57Q84 frekvenciamérés TMR1 időzítő Gate lábával

Sziasztok,
PIC18F57Q84-en próbálok frekvenciát mérni a TMR1 időzítő Gate lábával, de nem sikerül, nem akarnak változni a TMR1H és TMR1L értékek.
A TMR1.T1G-nek próbáltam beállítani a RC0 és az RB5 portot, de egyikkel sem működik a számolás, próbáltam 1Hz-től 150KHz-ig több féle jelt, de sehogyan sem akar felfele számolni.
Ez a leírás alapján próbáltam, csatoltam fényképet a beállításokról.
Merre keressem a hibát?
A választ előre is köszönöm.

pic18tmr1.PNG
    
(#) Bakman válasza david10 hozzászólására (») Dec 17, 2024 / 1
 
Az adatlap szerint programból kell 1-re billenteni a T1GGO bitet. Ez megtörténik?
Feltétlen kell az MCC? Itt-ott bugos és nem egyszerű kibogarászni, hol a hiba.
(#) david10 válasza Bakman hozzászólására (») Dec 17, 2024 /
 
Köszönöm a válaszodat,
A T1GCON.GGO engedélyezése megoldotta a gondot, érdekes hogy erről sehol sem írtak eddig...
Az egyedüli "örömet" amit a PIC programozásban találtam azt eddig az MCC Classic-nak köszönhetem (azt már nem fejlesztik elvileg), a mostani MCC Melody-t én is csapnivalónak tartom (egy csomó függvény neve más, másképpen kell meghívni, hiányos és még jó lassú is az MCC ablaka), több helyen is írták hogy tele van bug-okkal az egész MCC, a tegnap személyesen is belefutottam egy bug-ba (ugyanezen a mikrokontrolleren az UART1 a PORTB-re nem tud adatot küldeni a valóságban, de az MCC szerint tud, erre a tegnap 1 órám ment rá...), ha az MCC nélkül kellene programot írjak akkor abbahagynám a PIC programozást és egyébre térnék át, még próbálok tapasztalatot szerezni a PIC programozás terén, mert eddig bejött a programozása, de a komolyabb projekteket más MCU-re fejlesztem már most, más MCU-nál valahogy nem voltak még ehhez hasonló gondok.
(#) maripan hozzászólása Dec 29, 2024 /
 

pinout kereső

Sziasztok
Létezik olyan 14 lábú PIC aimnek a lábkiosztása 7. GND 14. VDD
Egy Cd40xx helyére kéne betennem valamit. Persze egyedi funkcióval.
Nem tudom lehet e így keresni a MC-honlapján. Nekem nem sikerült...
(#) Bakman válasza maripan hozzászólására (») Dec 29, 2024 / 1
 
Ha van hely, készíts egyedi adaptert. Akár THT alkatrészek felhasználásával nagyobb öcsipanelt.

szerk.:
Tudommal nincs ilyen lábkiosztású PIC.
A hozzászólás módosítva: Dec 29, 2024
(#) maripan válasza Bakman hozzászólására (») Dec 29, 2024 /
 
Nem nagyon van. Ráadásnak nem is DIP. Valamit mókolok majd
(#) bitmixer válasza maripan hozzászólására (») Jan 2, 2025 /
 
Esetleg megpróbálhatnád, hogy egy 14 lábú PIC-et (pl. 16F684) fordítva teszel be, azaz a 14-es lába (Uss) kerül a 7-es helyére (ezzel a GND el is van intézve), az RC3 pedig az eddigi +5V (vagy 3,3V?) helyre. Ha ezt a lábat bemenetté konfigurálod, akkor a belső védő diódáján keresztül meg fogja táplálni a PIC-et 0,6V-tal kevesebbről. Ha ez elég, és a fogyasztása sem több pár mA-nél, akkor szerintem majdnem kész vagy. Kérdés még, hogy a CDxxx lábainak eredeti funkcióját a PIC portjaival össze tudod-e hozni. Izgalmas feladat...hajrá!
A hozzászólás módosítva: Jan 2, 2025
(#) majkimester válasza maripan hozzászólására (») Jan 2, 2025 /
 
Egyébként melyik CD40xx és az milyen tápfeszültségről üzemel?
A CD tápfesz tartománya 3 ... 15V, A PIC meg max 5V-ról megy. (A HV sorozat 10V-os tápot is elbír, de a port lábak akkor is 5V max.)
(#) ssdroon30 hozzászólása Jan 16, 2025 /
 

I2C kommunikáció XC8-al

Sziasztok!

Jelenleg éppen azon mesterkedek, hogy egy pic18f450-t, és egy pic18f2550-t i2c-vel összekötöm, hogy teszteljem a kommunikációt.
A 18f4550 a master oldali pic, míg a 18f2550 a slave.
A kód lényege, hogy a master elküld a egy 'a' karaktert a slave-nak, és ha a slave vette, akkor a portc0-ra kötött led elkezd világítani.
Sajnos a sokadik megoldás során sem világít a led, pedig szerintem mindent beállítottam.
8MHz a kvarc, a scl, és sda 4,7kohm-os ellenállásokkal 5V-ra vannak húzva.
Lehet, hogy konfigurációs probléma van, de még nem jöttem rá.
A kódot xc8-al fordítom MPlabX 6.20-ból.
Sajnos a sokadik kódírás sem segített, ezért kérhetem, hogy átnézzétek a mellékelt kódot?
Előre is köszönöm!

Üdv.:
ssdroon30

i2c.zip
    
(#) Lamprologus válasza ssdroon30 hozzászólására (») Jan 16, 2025 /
 
Logikai analizátorral rá kéne nézni az I2C lábakra, hogy ott mit látsz!

Abból (talán) el lehet dönteni, hogy a master vagy a slave programban kell keresni a hibát!
(#) Hp41C válasza ssdroon30 hozzászólására (») Jan 16, 2025 /
 
Szia!

Master:
Adat / cím írása után is meg kell várni a kiküldését.
Slave:
Az első adat a cím. Meg kell nézni, hogy a cím megegyezik-e a slave saját címével. Utána következik az adat. Minden vett adat után az órajelet alacsonyan kell tartani, ameddig a feldolgozás történik. Ha kész a feldolgozás, az órajel vonalat magas szintre kell engedni.

I2C slave példák
I2C master páldák
(#) diginewl hozzászólása Jan 16, 2025 /
 

Nencső begyújtás villódzó effekt 16F630-re

Tiszteletem!
Egy egyszerű, 16F630 PIC-re írt programot (HEX) keresek, valószínű van már ilyen.
Ha esetleg van ilyen programja valakinek, kérem ossza meg velem, ha lehetséges.

Ha egyik lába jelet kap - (GND-ről felmegy magasra) - akkor a 8 kimeneti lábán, különböző, véletlenszerű felvillogtatással bekapcsolja őket (neoncső gyújtás effektus), egészen addig bekapcsolva marad mind, amíg a bemeneti lábon az érték fenn/magasan van. Ha lemegy a szint, akkor minden kimenetét lekapcsolja.
Valami ilyen véletlen bekapcsolás talán alkalmazható lenne benne.
Köszönöm Mindenkinek a segítséget előre is!
(#) Pali79 hozzászólása Jan 26, 2025 /
 

LCD kezelés

Próbált már valaki több LCD kijelzőt kezelni úgy, hogy az adatvonalak közösek csak az E vonalat kapják külön? Elviekben ennek működnie kellene, nem?
(#) Hp41C válasza Pali79 hozzászólására (») Jan 26, 2025 / 1
 
Működnie kell. Egyszerre csak egy E vonal helet aktív olvasáskor, de írás esetében lehet több is, ha ugyan azt az adatot kell beírni. (pl.: inicializálás mehet egyszerre.)
(#) ssdroon30 hozzászólása Kedd, 16:09 /
 

PIC18f452 i2c c18

Sziasztok!

Írtam már a topikon belül, de most két másik pic-el próbálkozok két 18f452-el.
Továbbra is az i2c kommunikáció a téma, de sajnos továbbra sem működik.
Próbálkoztam a xc8 fordítóval, pár leírás alapján, hiába.
Most a c18 fordítóhoz készült kóddal próbálkozom, de nem tudom, hogy mi lehet a hiba.
A lényeg, hogy mindkét pic-nek a portb0-ra van kötve egy led, ha sikeres a kommunikáció, akkor mindkét pic-nél a led-nek világítania kell, de nem teszi.
A master, és slave kódot is mellékelem:
Master:
  1. // I2C Master Code (PIC18F452)
  2. #include <p18f452.h>
  3. #include <i2c.h>
  4.  
  5. #pragma config OSC = HS, WDT = OFF, LVP = OFF
  6.  
  7. #define SLAVE_ADDRESS 0x30
  8.  
  9. void main() {
  10.     TRISBbits.TRISB0 = 0; // RB0 as output (LED)
  11.     PORTBbits.RB0 = 0;  // Turn off LED initially
  12.  
  13.     OpenI2C(MASTER, SLEW_OFF); // Initialize I2C as Master
  14.     SSPADD = 0x50; // 100kHz Baud rate for 8MHz clock
  15.  
  16.     while (1) {
  17.         StartI2C();
  18.         while (SSPCON2bits.SEN);
  19.        
  20.         if (WriteI2C(SLAVE_ADDRESS << 1) == 0) { // Send Slave Address + Write
  21.             if (WriteI2C(0x55) == 0) { // Send Data Byte (0x55)
  22.                 PORTBbits.RB0 = 1; // Turn on LED if successful
  23.             }
  24.         }
  25.        
  26.         StopI2C();
  27.         while (SSPCON2bits.PEN);
  28.        
  29.         //__delay_ms(1000); // Wait before sending again
  30.     }
  31. }


Slave:
  1. // I2C Slave Code (PIC18F452)
  2. #include <p18f452.h>
  3. #include <i2c.h>
  4.  
  5. #pragma config OSC = HS, WDT = OFF, LVP = OFF
  6.  
  7. #define SLAVE_ADDRESS 0x30
  8.  
  9. void main() {
  10.     TRISBbits.TRISB0 = 0; // RB0 as output (LED)
  11.     PORTBbits.RB0 = 0;  // Turn off LED initially
  12.  
  13.     OpenI2C(SLAVE_7, SLEW_OFF);
  14.     SSPADD = SLAVE_ADDRESS; // Set I2C Slave Address
  15.     SSPCON1bits.SSPM = 0x06; // I2C Slave mode, 7-bit address
  16.     SSPCON1bits.CKP = 1;
  17.     SSPSTATbits.SMP = 0;
  18.    
  19.     while (1) {
  20.         if (SSPSTATbits.BF) { // Check if buffer is full
  21.             unsigned char received = SSPBUF; // Read received data
  22.             if (received == 0x55) {
  23.                 PORTBbits.RB0 = 1; // Turn on LED if data is correct
  24.             }
  25.             SSPCON1bits.CKP = 1; // Release clock
  26.         }
  27.     }
  28. }


Biztos elsiklottam valami felett, hátha ti észreveszitek!
A segítséget előre is köszönöm!

Üdv.:
ssdroon30
(#) bbb válasza ssdroon30 hozzászólására (») Kedd, 20:53 /
 
A két PIC között hogy van összekötve az i2c vonal? Fel van kötve tápfeszre ellenálláson keresztül? Van szkópod, vagy logikai analizátorod, amivel láthatod mi mozog a két PIC között?
(#) Pali79 hozzászólása 7:40 /
 

Harveres PWM

Sziasztok!
Meg lehet oldani valahogy azt, hogy ha két harveres PWM-et használok, hogy azok egymástól eltolva működjenek? Tehát ha az egyik magas, a másik ugyanakkor alacsony legyen? Minden más paraméterében (kitöltés, ferki, stb.) megegyezik.
(#) Bakman válasza Pali79 hozzászólására (») 8:43 /
 
Az újabb, 8 bites kontrollerekben van ügyesebb PWM modul (Pulse-Width Modulator with Compare) és CLC (Configurable Logic Cell). Némi fantáziával kb. olyan elrendezésben jelennek meg a kimeneteken a PWM jelek, amilyenben akarod. Ha jól értem a kérdést, a Push-Pull üzemmódra van szükséged, CLC nem is fog kelleni.
A hozzászólás módosítva: 8:44
Következő: »»   1210 / 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