Witam,
nie mogę sobie poradzić z uruchomieniem scalaka max31855 w współpracy z atmega16.
nota : http://datasheets.maximintegrated.com/en/ds/MAX31855.pdf
z tego co mi wiadomo układ max31855 miał być zamiennikiem poprzedniego układu max6675 ale niestety coś u mnie nie za bardzo.
na początku do odczytu chciałem wykorzystać sprawdzony kod który działa w 100% z układem max6675
jego istotny fragment:
lecz niestety pokazuje bzdury. Po dostosowaniu tego kodu do wersji 31855 które pracuje na słowie 31bit powstało takie coś:
również nic. Odnalazłem na forum temat z podobnym problemem https://www.elektroda.pl/rtvforum/topic2357296.html lecz tutaj nie został on rozwiązany gdyż sam zainteresowany zmienił język programowania na C, a ja niestety C nie znam w ogóle.
Jest tam wzmianka że bascom może sobie nie radzić z funkcja shiftin do długiej zmiennej typu Long, lub po prostu programowe SPI może źle funkcjonować.
Więc napisałem swoją ręczną obsługę transmisji danych z scalaka max do atemga. Zrobiłem to najprostszą metodą bo tylko tak potrafię
o to cały kod, jest trochę w nim chaosu ale główne elementy są widoczne:
podprogram ODCZYT ma za zadanie odbieranie 31 bitów z max31855 i zapisywanie ich w odpowiednie pozycje w zmiennej typu long.
podprogram Tempt ma za zadanie wydobyć te bity które odpowiedzialne które niosą informację o temperaturze.
Niestety nadal i tak to nie działa podczas pracy układu, wyświetlając zmienna max1data wartość jest kosmiczna -2803596... i więcej nie mieści mi się na wyświetlaczu - za każdym razem wartość się zmienia.
Wyświetlając zmienna Tempt wartość wynosi zawsze ponad 30 000.
Wszystko to z podłączoną poprawnie termoparą. Termopara na pewno ok bo podłączając ją do układu z max6675 odczyty są poprawne.
Panowie pomóżcie, czemu ten mały uparty scalaczek nie chce współpracować. Obsługa max6675 jest dziennie prosta, a ten nowszy model robi jakieś problemy ://.
Oczywiście zasilanie 3.3v.
06.04
żadnych pomysłów w tym temacie ??
a może wykorzystanie sprzętowego SPI rozwiązało by problem ??
nie mogę sobie poradzić z uruchomieniem scalaka max31855 w współpracy z atmega16.
nota : http://datasheets.maximintegrated.com/en/ds/MAX31855.pdf
z tego co mi wiadomo układ max31855 miał być zamiennikiem poprzedniego układu max6675 ale niestety coś u mnie nie za bardzo.
na początku do odczytu chciałem wykorzystać sprawdzony kod który działa w 100% z układem max6675
jego istotny fragment:
Kod: text
lecz niestety pokazuje bzdury. Po dostosowaniu tego kodu do wersji 31855 które pracuje na słowie 31bit powstało takie coś:
Kod: text
również nic. Odnalazłem na forum temat z podobnym problemem https://www.elektroda.pl/rtvforum/topic2357296.html lecz tutaj nie został on rozwiązany gdyż sam zainteresowany zmienił język programowania na C, a ja niestety C nie znam w ogóle.
Jest tam wzmianka że bascom może sobie nie radzić z funkcja shiftin do długiej zmiennej typu Long, lub po prostu programowe SPI może źle funkcjonować.
Więc napisałem swoją ręczną obsługę transmisji danych z scalaka max do atemga. Zrobiłem to najprostszą metodą bo tylko tak potrafię
Kod: text
podprogram ODCZYT ma za zadanie odbieranie 31 bitów z max31855 i zapisywanie ich w odpowiednie pozycje w zmiennej typu long.
podprogram Tempt ma za zadanie wydobyć te bity które odpowiedzialne które niosą informację o temperaturze.
Niestety nadal i tak to nie działa podczas pracy układu, wyświetlając zmienna max1data wartość jest kosmiczna -2803596... i więcej nie mieści mi się na wyświetlaczu - za każdym razem wartość się zmienia.
Wyświetlając zmienna Tempt wartość wynosi zawsze ponad 30 000.
Wszystko to z podłączoną poprawnie termoparą. Termopara na pewno ok bo podłączając ją do układu z max6675 odczyty są poprawne.
Panowie pomóżcie, czemu ten mały uparty scalaczek nie chce współpracować. Obsługa max6675 jest dziennie prosta, a ten nowszy model robi jakieś problemy ://.
Oczywiście zasilanie 3.3v.
06.04
żadnych pomysłów w tym temacie ??
a może wykorzystanie sprzętowego SPI rozwiązało by problem ??
