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

Ještě pár restů v odpovědích :

  1. Logický analyzátor - SW z odkazu je přesně ten, se kterým to spolupracuje.

  2. Poškozené snímače

  • ptal jsi se na přehozené piny. Nestává se to, i když nic není vyloučeno. Dostaly se mi do rukou LEDky, které vypadaly, že nefungují, ale nakonec se ukázalo, že byly opačně zapouzdřené, takže když jsem je na DPS zaletoval “obráceně”, tak fungovaly. Podařilo se mi DS18B20 přepólovat, prst jsem na něm neudržel, ale zvládnul to, takže pokud máš na zdroji proudovou ochranu (tu já neměl), tak v případě, že jsou přehozené vývody na pouzdře, budou snímače fungovat. Jak jsem psal - snímače se od sebe v ničem neliší. Komunikace (1-wire) je shodná - ostatně ta je shodná pro všechny 1-wire zařízení. Liší se jenom v tom, co mu říkáš a co čidlo odpovídá. Data se od sebe liší až v dekódování informací z čidla, kdy DS18B20 má pro desetinnou část teploty nejnižší 4 bity, DS18S20 jenom jeden.
  • druhá otázka se týkala možnosti poškození snímače při nezapojeném DQ. Tím snímač nepoškodíš.
  • třetí otázka - jestli jsi nemohl poničit čidlo při inicializaci procesoru - ani tady riziko zničení nehrozí. Piny procesoru jsou po resetu nastavené jako vstupní a bez zapnutých pull-up rezistorů, DQ pin je de-facto otevřený kolektor, takže jediná (čistě teoretická) možnost poškození by byla, kdyby byl pin jako výstupní, nastavený na log. 1 a čidlo by v tu chvíli komunikovalo. Jenže výstupní proud pinu procesoru není tak velký, aby to dokázal.
  1. Zápis a optimalizace kódu
    Tady jsem měl na mysli ty return příkazy knihovny, do Tvých funkcí jsem ani nekoukal. O optimalizaci kódu jsem na fóru cíleně nepsal, ale když jsme tady rozebírali C, flagy a možnosti zápisu/kontroly jednoho bitu (zde v tématu “C a flagy”), tak jsem tenkrát zkoušel různé překlady různých zápisů a v posledním příspěvku jsem se o tom zmiňoval. Proto ta zmínka o tom zápisu a optimalizaci.