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

Poblem z ATMEga32 - nie podciaga wyjść pod VCC

28 Wrz 2009 20:34 1218 14
  • Poziom 12  
    Witam.
    Jestem nowym użytkownikiem forum, a także nowicjuszem jeśli chodzi o programowanie mikrokontrolerów.

    Mój problem polega na tym że napisałem prosty program:

    #include <avr/io.h>

    int main(void)
    {
    /* Wszystkie linie portu D będą wyjściami */
    DDRD = 0xFF;

    /* Linie portu B będą wejściami z podciągnięciem do VCC */
    DDRB = 0x00;
    PORTB = 0xFF;

    /* Początek nieskończonej pętli */
    for(;;)
    {
    /* Przepisanie zawartości PINB do PORTD */
    PORTD = PINB;
    }
    }

    I wciąż wynik uzyskuję:
    PORTD = 0xF7

    I nie wiem czemu tak się dzieje. Dla różnych portów otrzymuję rożne wyniki. Dodamy tylko że sprawdzam to na diodach na zestawie Kamami ZL3AVR.

    Jak podłącze np przycisk pod port B3 to program w ogóle na nie go nie reaguje.

    Mam przed sobą 2 ATMEgi i obie reagują tak samo.

    Był bym wdzięczny o wyjaśnienie mi tego.
  • Poziom 25  
    W menu project/konfiguration options wybrałeś właściwą atmegę? Rozumiem ze atmege programujesz. ;)
    Pozdrawiam.
  • Poziom 12  
    Tak, na pewno wybrałem właściwą atmege, dla pewności sprawdziłem. Do pisania programów używam AVR Studio, świeżo pobrane ze strony producenta.

    co do napięć. to przy normalnej pracy tego programu na porcie PB4 ( bo o ten port pierowotnie rozchodzi się, w poprzednim poście pomyliłem się ) jest stan niski (około 1.5V ) gdy na innych portach B jest wysoki (ok 5,7V). Tak wiec i na PD$ jest niski.
    Co do tego pływania, to nie wiem dokładnie o co chodzi, ponieważ jak wcisnę reset to na wszystkich portach jest stan ustalony. CO ciekawe na niektórych niski, a na niektórych wysoki ( jak np na PD0). Taka sytuacja jest na obu atmegach.
  • Poziom 25  
    a jakim napięciem ją zasilasz?
  • Poziom 12  
    Cała płyta zasilana jest przez uniwersalny zasilacz stabilizowany ustawiony na 9V. A dziewięć V, ponieważ taka wartość jest podana przez producenta płyty.
  • Poziom 33  
    No prosze, a myslalem ze sezon na grilla sie skonczyl :) Domyslam sie ze na procka napiecie nie idzie ze stabilizatora bo
    Cytat:

    gdy na innych portach B jest wysoki (ok 5,7V)

    Ale nie martw sie, mi sie dopiero udalo uszkodzic atmege przy 33V (az pekla w polowie), wszystkie inne pomylki (m.in. z 12V) atmegi przezyly :)
  • Poziom 12  
    Mam nadzieje że to nie będzie naruszenie regulaminu jak wrzucę ten link.
    http://www.kamami.pl/?id_prod=1826500
    Z tego właśnie zestawu korzystam. W karcie płyty pisze by zasilać ją napięciem 9V. A wiec stabilizator znajduje się na niej. Tylko przy zasilaniu 9V wychodzi z niego napięcie na mikrokontroler około 5,7V.
    Zasililem tą płytkę z programatora który daje na procek 4.9V i efekt jest ten sam co przy zasilaniu standardowym. Nie mam pojęcia jak zmusić to wszystko do działania :(
  • Poziom 26  
    Schemat dużo wyjaśnia. Czy założyłeś zworką JP3 ? Bez tego nic tu nie będzie działać. Proponuję też spróbować wpisać coś co ustawi wyjścia portu np.
    Code:
     PORTD = 0xAA; 
    a później zająć się klawiaturą.
  • Poziom 12  
    zworka na JP3 była założona. Zaczyna mnie denerwować ta płyta. Poprzedni problem ni z tego ni z owego sam się rozwiązał, nawet nie mam pojęcia jak.
    Nie wiem czy ze mnie taki kiepski programista czy co ale wykryłem kolejny.

    Otórz dla takiego kodu:

    Code:

    #include <avr/io.h>

    int main(void)
    {

       DDRC  = 0xFF;
       PORTC = 0xFF;

        DDRB  = 0x00;
        PORTB = 0xFF;

       
        for(;;)
        {
          // gdy na wejsci PB pojawi się stan niski zgaśdiody
          if(PINB != 0xFF)
          {
             PORTC = 0x00;
          }
          else
          {
             PORTC = 0xFF;
          }
        }
       
       
    }


    Wyjścia od PC2 - PC5 zachowują się dziwnie. Niby są ustawione jako wyjścia i stan wysoki. Mierze napięcia na nich to są takie jak powinny być. Ale jak tylko podłacze pod nie diody z rezystorami napięcia spadają do 2,5V lub do 0,5V( w przypadku PC4 ). A do tego jak podłączam to pod przyciski, które mają gasić wszystkie diody, to oddziaływanie nie widać właśnie w przypadku tych 4 portów.
    Naprawdę zaczyna mnie denerwować ta płyta, ponieważ nie wiem czy z nią jest coś nie tak, czy moje umiejętności programistyczne są do niczego ( albo po prostu czegoś nie wiem o tej atmedze - dopiero zaczynam sie uczyć ).

    Najlepiej by chyba było jak bym kupił sobie płytkę montażową i resztę komponentów i sprawdziła na niej tą atmege.
  • Poziom 12  
    a jak moge wyłączyć JTAG
  • Poziom 12  
    a mogę prosić konkretniej??