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

Tak jsem koukal a koumal a zjistil jsem následující věci :

  1. Definuješ jednu hodnotu (konkrétně kmitočet procesoru) hned na několika místech nebo dokonce používáš přímo číslo místo nadefinované konstanty. Tohle NIKDY nedělej !!! F_CPU Ti nadefunuje překladač, všude jinde číslo vyhoď a dej tam F_CPU.
  2. Pro kmitočet použij raději tvar 14745600.0 místo tvaru 14745600UL. Tvaru s UL překladač v určitých situacích nerozumí a musel bys stejný číslo definovat vícekrát. Použitím F_CPU na všech místech, kde něco počítáš z rychlosti procesoru jsem dosahnul toho, že na změnu rychlosti procesoru stačí přepsat jedno číslo v nastavení projektu.
  3. 1-wire knihovna má pravděpodobně problémy s časováním. Funguje pouze, když nastavíš a nadefinuješ frekvenci procesoru na 1 MHz. Na jiných kmitočtech se mi z ní nepodařilo nic dostat.
  4. Když už funguje, tak špatně přepočítává záporná čísla. Nebo je aspoň špatně přepočítává ten přílepek do funkce DS18B20_read_temp.

Ještě Ti zkusím odpovědět na Tvůj dotaz ohledně logického analyzátoru. SW k němu umí rozkódovat celkem dost komunikačních protokolů, u periodických signálů umí Ti napsat i kmitočet a střídu, takže pokud budeš potřebovat analyzovat nějaký PWM signál, tak se tyhle věci dozvíš.