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

[atmega32][C] HC-SR04 program do obsługi

piotrusgit 23 Gru 2011 01:54 2758 4
REKLAMA
  • #1 10294153
    piotrusgit
    Poziom 12  
    Witam,
    Posiadam czujnik odległości HC-SR04. Mam problem z obsługą tego czujnika na atmedze32. Napisałem bardzo prosty program który powinien moim zdaniem działać ale nie działa :)
    Siedzę na nim już 3h i nic...

    Wszystkie kabelki są dobrze podłączone (sprawdzone 5 razy), czujnik jest dobry bo sprawdziłem go programem z bascoma znalezionego na forum w tym temacie

    Teraz moim zdaniem najciekawsza zależność, co się wyświetla na LCD gdy.... zmienimy typ danych

    uint8_t: na początku 186 później 61-62
    uint16_t na początku: 151 później 284-283
    itd....


    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 10294162
    pawel-jwe
    Poziom 30  
    Jest już trochę późno i nie chce mi się dokładnie sprawdzać, ale problem jest chyba z obsługa przerwań. Wygląda tak jak by przerwania się nakładały.
    A wyświetla różne rzeczy przy różnych typach zmiennych, bo korzystasz z gotowych funkcji (lcd_int). Nazwa funkcji od razu sugeruje że najprawdopodobniej służy do wyświetlania zmiennych typu int, a jak dajesz jako parametr w tej funkcji zmienną innego typu to nie dziw się że wyświetla dziwne wartości. Osoba pisząca tą funkcję założyła, że jako parametr będzie podawana zmienna konkretnego typu i pod ten typ danych zapewne całe wyświetlanie działa poprawnie.
  • REKLAMA
  • #3 10308927
    piotrusgit
    Poziom 12  
    Przerwania raczej się nie nakładają.
    Zrobiłem wersje z jednym przerwaniem używając 16 bitowego timera, przerywając jego wykonywania w przerwaniu zewnętrznym, oraz wersje bez przerwań (pętla while i _delay_us(1) ) i dalej to samo.

    Co to tego żę różne zmienne to się nie mogę zgodzić ponieważ:
    uint8_t to unisgned int
    uint16_t to unsigned long int

    Poza tym istnieje coś takiego jak rzutowanie....
  • REKLAMA
  • #4 10309287
    pawel-jwe
    Poziom 30  
    piotrusgit napisał:
    uint8_t to unisgned int
    uint16_t to unsigned long int

    Wiem o tym doskonale, natomiast "unisgned int" to nie to samo co "int" i tu może być problem z wyświetlaniem.
  • #5 10309338
    piotrusgit
    Poziom 12  
    problem z wyświetlaniem muszę odrzucić bo:
    -autor biblioteki sam używa w przykładach uint'ów
    -nawet po zmianie na int wynik jest stały i niepoprawny
REKLAMA