Fórum témák

» Több friss téma
Fórum » PIC programozás mikroC fejlesztőkörnyezetben
Lapozás: OK   10 / 10
(#) glaci válasza kaqkk hozzászólására (») Júl 22, 2023 /
 
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.
(#) superuser válasza glaci hozzászólására (») Júl 22, 2023 /
 
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.
(#) glaci válasza superuser hozzászólására (») Júl 25, 2023 /
 
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.
(#) glaci hozzászólása Márc 1, 2024 /
 
Sziasztok!
Hangot szeretnék kicsalni egy 12F683picből de nem jön ki.
  1. void main()
  2. {
  3.    TRISIO=0b0000100;
  4.    GPIO=0;
  5.    CMCON0=7;
  6.    ANSEL=0;
  7.    OSCCON=113;
  8.    Sound_Init(&GPIO, 5);
  9.   while(1)
  10.   {
  11.       Sound_Play(880, 1000);
  12.   }
  13. }


Nem jön ki hang
A hozzászólás módosítva: Márc 1, 2024
(#) Hp41C válasza glaci hozzászólására (») Márc 1, 2024 /
 
Belső órajelre állítottad?
(#) glaci válasza Hp41C hozzászólására (») Márc 1, 2024 /
 
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
(#) majkimester válasza glaci hozzászólására (») Márc 1, 2024 /
 
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.
(#) glaci válasza majkimester hozzászólására (») Márc 1, 2024 /
 
Köszönöm szépen! Kijön a hang a picből.
(#) glaci hozzászólása Vas, 22:14 /
 
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.

  1. int ido, rendben;
  2.  //Timer0
  3. //Prescaler 1:8; TMR0 Preload = 6; Actual Interrupt Time : 1 ms
  4.  
  5. //Place/Copy this part in declaration section
  6.  
  7.  
  8.  
  9. void InitTimer0(){
  10.   OPTION_REG         = 0x82;
  11.   TMR0                 = 6;
  12.   INTCON         = 0xA0;
  13. }
  14.  
  15. void Interrupt(){
  16.   if (T0IF_bit){         //  TMR
  17.     T0IF_bit         = 0;
  18.     TMR0                 = 6;
  19.     //Enter your code here
  20.  
  21.     rendben++;
  22.     if(rendben==1000)     //1s
  23.      {
  24.        rendben=0;
  25.        ido++;                  // 120   2óra
  26.        GPIO.GP2=~GPIO.GP2;
  27.  
  28.      }
  29.    
  30.   }
  31.  
  32. }
  33.  
  34.  
  35.  
  36. void main()
  37. {
  38.  
  39.    IOC= 9;           // megszakítás engedélyezés a 0,3 bemeneteken
  40.    INTCON=0b11001000;  //GIE és GPIE bitek engedélyével a perifériás megszakítás engedély
  41.                         //A GPIF lábat törölni kell megszakítás után
  42.    OSCCON=0b01110001;   // 8mhz belső oszcillátor
  43.    CMCON0=7;
  44.  
  45.    ANSEL=0;
  46.  
  47.    TRISIO=0b00001001;    // 0,3 láb bemenet
  48.    GPIO=0;
  49.    InitTimer0();
  50.  
  51. }


Nem tudom hol hibáztam?
(#) pipi válasza glaci hozzászólására (») Vas, 23:09 /
 
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
(#) pipi válasza pipi hozzászólására (») Hé, 0:18 /
 
Lehet csak annyi a baj hogy nagy kezdőbetűvel írtad?
https://download.mikroe.com/documents/compilers/mikroc/pic/help/int...ts.htm
Nem ismerem a mikroc-t, bocs ha hülyeséget írok
(#) glaci hozzászólása Hé, 13:38 /
 
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?

  1. void interrupt() iv 0x0004 ics ICS_AUTO
  2.  {
  3.      if(T0IF_bit==1)
  4.      {
  5.          T0IF_bit=0;
  6.          TMR0=6;
  7.              rendben++;
  8.      if(rendben==1000)     //1s
  9.      {
  10.        rendben=0;
  11.        ido++;                  // 120   2óra
  12.        GPIO.GP2=~GPIO.GP2;
  13.          
  14.      }
  15.      }
  16.  }
  17.  
  18.  
  19. void main()
  20. {
  21.   OPTION_REG         = 0x82;
  22.   TMR0=255;
  23.   // IOC= 9;           // megszakítás engedélyezés a 0,3 bemeneteken
  24.   // INTCON=0b11001000;  //GIE és GPIE bitek engedélyével a perifériás megszakítás engedély
  25.  
  26.   INTCON=0b11101000;
  27.   /* INTCON.GIE=1;  //globális megszakítás engedély
  28.    INTCON.PEIE=1;  //perifériás megszakítás engedály
  29.    INTCON.T0IE=1;  //timer0 tulcsordulás megszakítás engedély
  30.                     //A T0IF lábat törölni kell megszakítás után
  31.    INTCON.GPIE=1;  //az input-output lábakon történő változás okozta megszakítás engedély
  32.                     //A GPIF lábat törölni kell megszakítás után  */
  33.    OSCCON=0b01110001;   // 8mhz belső oszcillátor
  34.    CMCON0=7;         //komparátor kikapcsolva
  35.  
  36.    ANSEL=0;          //analóg csatornék kikapcsolva
  37.  
  38.    TRISIO=0b00001001;    // 0,3 láb bemenet
  39.    GPIO=0;
  40.  
  41.    while(1)
  42.    {
  43.        if(ido>60)
  44.        {
  45.          GPIO.GP1=1; ido=0; delay_ms(500); GPIO.GP4=1;
  46.        }
  47.      /*  if(GPIO.GP0==0)
  48.        {
  49.         GPIO.GP1=1; delay_ms(500); GPIO.GP4=1;
  50.        }
  51.        if(GPIO.GP3==0)
  52.        {
  53.         GPIO.GP1=0; delay_ms(100); GPIO.GP4=0;
  54.        } */
  55.    }
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62. }
(#) Gafly válasza glaci hozzászólására (») Hé, 13:54 /
 
Az ido hol kap kezdő értéket?
(#) pipi válasza glaci hozzászólására (») Hé, 16:19 /
 
És a "rendben" sincs rendben, mert nem kap kezdőértéket....
(#) glaci válasza pipi hozzászólására (») Hé, 18:25 /
 
A változók deklarálásánál kapnak 0 értéket és így már rendben.
(#) glaci válasza glaci hozzászólására (») Hé, 18:25 /
 
Köszönöm szépen!
Következő: »»   10 / 10
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.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