Fórum témák
- • Erősítő probléma
- • Kondenzátor
- • Ki mit gyűjt, retro cuccok
- • Műhelyünk felszerelése, szerszámai
- • TV hiba, mi a megoldás?
- • Nyomtató probléma
- • Hűtőgép probléma
- • Elektromos kerékpár, robogó házilag
- • Hibrid erősítő
- • Powerbank mint áramforrás
- • Mosógép vezérlők és általános problémáik
- • Mikrohullámú sütő javítás, magnetron csere, stb.
- • Általános antennás kérdések, válaszok
- • Frekvenciaváltó
- • Erősítő mindig és mindig
- • Elfogadnám, ha ingyen elvihető
- • BEAG erősítők
- • Szobatermosztát bekötése
- • Frekvenciaváltó 1-ről 3 fázisra
- • Napelem alkalmazása a lakás energia ellátásában
- • Klíma szervizelés, javítás
- • Sprint-Layout NYÁK-tervező
- • Multiméter - miért, milyet?
- • Androidos okos telefonok
- • Akkumulátor töltő
- • Felajánlás, azaz ingyen elvihető
- • Villanymotor bekötése
- Video kaputelefon típusjavaslatokat várok - speciális igények
- • Háromfázisú aggregátor
- • Elektromos roller
- • Padlófűtés vezérlés
- • Klíma beszerelése, fűtés-hűtés házilag
- • LCD TV probléma
- • Bojler javítása, kérdések
- • Adatvédelem / Jelszóbiztonság
- • Erősítő építése elejétől a végéig
- • ZC-18 kazán
- • Dobozolási technikák, műszerdobozok
- • Számítógép hiba, de mi a probléma?
- • Gitár torzító / Effekt / Erősítő / Pickup
- • Leválasztó transzformátor
- • Érdekességek
- • Házi riasztó rendszer saját kivitelezéssel
- • Kombikazán működési hiba
- • Elektronikus szulfátoldó (Akku aktivátor)
- • Hangmodul, hangrögzítő IC
- • Kapcsolóüzemű táp 230V-ról
- • Vicces - mókás történetek
- • Savas akkumulátor
- • Stroboszkóp gyújtáshoz
- • Kamerás megfigyelőrendszer
- • Villanyszerelés
- • Li-Ion saját akkucsomag készítése
- • Szöghelyzet jeladó
- • NICE garázskapu elektronika + egyéb
» Több friss téma
|
- 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.
A kettő között annyi a különbség, hogy az LF jelzésű alacsonyabb tápfeszültségről is üzemel. Más kontrollereknél nem feltétlen van így, az újabb PIC-eknél az LF verzójúak 3.3 V-os rendszerhez illeszkednek, nem bírják az 5 V-ot, esetleg van néhány lábuk, amelyek tolerálják az 5 V-ot.
Adatlapot kell megnézni minden esetben.
Köszönöm, akkor így felejtős a csere.
18F458 helyett használhatsz 18LF458-at.
Ennél a típusnál annyit jelent az "L" jelzés, hogy 2V-ról is üzemel, de max feszültség ennél is 5,5V. Tehát kicserélheted nyugodtan.
Sziasztok!
A VDDCORE/VCAP lábat hogy kell bekötni? Ha jól tudom akkor stabilizálja a tápfeszültséget? Hogy kell ezt engedélyezni, vagy tiltani, mert ezen a PIC-en nincs ENVREG láb. 18LF26K80
Nem értem, hogy most a VDD-re kell kötni, vagy csak egy 100nF kondival a földre?
Előre is köszönöm a segítséget!
Sziasztok!
Szoftveres UART-ban kérnék segítséget. Még pedig hogy PIC18F26K22 pl.RC2-RC3 lábakra hogy lehetséges megoldani. Néztem az adatlapot, nem találtam benne. Feltúrtam a netet példáért, nem sok sikerrel. A hozzászólás módosítva: Szept 16, 2020
Bocsánat lemaradt hogy assembly.
Mit szeretnél tudni? A protokolt, vagy az átvitelre szeretnél megoldást?
Esetleg egy konkrét eszközhöz kapcsolódna? A hozzászólás módosítva: Szept 16, 2020
Két PIC között kellene adatokat átküldenem.
Akkor szabadon választott a kommunikáció mikéntje. Van mester-szolga viszony? Milyen távolságra? Tudok benne segíteni, de akkor folytassuk privátban!
Szia!
Ott csak szoftveres USART-ot tudsz használni, jobb lenne ( ha van lehetőség!) az RC6, RC7 vagy az RB6, RB7 !
Szia!
Igen tudom, de azok már foglaltak.
Akkor nehezebb dolgod lesz ! Láb/bit figyelés, időmérés, shiftelés megoldása, úgy, hogy közben ne maradj le másról ( persze, ha nincs közben más...)!
Ráadásul azokra a lábakra INT/IOC megszakítást sem lehet beállítani. Szép feladat.
Hali!
Timer interruptban figyelheted a szoftveres RX lábat, ha meg van küldendő adat, birizgálhatod a TX lábat. Ne számíts nagy elérhető baudrate-ra...
A két pic között az uarton kívül az i2c vagy spi kommunikáció nem jó?
Sziasztok,
Tudnátok segíteni nekem egy kicsit? Az a helyzet, hogy ha ez a 2 blokk benne van:
// Kommunikációs hiba ellenőrzés -> overrun szoftveres törlés lehetséges
if (RCSTA.OERR == 1)
{
RCSTA.CREN = 0; // folyamatos adatfogadás letiltva
UART1_send_string("Overrun hiba."); // Elküldjük a hiba okát
//UART1_Write(13); // Kocsivissza
RCSTA.CREN = 1; // folyamatos adatfogadás engedélyezve
}
/* Kommunikációs hiba ellenőrzés -> Framing error a hiba törlése
a RCREG regiszter kiolvasásval lehetséges*/
if (RCSTA.FERR == 1)
{
while (RCSTA.FERR == 1)
{
puffer[0]=RCREG;
puffer[0]='0';
}
UART1_send_string("Frame hiba."); // Elküldjük a hiba okát
//UART1_Write(13); // Kocsivissza
}
Akkor nem villogtatja az RB 7 - es lábon levő ledet. Ha kiveszem, akkor minden rendben van.
De viszont kellene ez a 2 blokk is bele a hibakezelés miatt az UART használatához.
// Fő program
void main() {
cts = 0; // Számláló kezdő értéke 0
initTimer();
// CMCON = 0x07;
// CCP1CON = 0;
TRISA = 0; // Az összes RA láb kimenet
TRISB = 0; // AZ összes RB láb kinenet
PORTB.F6 = 1; // power led alap világít
PORTA.F1 = 0; // relé alap nics meghúzva
UART1_Init(9600); // Inicializáljuk a hardveres UART-ot
Delay_ms(100); // Várunk 100 ms-t a port beállítására
head = 0; // Biztos ami biztos
Del_buffer(); // Buffer törlést csinálunk
UART1_send_string(dev_id); // Elküldjük az inicializálás befejezését
// UART1_Write(13); // Kocsivissza
// UART1_Write(10); // Soremelés
while (1) // Innen fut a pic kód folyamatosan -> végtelen ciklus
{
if (cts >= 5000) // 10000 * 0.1 ms = 1 mp
{
PORTB.F7 = ~PORTB.F7; // B lábak villogtatása
cts = 0; // Számláló reset
}
// Kommunikációs hiba ellenőrzés -> overrun szoftveres törlés lehetséges
if (RCSTA.OERR == 1)
{
RCSTA.CREN = 0; // folyamatos adatfogadás letiltva
UART1_send_string("Overrun hiba."); // Elküldjük a hiba okát
//UART1_Write(13); // Kocsivissza
RCSTA.CREN = 1; // folyamatos adatfogadás engedélyezve
}
/* Kommunikációs hiba ellenőrzés -> Framing error a hiba törlése
a RCREG regiszter kiolvasásval lehetséges*/
if (RCSTA.FERR == 1)
{
while (RCSTA.FERR == 1)
{
puffer[0]=RCREG;
puffer[0]='0';
}
UART1_send_string("Frame hiba."); // Elküldjük a hiba okát
//UART1_Write(13); // Kocsivissza
}
if (UART1_Data_Ready() == 1) /* Van kiolvasható karakter az UART-ban*/
{
puffer[head]= UART1_Read(); /* Beolvassuk a beérkzett byte-ot a buffer
aktuális helyére*/
if (puffer[0]=='o')
{
head++; /* Csak akkor növeljük a buffer mutatót 1-el,
ha az első beérkező karakter az o betű */
}
if (head==5) // Adat összehasonlítás
{
head = 0;
// Ha van bekapcsoló parancs
if (Check_data(on_cm))
{
UART1_send_string(on_cmt);
//UART1_Write(13);
PORTA.F1 = 1;
delay_ms(1000);
PORTA.F1 = 0;
}
Del_buffer(); // Buffer törlést csinálunk
} // Adat összehasonlítás if vége
}
A cts növelése hiányzik. Szegény a kód javítás áldozata lett.
Az Rx láb fel van húzva a Vdd -re?
Szia,
a cts növelése fentebb van a kódban, csak elég nagy és nem akartam felesleges dolgokat bemásolni, nehogy átláthatatlan legyen.
Nincs felhúzva. Csak egy az egyben rákötöm a VDD-re és kész?
Köszi.
Az Rx láb alacsony szintje indítja a vevőt. La lebeg, rengeteg hibásan vett karakter lesz. Ellenállással kellene a Vdd -re húzni.
Működik. Köszönöm szépen a segítséged.
Sziasztok
PIC18F47Q43-at mivel lehet programozni ?
(nem szeretném ha csak pickit4-el lehetne)
A nálam feltelepített MPlab szerint igen (5.3). Szereted vagy sem
Sőt még a PICkit4 sem teljesen támogatja, mert sárgának jelöli.
Sziasztok!
Valamiért, ahogy HIGH lesz az RB4, onnantól kezdve folyamatosan küldi a UART1_send_string(on_cm); - t. Olyan mintha figyelmen kívűl hagyná a PORTB.F4 = 0; - t.
Mit nézek be?
Azt szeretném, ha az RB4 láb HIGH, akkor küldje el a UART1_send_string(on_cm); - t és állítsa vissza az RB4 láb állapotát LOW-ra.
// Fő program
void main() {
cts = 0; // Számláló kezdő értéke 0
initTimer();
// CCP1CON = 0; // Capt/Comp/PWM kikapcsolva
TRISA = 0; // Minden A láb kimenet
TRISB = 0;
Delay_ms(100);
TRISB.F1 = 1; // RB1 (RX) bemenet
PORTB.F6 = 1; // Statusz jelző led bekapcsol
TRISB.F4 = 1; // RB4 bemenet
PORTB.F4 = 0; // RB4 low-ra
UART1_Init(4800); // Inicializáljuk a hardveres UART-ot 4800 baud rate-re
Delay_ms(100); // Várunk 100 ms-t a port beállítására
head = 0; // Biztos ami biztos
UART1_send_string(dev_id); // Elküldjük az inicializálás befejezését
while (1) // Innen fut a pic kód folyamatosan -> végtelen ciklus
{
if (cts >= 5000) // 10000 * 0.1 ms = 1 mp
{
PORTB.F7 = ~PORTB.F7; // B lábak villogtatása
cts = 0; // Számláló reset
}
if(PORTB.F4 == 1)
{
UART1_send_string(on_cm);
Delay_ms(1000); // Várunk 100 ms-t a port beállítására
PORTB.F4 = 0;
}
} // while adat fogadó-küldő ciklus vége
}
A hozzászólás módosítva: Szept 24, 2020
Ha az RB4 bemenet, mindegy, mit írsz a PORTB vagy LATB regiszterbe (38. sor). Ha valami magasan tartja az RB4-et, te kimenetre állítod és L szintre, bajok lehetnek, ha a forrás nincs korlátozva, erre azért figyelj.
Uh, köszi szépen. Akkor átállítom előbb kimenetre és úgy állítom be lowra.
Fordítva célszerűbb.
Egyébként is, mi a célja a bemenetre állításnak a 16. sorban ha utána írod és nem olvasod. A hozzászólás módosítva: Szept 24, 2020
A 34. sorban olvasom, majd a 38.-ban írom.
Tulajdonképpen mi van az RB4-es lábon?
|
|