Používám jedno čidlo DS18B20 přímo připojené k procesoru a ještě nepřevedenou teplotu z dalších třech čidel mi posílá po usart jiný procesor. To funguje, až do doby než chci vypsat hodnotu na LCD, zavolám podprogram na převod (ten jsem našel někde tady), data mi přídou v jednotkách přímo pro vypsání na LCD, ale jakmile je za desetinou čárkou číslo 9, nenapíše to telotu třeba 22.9 ale 22.? nebo 22.<. Když do DEC1 vložím přímo 9 tak to napíše správně. Při jiných číslech to nedělá. Dělá to i u čidel přes usart. Přikládám i část programu která s tím má něco společného, ale za dva dny jsem na nic nepřišel, kdyby jste někdo měl nějaký nápad, byl bych vděčný
administrator: přejmenováno z “DS18B20 - špatný převod na teplotu?” Teploty.asm (1.56 KB)
Tak když vím od koho je, tak ti aspoň můžu poděkovat, doufám že nevadí že jsem ho využil. Mně zatím funguje dobře tak to nechám.
Jinak problém jsem dneska objevil, nešlo o chybu v převodu, ale naplnil jsem první stránku paměti a projevilo se to právě tímto. Ještě nikdy jsem tak velký program nenapsal, tak mně to překvapilo. Teď jsem nastudoval PAGESEL a už to maká jak má.
Jen dotaz: přesunul jsem tedy nějaké rutiny do stránky paměti č.2 od adresy 0x0800, ale to mi při překladu na HEX nahlásí chybu “Overwriting previous address contents (0822)” u všech řádku za touto adresou. když to přesunu až do čtvrté stránky od adresy 0x1800 vše je v pořádku. Je nějaký rozdíl mezi stránkamy paměti?
Procesor 16f877a, ale chyba byla zas u mně a uplně jednoduchá, sice jsem přesunul něco do paměti 2, ale pořád toho zůstalo dost v paměti 1 kam se to nevešlo a pokračovalo to přes paměť2. Když jsem dal zapsat na adresu 0x0800 už byla obsazená, proto ta chyba, musel jsem toho přesunout daleko víc.