Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[atmega16][ds18b20][c] - błąd przy wgrywaniu do mikrokontrolera

d20alien 12 Paź 2011 01:45 1158 4
  • #1 12 Paź 2011 01:45
    d20alien
    Poziom 9  

    Witam Szanownych forumowiczów!
    Naukę z mikrokontrolerami zacząłem dość niedawno i od pewnego czasu męczy mnie pewna sytuacja z którą nie potrafię sobie poradzić dlatego zwracam się z prośbą do was.
    No więc do sedna programuję na płycie EvB 4.3 zakupionej w internecie program jaki używam do programowania to AVR Studio 5.0.
    Mój problem polega na tym, że po próbie wgrania programu na procesor wyskakuje mi błąd który wygląda tak :

    [atmega16][ds18b20][c] - błąd przy wgrywaniu do mikrokontrolera


    A oto kod :

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Bardzo proszę o pomoc.

    0 4
  • #2 12 Paź 2011 04:49
    Piotrek_P
    Poziom 18  

    Skoro jesteś "na początku drogi do programowania uC" to proponuję wywalić AVRStudio 5 i zainstalować WinAVR+AVRStudio4.18+SP2. Oszczędzi Ci to wiele czasu na problemy ze środowiskiem programowania. Co do zamieszczonego kodu to nie wiem czy Ci się źle wkleił bo kilka piewszych linii nie jest "zakomentowanych".

    PP

    0
  • Pomocny post
    #3 12 Paź 2011 08:57
    435758
    Użytkownik usunął konto  
  • #4 12 Paź 2011 10:22
    navaro
    Poziom 11  

    majeranek53 napisał:
    Witam.
    Czy włączyłeś optymalizację kodu: -Os ? Warto też dołączyć bibliotekę: "math.h" ponieważ używasz zmiennych double, zmniejszy to objętość kodu wynikowego

    Można wiedzieć jakim cudem?

    Cytat:
    ; i zmiennym nadać volatile.

    Czy ma to jakieś sensowne wytłumaczenie w tym konkretnym przypadku? Bo jak dla mnie jest to całkowicie bezcelowe.

    Cytat:
    Czy dobrze skonfigurowałeś projekt?
    Poniższe :
    char str[17]=" Termometr ";char stopien=0xDF;char celcjusza[]="C";
    przenieś pod funkcję main().

    Dodano po 12 [minuty]:

    Na temat "dtostrf()" i "sprintf()" poczytaj ich opis w AVR-Libc np. na tej stronie https://savannah.nongnu.org/projects/avr-libc/
    [/quote]

    0
  • #5 12 Paź 2011 14:55
    d20alien
    Poziom 9  

    Piotrek_P napisał:

    Cytat:
    Co do zamieszczonego kodu to nie wiem czy Ci się źle wkleił bo kilka piewszych linii nie jest "zakomentowanych".

    Już poprawiłem, błąd przy wklejaniu.

    majeranek53 napisał:
    Cytat:
    Czy włączyłeś optymalizację kodu: -Os

    Dzięki wielkie to właśnie pomogło. Teraz mogę bez problemu zaprogramować atmęge.
    Oczywiście odwdzięczam się za pomoc.



    Teraz po uporaniu się z jednym problemem narodził się drugi a mianowicie przy wyświetlaniu temp. pojawia mi się cały czas 0 albo 4 stopnie.

    Oto kod programu :

    Kod: c
    Zaloguj się, aby zobaczyć kod


    ds18b20.h :
    Kod: c
    Zaloguj się, aby zobaczyć kod


    oraz ds18b20.c :
    Kod: c
    Zaloguj się, aby zobaczyć kod



    Nie wiem gdzie może tkwić błąd połączenia raczej mam wykonane poprawnie kod wydaje mi się też ok.

    Z góry bardzo dziękuję za pomoc

    Dodano po 31 [minuty]:

    Problem rozwiązałem (w sumie przez przypadek) i jest to dość dziwne, jak dla mnie to nie rozumiem dlaczego tak właśnie działa a nie inaczej ponieważ wyjście z ds18b20 mam podłączone na procesorze do PC7 więc moim zdaniem w pliku ds18b20.h jest poprawnie skonfigurowany natomiast dopiero po zmianie na :
    Kod: c
    Zaloguj się, aby zobaczyć kod


    I nadal z takim samym połączeniem zaczął poprawnie działać.
    Nie mam pojęcia dlaczego.

    Dziękuję wszystkim za pomoc.
    Pozdrawiam.

    0
  Szukaj w 5mln produktów