Problém s DS18B20, simuláciou v Proteus 8.6 a ATMEGA88PA-PU

Dakujem Vam obom za reakciu.

Odpoved pre Billy Bob Bean:
Prikladam subor pre Proteus + hex subor pre CPU a rovno aj zdrojak s knihovnami pre LCD a 1-wire komunikaciu. Ten logicky analizator vypada zaujimavo, rozmyslal som uz dlhsie nad osciloskopom, ale odradzala ma jeho cena a zase nerad kupujem lacne “hovadinky”. Len otazka: Je potrebne k tomu asi aj kupit “Měřící háčky pro logický analyzátor”, ano? Predpokladam, ze nie su dodane spolu s analizatorom, aspon som si nevsimol, ze by to tam pisali. A co vsetko je s nim mozne sledovat? Vsetky komunikacie, poprípade aj striedu PWR regulacie?

Odpoved pre Balů:
Ano, presne tak som postupoval. LCD displej mam uz dlho odladeny a vyuzivam ho aj realne na CPU. Mam uz aj odladenu komunikaciu medzi CPU, uz aj medzi CPU a PC cez vitrualny COM port (prevodnik UART cez USB). Toto vsetko mi uz pekne funguje. Jedine, co mi teraz robi vrasky na cele su tieto snimace teploty a komunikacia 1-wire.

  1. To si ma nepotesil, ale cakal som nejaku taku odpoved. Je mozne, ze som ich mohol poskodit nejak ja? Na co si pri nich davat pozor? Boli uplne nove, tak preto som v rozpakoch. Predpokladam, ze by sa nemalo stat, aby mali zamenene vyvody. Moze ich poskodit, ked ich zapojim napríklad len na napajanie, bez pripojeného DQ pinu? Alebo, ak mam v programe nastaveny PIN pre 1-wire komunikaciu na CPU v logickej 0? Teraz som si uvedomil, ze na zaciatku, ked nastavujem piny na vstupne a vystupne (DDRB) tak vsetky piny nulujem (PORTB = 0x00;). Neprekaza to snimacom? Nemal by som PINB0 nastavit hned na log 1? Daju sa nejak tieto snimace premerat merakom?

  2. Dakujeem :slight_smile: Uhadol si, zabudol som prestavit CKDIV8 na 1. Uz LED lepsie blika (aj ked nie 1s intervale), ale 1-wire komunikacia aj tak nejde :confused: Teraz mi funkcia pre hladanie snimacov OWFirst() vrati hodnotu -3 OW_BADWIRE, predtým mi vratila hodnotu -1 OW_NOPRESENCE - v programe Proteus. V reali mi to funguje tak, ze ak pripojim odpor 4k7 na PINB0 a na +5V, tak bez alebo s cidlom mi vrati hodnotu -1 OW_NOPRESENCE. Ked odpor dam prec a necham nezapojeny PINB0, tak vypise -3 OW_BADWIRE - co je spravne. Len sa este pokusit donutit CPU najst snimace na zbernici. Predpokladam, ze ak hladam unikatny kod snimaca a je pouzity len jeden snimac na zbernici, tak by mu to nemalo vadit, ano?
    Hlasku, ze by Proteus nestihal,som si nevsimol. Ak je to v Message, tak vypise toto:

PROSPICE 8.04.00 (Build 21720) (C) Labcenter Electronics 1993-2017. Loaded netlist 'C:\Users\tomas\AppData\Local\Temp\LISA9133.SDF' for design 'Teploty.pdsprj' AVR Release 8.3SP0 build 22019 for ATMEGA88P. [U1] Loading HEX file 'C:\Users\tomas\OneDrive\Atmel Studio\6.2\Teploty\Teploty\Debug\Teploty.hex'. [U1] Read total of 2834 bytes from file 'C:\Users\tomas\OneDrive\Atmel Studio\6.2\Teploty\Teploty\Debug\Teploty.hex'. [U1] Controller received command whilst busy. [LCD2]
Do Proteusu, tak ako mi aj radis, davam priamo hex subor, ktory mi vygeneruje AVR Studio - priamo cesta do projektu v ARV Studiu. Tak je to najjednoduchsie, presne ako pises :slight_smile:
Testovanie v reale mi v podstate brani asi len to, ze nemam istotu, ci su snimace vporiadku. Budem musiet kupit nove, poprípade zatial skusim len s DS18S20, snad ten je dobry.

  1. Nad tymto riesenim zacinam vazne uvazovat. Asi si komplikujem zivot sam, ze to chcem rovno rozchodit s krystalom 14,7456MHz. Skusim to teda postupne, najprv vyskusam nejake funkcne riesenie s 1MHz alebo 8MHz, aj ked len s jednym snimacom a snad si aspon tak overim funkcnost snimacov a funkcie na posielanie bitov / bytov. V podstate, asi to je to najhlavnejsie a potom by som uz snad mohol prist na to, ako hladat adresy snimacov a potom ich budem chciet aj prestavit na 9 bitove rozlisenie - to zatial neviem ako presne, ale k tomu je este daleka cesta, to ma cas.

Skoda, ze si tu knihovnu pisal pomocou assemblera, ale tak snad to casom rozchodim. Nasiel som jednu stranku, kde boli pisane odporucane casy pre 1-wire komunikaciu. Skusim sa do nich nejak dostat. Rozmyslam, ci by mi pomohol pri tom timer. Nastavim casovanie tak, aby jedna perioda trvala 1 us (frekvencia 1MHz a preddelicka 1). TCNTn zasobnik pred zavolanim delay funkcie vynulujem, a hned po delay vypisem TCNTn zasobnik na displej a tak by som mohol zistit, kolko v skotucnosti trva. Dava to zmysel? :wink: A to zakazanie preruseni som uz tiez niekde spozoroval a dava to zmysel, darmo by som komunikoval so snimacom, ked by ma zrusilo prerusenie :slight_smile: Ale zatial prerusenia nepovolujem.

Este raz Vam velmi pekne dakujem za Vasu ochotu pomoct.
Teploty.zip (19.7 KB)
Teploty.zip (286 KB)