forum.mcontrollers.com - hlavní stránka forum.mcontrollers.com - fórum

 

.: fórum - hlavní stránka :.
Technology Stronghold by Rudolf Vesely
How to build Microsoft System Center hosted cloud series
FAQFAQ HledatHledat Seznam uživatelůSeznam uživatelů Uživatelské skupinyUživatelské skupiny RegistraceRegistrace
ProfilProfil StatistikaStatistika Soukromé zprávySoukromé zprávy PřihlášeníPřihlášení

 
PIC16F877 + DHT22
Jdi na stránku Předchozí  1, 2, 3, 4, 5, 6, 7, 8  Další
 
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> Microchip
 
Anonymní






PříspěvekZaslal: 13 leden 2016, 18:49    Předmět: Citovat

Nech si ty osobní invektivy, jo (myslím tu poslední větu)? Od toho tu nejsme, abysme si nadávali. Už jsem tu jednou psal že z toho záznamu z pseudoanalyzéru nejsem moc chytrej.

Jo, to vím taky že nemá značku tam kde ji má mít. Když se něco ladí, tak se značky (jo, to je ten toggling) dělají proto, abysme viděli, ne proto aby se něco dopočítávalo, dělat značku před čekací smyčkou tedy jaksi postrádá význam.

Počkám až to změní a s čím pak přijde.
Návrat nahoru
 

 
Balů
Profesionál
Profesionál


Založen: 29.10.2012
Příspěvky: 708

PříspěvekZaslal: 13 leden 2016, 20:44    Předmět: Citovat

OK - připouštím, že jsem tu poslední větu trošku přehnal, nicméně - pokud datagramu 100% nerozumíš, tak se nemá smysl hádat do bezvědomí. Totéž platí u datasheetů a vlastně úplně u všeho...

Anonymous napsal:
... nespoléhal bych moc na to že nula bude vždy max. 28µs a víc ani pikosekunda). ...


V tom případě mi vysvětli, k čemu ty datasheety jsou ? Když vezmu datasheet třeba ke stabilizátoru 7805, tak se tam dočtu, že výstupní napětí je :
min. 4,8V, typ. 5V, max. 5,2V => 5V +-0,2V

To znamená, že je tam tedy kolik ? 2-48V (případně nějaké jiné) nebo 4,8-5,2V ? Úplně to samé platí pro časy uvedené v datasheetu DHT22. 0 je 22-30us a přes to vlak nejede.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Anonymní






PříspěvekZaslal: 13 leden 2016, 21:35    Předmět: Citovat

To je jen tvůj pocit, že tomu nerozumím. Taky mám různé pocity, ale jelikož jsem se nepřišel hádat, nechávám je stranou.

Máš pravdu v tom že výrobce neuvádí rozsahy parametrů pro nic za nic, ale myslel jsem to tak, že rozhodně není optimální pohybovat se na jejich hranicích (35µs je taková hranice, střed je jinde když si trochu započítáš. Chápu že kód má nějakou režii, a tu bych právě pro zajímavost rád viděl na tom záznamu*), ale spíš myslet dopředu a připravit se na víc eventualit (včetně např. vadného čidla, jak jsi správně podotkl s těmi timeouty, nebo třeba rušení na lince apod). K tomu jako jeden z prostředků mimochodem slouží i ten kontrolní součet co čidlo posílá na konci, jistě to nemusím probírat dopodrobna (stejně tak jako nekritizuju jeho nevyužití v kódu, to je jeho rozhodnutí jestli součet využije nebo ne, a jeho případná rizika. Já jen zmiňuju že tu ta možnost je, nemá to žádný emocionální ani jiný podtext, takže bych byl nerad, kdyby si ho tam někdo svévolně dosazoval).

Rozhodně nemůžeš popřít že jednoduchá úprava kódu za účelem zpřehlednění záznamu je krok dopředu (a předtím jsem hovořil právě jen a pouze o tom, jak ten záznam vypadá - vím proč tak vypadá, nemusíš mi to vysvětlovat), cílem teď je aby vypadal líp a víc tak vypovídal o tom, co se přesně děje. Pak totiž zřejmě vyplavou na povrch další věci, které teď nejsou moc dobře vidět.
____________
*Nevím co umožňuje ten PK analyzér, ale jestli to dobře chápu** tak stejně máme malou vzorkovací frekvenci, jeden systick toho PICu je 500ns aktuálně.

**Neplést si zdvořilost s blbostí prosím, a to obecně všude, ne jen tady… Děkuji.
Návrat nahoru
 

 
B0sc0
Profesionál
Profesionál


Založen: 28.1.2011
Příspěvky: 213
Bydliště: Absurdistán nebo Banánová republika

PříspěvekZaslal: 13 leden 2016, 22:18    Předmět: Citovat

Tak jsem dal ten toogle hned za to čekání a podle mě to tak má být.
Mělo by to být 0000000101101001 což je 361/10=36,1% to by snad mohla být vlhkost v pokoji.
Ale na GLCD mi to zobrazuje hodnotu 257 a nebo 256, ještě jsem ji nedělil 10.
Což mě napadá, že že 256 je vlastně první byte posunutý o 8 doleva ale nevím, proč tam je jako druhý byte 0 a nebo 0.

Pro to spojení byte používám
kód:
   vlhkost = (RH_byte1 << 8 )| RH_byte2;

Což si myslím, že by mělo fungovat.
Když dám zobrazit na druhém řádku číslo měření a na 6. vlhkost tak tam mám těch 257 nebo 256.
Pokud tam k přidám zobrazení jednotlivých byte vlhkosti na 4. a 5. řádek, tak mi to z nějákého důvodu na číslu měření napíše 8225, na vlhkosti 8224 a na těch jednotlivých byte vlhkosti - Byte1 0 a na Byte2 0 nebo 1ku.
Nechápu proč, číslo měření by mělo jít od nuly nahoru a ne v prvním cyklu hned na 8225.

Myslím,že tak jak jsem to popsal, tak to nemůže nikdo pochopit. Pro jistotu tu dám zase kód při kterým to vypisuje pouze číslo měření a vlhkost.
kód:
//     DHT22 knihovna
unsigned char  Check;


void StartSignal()
{
   TRISA = 0b00000000;    //PORTA je výstup
   RA0 = 0;    //RA0 jde do 0 = startovacísignál
   __delay_ms(18);//18
    RA0 = 1;    //RA0 se vrací do 1
   __delay_us(30);
    TRISA = 0b11111111;    //PORTA je vstupní
}

void CheckResponse()
{
   Check = 0;
   __delay_us(40);
   if (RA0 == 0)
   {
       __delay_us(80);//80
       if (RA0 == 1)   
         Check = 1;   
      __delay_us(40);//40
   }
}
int ReadData()
{
    int i=0, j;
    for(j = 0; j < 8; j++)
   {
      i = 0;
       while(RA0 == 0); //Čeká dokud je RA0 v 0
       __delay_us(35);//30 hranice mezi log 0 a log 1
      RC6 = ~RC6;
       if(RA0 == 1) //Zkouší, zda je RA0 po uplynulé době v 1 čí 0
      {
        i|= (1 << (7 - j));  //Nastaví bit do 1
        while(RA0 == 1); //Čeká dokud je RA0 v 1
      }
    }
    return i;
 }

void main(void)
{
   PSPIE = 0;
   PSPMODE = 0;
      ADCON1 = 7;
      TRISA = 0b00000000;
      TRISB = 0b00000000;
      TRISC = 0b00000000;
      TRISD = 0b00000000;
   
      GLCD_Init();
      __delay_ms(100);
      GLCD_ClrScr();
   
      int i = 0;
      char text1[16];
      char text2[16];
      char text3[16];
      char text4[16];
      char text5[16];
      char text6[20];
   
      GLCD_ClrScr();
          
        int T_byte1, T_byte2, RH_byte1, RH_byte2;
    int Temp, RH, Sum ;
   
      TRISA = 0b00000000;    //RA0 jako vstup
      TRISC = 0b00000000;
      int a = 0;

      unsigned int teplota =  0;
      unsigned int vlhkost =  0;

   while(1)
   {     
     RH_byte1 = 0;
      RH_byte2 = 0;
      T_byte1 = 0;
      T_byte2 = 0;
      teplota = 0;
      vlhkost = 0;       



      StartSignal();
      CheckResponse();

      RH_byte1 = ReadData();
      RH_byte2 = ReadData();
       //T_byte1 = ReadData();
       //T_byte2 = ReadData();
       //Sum = ReadData();

   vlhkost = (RH_byte1 << 8 )| RH_byte2;

       GLCD_ClrScr();

      sprintf(text5,"Mereni: %d                ",a);
      GLCD_text(0, 1,text5 );
      /*sprintf(text1,"Byte 1: %d               ",RH_byte1);
      GLCD_text(0, 3,text1 );
      sprintf(text2,"Byte 2: %d               ",RH_byte2);
      GLCD_text(0, 4,text2 ); */

      sprintf(text6,"Vlhkost:%d             ",vlhkost);
      GLCD_text(0, 5,text6 );

     a++;

      RC7 = 1;
      __delay_ms(500);
      RC7 = 0;
      __delay_ms(500);

   }//end while(1)
}//end main


Se divím, že jste mě ještě neposlali někam Smile

_________________
MPLAB + HI-TECH + PICKIT2
Zatím jenom amatér Smile a asi i navždy :-/
SMT technolog+vše okolo LED modulů
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
 

 
Anonymní






PříspěvekZaslal: 13 leden 2016, 22:27    Předmět: Citovat

To je to co už jsem jednou psal - vyčteš 16 bitů, čidlo si vesele posílá dál, ale ty nepočkáš až „dokecá” a hned to tam pošleš znova, takže pak odchytáváš blbosti.
Návrat nahoru
 

 
Anonymní






PříspěvekZaslal: 13 leden 2016, 22:36    Předmět: Citovat

Aha kecám, máš na konci dvě půlsekundy, ty jsem přehlídnul.

Dej asi i ten záznam radši, jestli máš…
Návrat nahoru
 

 
B0sc0
Profesionál
Profesionál


Založen: 28.1.2011
Příspěvky: 213
Bydliště: Absurdistán nebo Banánová republika

PříspěvekZaslal: 13 leden 2016, 22:36    Předmět: Citovat

Odchytávat bordel přece nemůžu, než se provedou všechny ty sprintf, zobrazení a ještě tam mám delay na konci, tak to čidlo už má dávno dovysíláno.
_________________
MPLAB + HI-TECH + PICKIT2
Zatím jenom amatér Smile a asi i navždy :-/
SMT technolog+vše okolo LED modulů
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
 

 
Anonymní






PříspěvekZaslal: 13 leden 2016, 22:44    Předmět: Citovat

Jj vím, vidím, už jsem psal. To víš, někteří nemají monitor s PIVOTem, a navíc si neberu pokaždý brejle Very Happy
Návrat nahoru
 

 
B0sc0
Profesionál
Profesionál


Založen: 28.1.2011
Příspěvky: 213
Bydliště: Absurdistán nebo Banánová republika

PříspěvekZaslal: 13 leden 2016, 22:44    Předmět: Citovat

Záznam? Co tím myslíš, video jak to jede?
_________________
MPLAB + HI-TECH + PICKIT2
Zatím jenom amatér Smile a asi i navždy :-/
SMT technolog+vše okolo LED modulů
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
 

 
Balů
Profesionál
Profesionál


Založen: 29.10.2012
Příspěvky: 708

PříspěvekZaslal: 13 leden 2016, 22:45    Předmět: Citovat

Anonymous napsal:
Nevím co umožňuje ten PK analyzér, ale jestli to dobře chápu tak stejně máme malou vzorkovací frekvenci, jeden systick toho PICu je 500ns aktuálně.


Já tenhle analyzer neznám (mimochodem - není ten analyzer sw funkce programátoru ?), používám Saelae, ale co v datagramu vidím, tak podle posunu některých náběžných a sestupných hran vůči těm malým dílkům (10us), tak bych řekl, že má vzorkovací frekvenci 1 možná 2 MHz, což by odpovídalo 1us nebo 500ns. Pro tenhle průběh je to vzorkovací kmitočet dostačující. Ale třeba na snímání komunikace s některými LCD, kde je minimální šířka impulzu 1us už by to nestačilo.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
B0sc0
Profesionál
Profesionál


Založen: 28.1.2011
Příspěvky: 213
Bydliště: Absurdistán nebo Banánová republika

PříspěvekZaslal: 13 leden 2016, 22:50    Předmět: Citovat

JJ, je to dělaný přes programátor PICkit2. Klon Saelae už je na cestěněkde,ale bude to trvat.
Sample rate mám 250 kHz.

_________________
MPLAB + HI-TECH + PICKIT2
Zatím jenom amatér Smile a asi i navždy :-/
SMT technolog+vše okolo LED modulů
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
 

 
Balů
Profesionál
Profesionál


Založen: 29.10.2012
Příspěvky: 708

PříspěvekZaslal: 13 leden 2016, 23:17    Předmět: Citovat

B0sc0:
1) Texty máš nadefinovaný krátký a funkcemi sprintf píšeš i za pozice vyhrazené pro text.

Například :
kód:
      char text5[16];
.
.
.

      sprintf(text5,"Mereni: %d                ",a);

Jenže řetězec
kód:
"Mereni: %d                "
má 24 znaků + délka textu hodnoty proměnné a + ukončovací 0 => tedy minimálně 26 znaků.

Nadefinuj jenom jeden řetězec a klidně ho po vytisknutí na LCD přepisuj.
kód:
      char text[64];
.
.
.

      sprintf(text,"Mereni: %d                ",a);
      GLCD_text(0, 1,text);
      sprintf(text,"Vlhkost:%d             ",vlhkost);
      GLCD_text(0, 5,text);




2)
kód:
   vlhkost = (RH_byte1 << 8 )| RH_byte2;


by chodit mělo, a pokud ne, zkus tam místo toho dát toto :

kód:
   vlhkost = (RH_byte1 * 256) + RH_byte2;


P.S.: Pokud vidím snahu, tak proč bych nepomohl, když můžu.


Naposledy upravil Balů dne 13 leden 2016, 23:32, celkově upraveno 1 krát.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Balů
Profesionál
Profesionál


Založen: 29.10.2012
Příspěvky: 708

PříspěvekZaslal: 13 leden 2016, 23:31    Předmět: Citovat

B0sc0 napsal:
Záznam? Co tím myslíš, video jak to jede?


Video ne, řekl bych, že měl na mysli datagram z PK analyzátoru.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
B0sc0
Profesionál
Profesionál


Založen: 28.1.2011
Příspěvky: 213
Bydliště: Absurdistán nebo Banánová republika

PříspěvekZaslal: 14 leden 2016, 10:20    Předmět: Citovat

Analyzátor je na cestě, donde cca do měsíce. Takže pak už to bude trošku víc profi. Na to moje domácí bastlení mi zatím stačil ten PICkit. Jinak díky za moře rad. Ty poslední zkusím dneska večer Smile
_________________
MPLAB + HI-TECH + PICKIT2
Zatím jenom amatér Smile a asi i navždy :-/
SMT technolog+vše okolo LED modulů
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
 

 
B0sc0
Profesionál
Profesionál


Založen: 28.1.2011
Příspěvky: 213
Bydliště: Absurdistán nebo Banánová republika

PříspěvekZaslal: 14 leden 2016, 20:17    Předmět: Citovat

Tak jsem to zpravil podle posledních rad. Bohužel mám asi podezdření, že to špatně vyčítá, jelikož to vyčte a zobrazí následující:

Byte 1: 1
Byte 2: 1
Vlhkost: 257

a nebo

Byte 1: 1
Byte 2: 0
Vlhkost: 256

což ten výpočet funguje dobře, ale to vyčítání asi ne.
První byt by měl být 1, ale druhý něco okolo 105.

Asi to teď dám k ledu, nějak mi nejde rozchodit datalogger, počkám na ten profesionálnější alespoň budou pořádný průběhy.

_________________
MPLAB + HI-TECH + PICKIT2
Zatím jenom amatér Smile a asi i navždy :-/
SMT technolog+vše okolo LED modulů
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
 

Zobrazit příspěvky z předchozích:   
Zobrazit předchozí téma :: Zobrazit následující téma  
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> Microchip Časy uváděny v GMT + 2 hodiny
Jdi na stránku Předchozí  1, 2, 3, 4, 5, 6, 7, 8  Další
 
Strana 6 z 8
Přejdi na:  
Můžete přidat nové téma do tohoto fóra.
Můžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Můžete k příspěvkům připojovat soubory
Můžete stahovat a prohlížet přiložené soubory
 



Num Lock Holder - app to hold Numlock
Copyright © 2017 Rudolf Veselý, mcontrollers.com.
Je zakázáno používat části tohoto webu bez souhlasu autora. || Powered by phpBB © 2001, 2002 phpBB Group - with RedSquare DoubleJ(Jan Jaap)