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
 
Balů
Profesionál
Profesionál


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

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

Tak ještě zkus prodloužit ten delay třeba na 40 us. Teoreticky můžeš až na 60, ale musíš se stihnout vrátit na začátek smyčky ještě před náběžnou hranou bitu ...
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, 20:46    Předmět: Citovat

Teď si tedy hrajujes tím delay. Zkusil jsem ho zakomentovat a stejně mi to píše:
Byte 1: 1
Byte 2: 1
Vlhkost: 257

ale předpokládal bych, že by to mělo vypsat maximální hodnotu když budou všechny bity v jedničce 1111111111111111 = 65535.
Nemůže být chyba v

kód:

       i|= (1 << (7 - j));  //Nastaví bit do 1

já tomu řádku teda vůbec radši nerozumím Smile

No možní rozumím, on jedničku vepíše do pozice (7 - j) a pak to jako přepíše i? Pochopil jsem to správně

_________________
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: 14 leden 2016, 21:02    Předmět: Citovat

Delay musíš nechat, ten je tam k tomu abys vzorkoval ten vstupující bit na správným místě, ale zkus ho prodloužit na těch 50, 60 cca (klidně i postupně nadvakrát).

Ten řádek je bitovej posun, nasouváš jedničku na určený místo, akorát mě tak dochází že to by vlastně mohl bejt ten problém. Jednak podle poslední verze programu nenasouváš nuly (neposouváš prázdné pozice bitů), takže nebudou vycházet pozice těch bitů oproti podobě vstupujícího signálu, a druhak se nemusí v každým průchodu cyklem posouvat o 'i', ale jen o jednu.
Návrat nahoru
 

 
Anonymní






PříspěvekZaslal: 14 leden 2016, 21:05    Předmět: Citovat

o 'j', pardon (resp. o 7 - j), ale věřím že víte co chci říct.
Návrat nahoru
 

 
Balů
Profesionál
Profesionál


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

PříspěvekZaslal: 14 leden 2016, 21:05    Předmět: Citovat

Ne - chyba je ve funkci ReadData v řádku
kód:
i = 0;
uvnitř smyčky for ( j ... ). V každý smyčce nuluješ i, tak se nemůžeš divit, že na výstupu dostáváš jenom poslední bit. Tam to nemá co dělat. To musí zůstat jenom před smyčkou.

Ten řádek
kód:
        i|= (1 << (7 - j));  //Nastaví bit do 1
dělá následující :

vezme jedničku a posune ji na pozici (7 - j) - tedy 7,6,5,...,0 (0x80,0x40,0x20, ... ,0x01) a pokaždé ji logicky přičte do i. Jenže na začátku cyklu si vždy i vynuluješ, což je chyba ...

Není tam i=(1<<(7-j));, ale i|=(1<<(7-j)); totéž jako i := i or 2^(7-j)
Snad jsem ten Pascalovskej zápis nezpackal.

Když s Cčkem začínáš, tak :

A+=2; odpovídá A = A + 2;
A<<=1; odpovídá A = A << 1;
A*=7; odpovídá A = A * 7;

atd.
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, 21:23    Předmět: Citovat

No ale to i = 0; mám před začátkem smyčky for

kód:
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;
 }


Právě že jsem to delay zakomentoval, aby to muselo vyčíst 1, což mi neudělalo

_________________
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, 21:26    Předmět: Citovat

Pardón, teď na to čumím a ono tam fakt je Very Happy

A FUNGUJE TO!!!!!!!!!!!!!!!!!!!!!!

Díky chlapci 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
 

 
Balů
Profesionál
Profesionál


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

PříspěvekZaslal: 14 leden 2016, 21:33    Předmět: Citovat

A když už jsme u Cčka, tak je rozdíl mezi A++; a ++A;. Na první pohled je to stejné - k A se přičte 1. Rozdíl je však "v načasování" :

kód:
A = 2;
B = ++A;

Výsledek : B=3, A=3


kód:
A = 2;
B = A++;
Výsledek : B=2, A=3


Je to proto, že u B = ++A; se nejdříve provede inkrementace a pak teprve přiřazení.
U B = A++; je to opačně - nejdříve se provede přiřazení a pak teprve inkrementace.

Ovšem POZOR ! Ne vždycky inkrementace znamená zvětšení o 1. Pokud máš třeba pointer na int, pak inkrementace pointeru znamená, že se zvětší o sizeof(int), ale tím se zatím nazatěžuj.


Naposledy upravil Balů dne 15 leden 2016, 10:07, 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: 728

PříspěvekZaslal: 14 leden 2016, 21:34    Předmět: Citovat

Gratuluju k vítězství. A teď můžeš pokračovat dál ... Přeju hodně programátorských úspěchů.
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, 21:35    Předmět: Citovat

Aji teplota funguje!!!!!! Teplota 26 °C a Vlhkost 36 % Smile

Kluci, nejste z Brna?

_________________
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: 728

PříspěvekZaslal: 14 leden 2016, 21:37    Předmět: Citovat

Ne - Jižní Čechy - okolí ČB.
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, 21:40    Předmět: Citovat

No tak to na pivo nevypadá :-/
_________________
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: 728

PříspěvekZaslal: 14 leden 2016, 21:41    Předmět: Citovat

Tak až půjdeš s kámošema, tak si dej jedno za mně.
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, 21:52    Předmět: Citovat

Jedno? To aspoň 10, ale budou mě asi muset táhnout 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: 14 leden 2016, 22:04    Předmět: Citovat

Já jsem z olomoucka, ale do Brna občas jezdím (jezdím Confused s volantem v rukou)
Návrat nahoru
 

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 7 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)