Fórum témák
- • LCD TV probléma
- • Áram mérése
- • SONY TA-F 590ES MOSFET végfok átalakítása
- • Plazma TV
- • Felajánlás, azaz ingyen elvihető
- • LCD monitor probléma
- • Rendelés külföldről (eBay - Paypal)
- • Quad 405-ös erősítő tapasztalatok és hibák
- • Kombinált gáztűzhely
- • Indukciós főzőlap javítása
- • Erősítő mindig és mindig
- • Akkumulátor töltő
- • Dansk 3f-T3535, és minden, ami vele kapcsolatos
- • Ezt az alkatrészt honnan bontsam ki? (miben találunk ilyen alkatrészt)
- • Leválasztó transzformátor
- • Szobatermosztát bekötése
- • Kapunyitás gombnyomásra olcsón! - avagy automata kapu házilag
- • Vicces - mókás történetek
- • Savas akkumulátor
- • Kondenzátor
- • Napelem alkalmazása a lakás energia ellátásában
- • Parkside akkuk javìtása
- • Autós erősítős kérdések, problémák
- • Crystal radio - detektoros rádió
- • DVB-S Műholdas digitális TV problémák
- • Műveleti erősítő
- • Inverteres hegesztőtrafó
- • Nyomtató probléma
- • Hűtőgép probléma
- • Kávéfőzőgép hiba
- • Kamerás megfigyelőrendszer
- • Transzformátor készítés, méretezés
- • Retro számítógépek
- • Ventilátor vezérlés - ha lekapcsolom a villanyt
- • Számítógép hiba, de mi a probléma?
- • Lítium akummulátor bővítése
- • Emos dori led lámpa villogó hiba
- • Túlfeszültségvédő
- • Szárítógép problémák
- • Sztereó DAC
- • Hegesztő inverter javítás
- • Háromfázisú motor (vezérlése)
- • Villanyszerelés
- • Erősítő építése elejétől a végéig
- • Oszcilloszkóp, avagy hogyan kell használni?
- • A műhely (bemutató topik, ahol az alkotások készülnek)
- • Folyamatábrás mikrokontroller programozás Flowcode-dal
- • Lemezjátszó beállítása, javítása
- • Dobozolási technikák, műszerdobozok
- • Plazmavágó építése házilag
- • Audiofil, High End Audio
- • HESTORE.hu
- • Muzeális készülékek-alkatrészek restaurálása
- • Autórádió (fejegység) problémák, kérdések, válaszok
- • Hangsugárzó építés, javítás - miértek, hogyanok
» Több friss téma
|
Fórum » PIC programozás mikroC fejlesztőkörnyezetben
Szia!
Az adatláb 4,7Kohm-al fel van húzva a Vdd-re és mérhető is rajta a szenzor nélkül az 5 V. A szenzor beépítése után 4.3 V mérhető. Olyan mintha terhelve volna. Lehetséges, hogy a szenzor hibás (ALIEXPRESS)?
Vettem 5bd-t eddig 4 ugyanezt produkálta.
Tárolós szkóppal nézz rá az adatvonalra, egyből látni fogod, hogy mi nem jó.
Ha nincsen tárolós szkóp, a PIC szoftverébe be is lehet rakni az egyes kommunikációs fázisoknak a figyelését és debug információ kiiratását pl. uartra.
Érdemes megnézni a DHT22 angol nyelvű adatlapját, mert tényleg nagyon egyszerű a protokoll.
- adat vonal magas szinten
- lehúzod min. 1ms-re low szintre
- elengeded a lehúzást és vársz 20-40 us-t. Ekkor az adatvolnal magas szinten kell legyen.
- a DHT lehúzza az adatvonalat (80 us)
- a DHT felhúzza az adatvonalat (80 us)
Amiket leírtam, azokat mind tudod ellenőrizni szkóppal, vagy debug kóddal.
Ezt érdemes is lenne megtenni, mert ezek a hibakeresés első lépései.
Szia!
Most már megy a rendszer. A program nem volt megfelelő, nem kezelte korrekt módon az időket,
de most már jónak tűnik.
Az áramkört, tárolós szkóp hiányában analizátorral vizsgáltam, amit alább mutattok meg.
Sziasztok!
Hangot szeretnék kicsalni egy 12F683picből de nem jön ki.
void main()
{
TRISIO=0b0000100;
GPIO=0;
CMCON0=7;
ANSEL=0;
OSCCON=113;
Sound_Init(&GPIO, 5);
while(1)
{
Sound_Play(880, 1000);
}
}
Nem jön ki hang A hozzászólás módosítva: Márc 1, 2024
Belső órajelre állítottad?
Az OSCCON beállítása megtörtént a 113-mal:"0111001" beállítással
bit 6-4 IRCF<2:0>: Internal Oscillator Frequency bits
111 = 8 MHz
bit 3 OSTS: Oscillator Start-up Time-out Status bit
(1)
0 = Device is running the internal oscillator (HFINTOSC or LFINTOSC)
bit 2 HTS: HFINTOSC Status bit (High Frequency – 8 MHz to 125 kHz)
0 = HFINTOSC is not stable
bit 1 LTS: LFINTOSC Stable bit (Low Frequency – 31 kHz)
0 = LFINTOSC is not stable
bit 0 SCS: System Clock bit
1 = Internal oscillator is used for system clock
A config word-ben az FOSC mire van állítva?
100 kellene ahhoz, hogy a GP4 és GP5 IO-nak használható legyen. Szerintem az OSCCON.SCS = 1 kevés ehhez.
Köszönöm szépen! Kijön a hang a picből.
Sziasztok!
Megint bajom támadt a 12F683-mal. Nem tudok megszakítást produkálni. A config word 0FD4, ami 8MHz belső oszcillátort állít be.
int ido, rendben;
//Timer0
//Prescaler 1:8; TMR0 Preload = 6; Actual Interrupt Time : 1 ms
//Place/Copy this part in declaration section
void InitTimer0(){
OPTION_REG = 0x82;
TMR0 = 6;
INTCON = 0xA0;
}
void Interrupt(){
if (T0IF_bit){ // TMR
T0IF_bit = 0;
TMR0 = 6;
//Enter your code here
rendben++;
if(rendben==1000) //1s
{
rendben=0;
ido++; // 120 2óra
GPIO.GP2=~GPIO.GP2;
}
}
}
void main()
{
IOC= 9; // megszakítás engedélyezés a 0,3 bemeneteken
INTCON=0b11001000; //GIE és GPIE bitek engedélyével a perifériás megszakítás engedély
//A GPIF lábat törölni kell megszakítás után
OSCCON=0b01110001; // 8mhz belső oszcillátor
CMCON0=7;
ANSEL=0;
TRISIO=0b00001001; // 0,3 láb bemenet
GPIO=0;
InitTimer0();
}
Nem tudom hol hibáztam?
Hali!
Attól hogy írtál egy void Interrupt() függvényt, még nem fog automatikusan odaugrani int. esetén. Nézd meg a Te fordítódnál hogyan kell pontosan megadni...
Valami hasonló:
void __interrupt() isr(void) //mplabx
static void interrupt isr(void) //mplab
Sziasztok!
Sikerült megszakítást kicsiholni picből de a megszakítás mintegy 7sec múlva indul el. Utána rendesen megy. Van rá magyarázat?
void interrupt() iv 0x0004 ics ICS_AUTO
{
if(T0IF_bit==1)
{
T0IF_bit=0;
TMR0=6;
rendben++;
if(rendben==1000) //1s
{
rendben=0;
ido++; // 120 2óra
GPIO.GP2=~GPIO.GP2;
}
}
}
void main()
{
OPTION_REG = 0x82;
TMR0=255;
// IOC= 9; // megszakítás engedélyezés a 0,3 bemeneteken
// INTCON=0b11001000; //GIE és GPIE bitek engedélyével a perifériás megszakítás engedély
INTCON=0b11101000;
/* INTCON.GIE=1; //globális megszakítás engedély
INTCON.PEIE=1; //perifériás megszakítás engedály
INTCON.T0IE=1; //timer0 tulcsordulás megszakítás engedély
//A T0IF lábat törölni kell megszakítás után
INTCON.GPIE=1; //az input-output lábakon történő változás okozta megszakítás engedély
//A GPIF lábat törölni kell megszakítás után */
OSCCON=0b01110001; // 8mhz belső oszcillátor
CMCON0=7; //komparátor kikapcsolva
ANSEL=0; //analóg csatornék kikapcsolva
TRISIO=0b00001001; // 0,3 láb bemenet
GPIO=0;
while(1)
{
if(ido>60)
{
GPIO.GP1=1; ido=0; delay_ms(500); GPIO.GP4=1;
}
/* if(GPIO.GP0==0)
{
GPIO.GP1=1; delay_ms(500); GPIO.GP4=1;
}
if(GPIO.GP3==0)
{
GPIO.GP1=0; delay_ms(100); GPIO.GP4=0;
} */
}
}
Az ido hol kap kezdő értéket?
És a "rendben" sincs rendben, mert nem kap kezdőértéket....
A változók deklarálásánál kapnak 0 értéket és így már rendben.
|
|