Fórum témák
- • Számítógép hiba, de mi a probléma?
- • Autó akkumulátor töltése 230V nélkül
- • Hangsugárzó építés, javítás - miértek, hogyanok
- • Kombikazán működési hiba
- • ZC-18 kazán
- • Elektromos ágymelegítők
- • Érdekességek
- • DSP - Miértek, hogyanok
- • TV hiba, mi a megoldás?
- • Napelem alkalmazása a lakás energia ellátásában
- • Vicces - mókás történetek
- • Erősítő mindig és mindig
- • Felajánlás, azaz ingyen elvihető
- • Autórádió (fejegység) problémák, kérdések, válaszok
- • DC-DC konverter
- • Keringető szivattyú
- • Szinuszos Inverter Javitás
- • Multiméter problémák
- • Univerzális távirányító
- • Távirányító javítás
- • Villanyszerelés
- • Klíma beszerelése, fűtés-hűtés házilag
- • Arduino
- • Börze
- • Elektronikai témájú könyvek újságok
- • Padlófűtés vezérlés
- • 230V-os motor fordulatszám vezérlése
- • Porszívó javítás
- • Számlapok és előlapok készítése
- • Lemezjátszó beállítása, javítása
- • Kazettás magnó (deck) javítása
- • Vásárlás, hol kapható?
- • Mosogatógép hiba
- • Transzformátor készítés, méretezés
- • Li-Po - Li-ion akkumulátor és töltője
- • Akkumulátor töltő
- • Kávéfőzőgép hiba
- • Mosógép vezérlők és általános problémáik
- • Szünetmentes táp javítása, élesztése
- • SMD forrasztás profin
- • Rádió építés a kezdetektől a világvevőig
- • Hűtőgép probléma
- • Elektromos kerékpár, robogó házilag
- • Indukciós hevítő készítése
- • Labortápegység készítése
- • Gázkazán vezérlő hibák
- • Kompresszor hiba
- • Elektromágneses rázóasztal
- • V-FET és SIT erősítő kapcsolások
- • Hörmann kapuk
- • Szárítógép problémák
- • Színes, animált kijelzésű hangfrekvenciás spektrum-analizátor
- • Lézergravírozás
- • Proteus
- • Laptop javítás, tuning
» 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?
|
|