Vítejte na Elektro Bastlírn?
Nuke - Elektro Bastlirna
  Vytvořit účet Hlavní · Fórum · DDump · Profil · Zprávy · Hledat na fóru · Příspěvky na provoz EB

Vlákno na téma KORONAVIRUS - nutná registrace


Nuke - Elektro Bastlirna: Diskuzní fórum

 FAQFAQ   HledatHledat   Uživatelské skupinyUživatelské skupiny   ProfilProfil   Soukromé zprávySoukromé zprávy   PřihlášeníPřihlášení 

Převod z desítkové do dvojkové soustavy
Jdi na stránku Předchozí  1, 2, 3, 4, 5  Další
 
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
lesana87



Založen: Sep 20, 2014
Příspěvky: 3328

PříspěvekZaslal: čt únor 23 2017, 21:29    Předmět: Citovat

Možná kdyby sis o C něco přečetl od základů, ne jen předstíral, že v něm programuješ, neměl bys tak přiblblé dotazy a názory. Aspoň mně přijde přizpůsobení velikosti datových typů konkrétní architektuře jako celkem logické. Ale přečíst si nejdřív manuál holt dneska není kůl a in, to je jen pro lůzry. Rolling Eyes
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
mtajovsky



Založen: Sep 19, 2007
Příspěvky: 3697
Bydliště: Praha

PříspěvekZaslal: so únor 25 2017, 14:44    Předmět: Citovat

markoni napsal(a):
Jé já myslel že 16 bitů největší hodnota 65535 dec ,tak jaký datový typ je potřeba?díky ...Tak to mě je to už jasné ,v C plaťí každá ves jiný pes !!!!...
Proto je, zejména u embedded programování, lépe používat pro integrální proměnné explicitní typy, které rovnou říkají velikost a jestli jsou znaménkové. Protože je to platformově závislé, bývá definice takových typů součástí knihoven nebo toolchain překladače nebo je lze pro danou platformu nadefinovat v projektu. Nejčastěji můžeme použít hlavičkový soubor stdint.h, který mj. obsahuje například následující definice integrálních typů:
kód:
    typedef signed char int8_t;
    typedef unsigned char uint8_t;
    typedef signed int int16_t;
    typedef unsigned int uint16_t;
    typedef signed long int int32_t;
    typedef unsigned long int uint32_t;
    typedef signed long long int int64_t;
    typedef unsigned long long int uint64_t;
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
markoni



Založen: Oct 30, 2006
Příspěvky: 2310
Bydliště: Poblíž Zlína

PříspěvekZaslal: st březen 01 2017, 16:43    Předmět: Citovat

Už jsem došel s vydatnou pomocí nejen od kolegů s tohoto fóra až k tomuto kroku kdy chci zobrazit teplotu čidla v hyper terminálu pro Win10 na PC.
Problém je nastavení rychlosti sériové linky.Když dám 9600 tak v logu překladače je nepatrná odchylka od nastavené rychlosti,při nastavení rychlosti 300 překladač nic nenamítá vyzkoušeny všechny varianty vis příloha ale bohužel hyper terminál se zasekne co s tým ? díky



Baud rate.jpg
 Komentář:

Stáhnout
 Soubor:  Baud rate.jpg
 Velikost:  245.32 kB
 Staženo:  94 krát

Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
mtajovsky



Založen: Sep 19, 2007
Příspěvky: 3697
Bydliště: Praha

PříspěvekZaslal: čt březen 02 2017, 15:49    Předmět: Citovat

V první řadě bych přestal používat Hyperterminal, protože ten je určen primárně na spolupráci s modemem a otravuje s nastavením telefonního čísla, zvedáním vidlice atd. Pro práci s daty na RS232 COM používám Hercules terminál, který se nezasekává, neotravuje s žádným telefonem a umí i TCP a UDP.

Co to znamená "všechny varianty" - bylo laborováno s počtem stop bitů, paritou a s řízením přes stavové signály RS232?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
markoni



Založen: Oct 30, 2006
Příspěvky: 2310
Bydliště: Poblíž Zlína

PříspěvekZaslal: čt březen 02 2017, 17:39    Předmět: Citovat

Uart je v pořádku podle mě viz příloha ,ale zatím neví o čidlu že je tam Very Happy a tak krásně mě to v simulátoru fungovalo.Musím se pohrát pull up odporem který je na čidlu doufám že to pomůže.A co se týká té rychlosti napřed jsem v MCU měl Baud 300 a pak jsem přepálil firmware s nastaveným 9600 a zdá se že to funguje .Jinak díky za typ na terminál
kód:
void main() {
    char str[17];
    unsigned int temp;
    unsigned char temp_s,temp_d,temp_j,zbytek;
    TRISA1_bit = 1;         //uprava tlacitko
    CMCON      = 0x07;

    Sound_Init(&PORTA, 0);
    Sound_Play(500, 1000);
    UART1_Init(9600);       // If you see greek alpha letter try typing 178 instead of 223
    UART1_Write_text("Teplomer v.1 3.2017\n\r");
    // main loop - in the
    do {
        //--- Perform temperature reading
        Ow_Reset(&PORTA, 2);          // Onewire reset signal
        Ow_Write(&PORTA, 2, 0xCC);    // Issue command SKIP_ROM
        Ow_Write(&PORTA, 2, 0x44);    // Issue command CONVERT_T
        Delay_ms(1000);               // puvodne 120

        Ow_Reset(&PORTA, 2);          // Onewire reset signal
        Ow_Write(&PORTA, 2, 0xCC);    // Issue command SKIP_ROM
        Ow_Write(&PORTA, 2, 0xBE);    // Issue command READ_SCRATCHPAD

        temp =  Ow_Read(&PORTA, 2);
        temp += Ow_Read(&PORTA, 2)<<8;
        temp= temp /16;
        temp_s = temp / 100;
        zbytek = temp % 100;
        temp_d  = zbytek / 10;
        temp_j = zbytek % 10;
        //sprintl(bufer,"%i",temp);
        // word_to_bin(tempi, str);
         //Uart1_write_text(str);
         uart1_write(temp_s+48);
         uart1_write(temp_d+48);
         uart1_write(temp_j+48);
        //UART1_Write_text(str);
        UART1_Write_text("\n\r");

        if (temp == 40)
            Sound_Play(980,1000);
        }

        Delay_ms(500);

    } while (1);
}



teplota v terminalu.jpg
 Komentář:

Stáhnout
 Soubor:  teplota v terminalu.jpg
 Velikost:  282.97 kB
 Staženo:  100 krát


TeplotniAlarm.hex
 Komentář:
PIC16F628A configbit 2178 4MHz

Stáhnout
 Soubor:  TeplotniAlarm.hex
 Velikost:  7.06 kB
 Staženo:  73 krát

Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
petrfilipi



Založen: Sep 13, 2005
Příspěvky: 2646

PříspěvekZaslal: pá březen 03 2017, 8:50    Předmět: Citovat

Nazdar,

já namísto čekání 1s používám smyčku, kterou kontroluji 1 na vstupu - indikuje dokončený převod t/data v čidlu:
j1 := 0;
Repeat // end of conversion cycle is
j1 := ow_read(porte,2); // indicated by a non-zero
Until j1 > 0;

ale to je asi jedno, zdali použiješ 1s nebo smyčku. Výhoda sekundy je v tom, že když čidlo chybí, tak se to nezastaví.
Pokud by Ti to stále nefungovalo tak zkus posílat na UART byty přímo z čidla, něco jako:
j1 := ow_read(porte,2); // get Low Byte result
j2 := ow_read(porte,2); // get High byte result
uart1_write(j1);
uart1_write(j2);

kombinuji můj Pascal a Tvoje céčko, tak si to přizpůsob.

Petr
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
ZdenekHQ
Administrátor


Založen: Jul 21, 2006
Příspěvky: 25741
Bydliště: skoro Brno

PříspěvekZaslal: pá březen 03 2017, 15:30    Předmět: Citovat

Herkules je super, ale na klasický textový výpisy přes port stačí i Tera Term (běhá i na starším železe s WIN98). Já občas používám oba naráz na jednom PC - Herkules přes WIFI posílá data a na Tera Termu je na "vzdáleném" zařízení loguju.
_________________
Pro moje oslovení klidně použijte jméno Zdeněk
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?
]
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
markoni



Založen: Oct 30, 2006
Příspěvky: 2310
Bydliště: Poblíž Zlína

PříspěvekZaslal: pá březen 03 2017, 16:44    Předmět: Citovat

Mě dělá starosti spíž to čidlo zkoušel jsem změnit pull up rezistor 4k7 na 2k7 a nic, na výstupu čidla na osciloskopu tesla BM370 téměř žádný průběh akorát asi za jednu sekundu jeden zákmit Question pokud jsem měl dobře nastavený ten osciloskop Embarassed díky
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
petrfilipi



Založen: Sep 13, 2005
Příspěvky: 2646

PříspěvekZaslal: pá březen 03 2017, 17:16    Předmět: Citovat

Já mám ve vývojové desce EasyPIC4 pull-up rezistor o velikosti 10 kOhmů.

Ještě mě napadlo, pokud to stále nefunguje - existuje více typů čidel 1820 - 18B20, 1820, 18S20 atd. a nevím, zdali jsou všechny stejné.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
markoni



Založen: Oct 30, 2006
Příspěvky: 2310
Bydliště: Poblíž Zlína

PříspěvekZaslal: po březen 06 2017, 11:01    Předmět: Citovat

petrfilipi napsal(a):
Já mám ve vývojové desce EasyPIC4 pull-up rezistor o velikosti 10 kOhmů.

Ještě mě napadlo, pokud to stále nefunguje - existuje více typů čidel 1820 - 18B20, 1820, 18S20 atd. a nevím, zdali jsou všechny stejné.

Bohužel ještě se mi to nepodařilo rozchodit Cry
V zapojení na fotografie0233 je výchozí zapojení které mám už delší dobu a pull up rezistor na čidle je 2k7 délka kabelu k čidlu je asi 1.5 metru, mimochodem to čidlo je stejný kus jako je v zapojení které se pokouším rozchodit přenos po sériové lince viz příloha fotografije233.Algoritmus čtení s čidla je stejné - okopírováno,možná je chyba v nastavení rozlišení
citace:
DESCRIPTION
The DS18B20 Digital Thermometer provides 9 to 12–b
it centigrade temperature measurements and has
an alarm function with nonvolatile
user-programmable upper and lower trigger points. The DS18B20
communicates over a 1-Wire bus th
at by definition requires only one data line (and ground) for
communication with a central microprocessor. It ha
s an operating temperature range of –55°C to +125°C
and is accurate to

0.5

C over the range of –10°C to +85°C. In
addition, the DS18B
20 can derive power
directly from the data line (“parasite power”), e
liminating the need for an external power supply

v tom zapojení co zobrazuje teplotu na LCD tam je nastaveno ale v zapojení UART nevím jak to nastavit.Kdyby byla chyba tam tak by se ukazovaly nesmysly ale mě zaráží že tomu zapojení UART je šum a fuk jestli je tam nebo není čidlo díky



fotografie0233.jpg
 Komentář:
LCD

Stáhnout
 Soubor:  fotografie0233.jpg
 Velikost:  263.02 kB
 Staženo:  81 krát


fotografije233.jpg
 Komentář:
UART červená šipka ukazuje na čidlo

Stáhnout
 Soubor:  fotografije233.jpg
 Velikost:  143.79 kB
 Staženo:  68 krát

Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
petrfilipi



Založen: Sep 13, 2005
Příspěvky: 2646

PříspěvekZaslal: po březen 06 2017, 12:06    Předmět: Citovat

Pokud je zařízení "šumafuk", zdali tam čidlo je nebo ne, tak zkus celou část program, která se stará o vyčítání čidla, vyhodit a místo ní dej dvě konstanty, které budeš přenášet do PC. Něco jako:

UART1_Init(9600);
UART1_Write_Text("Ahoj, posilam 50 a 70");
k1 = 50;
k2 = 70;
UART1_write (k1);
UART1_write (k2);

Dokud Ti tohle nebude chodit, tak nemá smysl měnit pull-up odpor.
Co se týče použitých příkazů tak jsem si je z hlavy jen tak vymyslel, přizpůsob to syntaxi Céčka a MikroC.

Nastavení rozlišení provádím v MikroPascalu takto:
Procedure Initialize;
Begin
adcon1 := 255; // configure RA5 pin as digital I/O
TRISE : = 255;

{ $4E Write to RAM dummy $FF to TH & TL, $7F to ctrl reg for 12-bit}
ow_reset(porte,2); // onewire reset signal
ow_write(porte,2,$CC); // issue command to DS1820
ow_write(porte,2,$4E); // issue command to DS1820
ow_write(porte,2,$FF); // issue command to DS1820
ow_write(porte,2,$FF); // issue command to DS1820
ow_write(porte,2,$1F); // Set for 12 bit output 7F=12 bit=0,0625°C, 5F=11bit=0,125°C, 3F=10bit=0,25°C, 1F=9bit=0,5°C
End;


Petr
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
markoni



Založen: Oct 30, 2006
Příspěvky: 2310
Bydliště: Poblíž Zlína

PříspěvekZaslal: po březen 06 2017, 13:10    Předmět: Citovat

Tak s toho jsem pochopil rozlišiní 9 =0.5 C se nastavuje konstantou 0x1F !!! .A co mĕ nejde do hlavy tak jak se nastavuje patřičný regist do kterého se ta konstanta posílá ? to musí mít nĕjaký registr?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
petrfilipi



Založen: Sep 13, 2005
Příspěvky: 2646

PříspěvekZaslal: po březen 06 2017, 14:13    Předmět: Citovat

Stáhni si anglický originální datasheet k 18B20, tam je na straně 12 vývojový diagram, kde zjištíš, jak nastavit rozlišení (zápisem do konfiguračního registru) a najdeš tam i to, že defaultní rozlišení je 12 bitů.

Třeba vyčtení výrobního čísla jsem musel dělat opravdu přesně podle vývojového diagramu.

Sekvence pro zápis do konfiguračního registru je následující:
CC (skip ROM, tzn. další příkazy se vysílají pro všechna připojená čidla)
4E (= informace pro čidlo že následují 3 byty, které zapíše do "scratchpadu")
FF (neboli cokoli - pokud nepoužíváš termostat v 18B20, můžeš toto místo použít jako univerzální registr) - ale něco tam prostě poslat musíš
FF (jako předcházející byte)
1F (konfigurační registr, na místě 5. a 6. bitu je info o požadovaném rozlišení převodníku)


Český popis 18B20 je třeba v bakalářské práci tady: https://support.dce.felk.cvut.cz/mediawiki/images/8/80/Bp_2010_zmrhal_martin.pdf
V příloze posílám i kompletnější překlad datasheetu k 18B20, ale nejsem jeho autorem.

Petr



Datasheet 18B20-CZ.pdf
 Komentář:

Stáhnout
 Soubor:  Datasheet 18B20-CZ.pdf
 Velikost:  251.2 kB
 Staženo:  119 krát

Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
markoni



Založen: Oct 30, 2006
Příspěvky: 2310
Bydliště: Poblíž Zlína

PříspěvekZaslal: čt březen 09 2017, 12:05    Předmět: Citovat

petrfilipi napsal(a):

UART1_Init(9600);
UART1_Write_Text("Ahoj, posilam 50 a 70");
k1 = 50;
k2 = 70;
UART1_write (k1);
UART1_write (k2);

Ale jak
kód:
 UART1_Write_Text("Ahoj, posilam 50 a 70");

toto je ok
ale nevím jak docílit vypisování nějaké konstanty
příkazem
kód:

k2 = 70;
UART1_write (k2);

mě v virtuálním terminálu se zobrazí písmeno F Surprised
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
FHonza



Založen: Nov 20, 2012
Příspěvky: 1453
Bydliště: Praha

PříspěvekZaslal: čt březen 09 2017, 12:18    Předmět: Citovat

Protože 70 je ASCII hodnota písmena F. Použij nějakou funkci která převede číslo na text. Třeba itoa
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů Časy uváděny v GMT + 1 hodina
Jdi na stránku Předchozí  1, 2, 3, 4, 5  Další
Strana 3 z 5

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra.
Nemůž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.
Nemůžete připojovat soubory k příspěvkům
Můžete stahovat a prohlížet přiložené soubory

Powered by phpBB © 2001, 2005 phpBB Group
Forums ©
Nuke - Elektro Bastlirna

Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.


PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Čas potřebný ke zpracování stránky 0.23 sekund