logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Atmega16] Atmega16 - Brak odczytu z DS18B20 na PD0, możliwa kolizja z RXD?

dardaw2 16 Lis 2014 19:05 936 6
REKLAMA
  • #1 14137766
    dardaw2
    Poziom 10  
    Witam wszystkich.
    Mam problem z obsługą DS18B20 na Atmega16.
    Zacznę od tego, że obsługę tego czujnika i wyświetlacza segmentowego mam opanowaną, bo na Atmega8 wszystko mi działa, także sam czujnik jest w porządku.

    Czujnik mam podłączony w trybie NORMAL z użyciem rezytora 4,7k(takie samo podłączenie mam dla Atmega8), do PD0. W bibliotece do obsługi czujnika oczywiście ustawiam ten PIN i PORT.
    Zauważyłem, że ten port ma też funkcję RXD, czy to nie koliduje z odczytem pomiaru temperatury?
    Co może powodować taki stan?
  • REKLAMA
  • #2 14137874
    Kuniarz
    Moderator Projektowanie
    Widzę, oczami wyobraźni, że masz poważny błąd w 16tej linii kodu...
    Pomogłem? Kup mi kawę.
  • REKLAMA
  • #3 14137994
    dardaw2
    Poziom 10  
    Kuniarz program jest dobry bo działa na 8-ce. Dlatego pytam o ten RXD.
    Poniekąd rozwiązałem problem. W AVR Studio można zmieniać procesor jaki ma być programowany i gdy wybiorę: atmega16a to pomiar jest wykonywany, ale wtedy przyciski które mam podłączone do PIN-ów odpowiadających za przerwania zewnętrzne, resetują mi cały program(liczniki) i nie spełniają swojej roli.
    Gdy powrócę do atmega16, to przyciski i reszta działa, lecz nie mierzy temperatury.

    Procek jakiego używam to Atmega16A PU 1347, lecz na liście go nie ma. Który mam wybrać, żeby program działał poprawnie w całości?
  • REKLAMA
  • #4 14138025
    excray
    Poziom 41  
    Nie wrzuciłeś kodu schematu niczego. Nawet nie wiadomo jakiej biblioteki tyczą się Twoje wywody. Więc czego oczekujesz od nas? RxD na pewno nie koliduje z niczym.
  • #5 14138313
    dardaw2
    Poziom 10  
    excray tak jak mówiłem, problem nie leżał w kodzie, czy schemacie.
    Czujnik reaguje tylko gdy częstotliwość taktowania jest 1000000, przy 8000000 nic nie mierzy(tak jest u mnie).
    Procek musiałem ustawić na Atmega16a i wtedy zmienić obsługę przerwania z SIGNAL(SIG_INTERRUPT0) na ISR(INT0_vect) i wszystko działa.

    Temat do zamknięcia.
  • #6 14138368
    excray
    Poziom 41  
    Czyli jak widać problem leżał właśnie w kodzie. Postaraj się na przyszłość dostosować do zasad forum. A temat możesz sobie sam zamknąć.
  • REKLAMA
  • #7 14180511
    dardaw2
    Poziom 10  
    Nie do końca, gdyż problemem była obsługa czujnika, a nie przerwania.
    Opis rozwiązania problemu w poście powyżej.
REKLAMA