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

[Atmega8A][USBASP V2.0] - Brak wyłączenia diody

31 Mar 2015 22:33 1563 14
  • Poziom 7  
    Witam
    Wiem, że podobnych tematów na forum jest sporo, ale głównie polegały na braku kondensatorów, braku rezystora przy resecie, złym podłączeniu zasilania, złym podłączeniu programatora, czy też błędach wykrywanych przez MkAVRCalcurator. Niestety, ale wydaje mi się, że u mnie nie ma tych błędów.

    Zacząłem się interesować programowanie mikrokontrolerów AVR w języku Bascom. Chciałem najpierw napisać prosty program w języku Bascom do migania diodą, lecz jedynym efektem było ciągłe świecenie się diody LED. W celu lepszego przebadania przyczyny błędu napisałem program w którym dioda powinna się tylko wygasić, lecz ciągle się paliła. Dodam, że do programowania używałem MkAVRCalcurator, który nie znajdował żadnych błędów.

    Elementy jakie zakupiłem to Atmega8A-PU, programator USBASP V2.0 LC Technology (taki jak na tej stronie- http://smartrobots.pl/programator-usbasp) i oczywiście kondensatorki itp.



    Program:
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Jedyny sposób w jaki udało mi się wygasić diodę to zmiana pinu PB1 z wyjściowego na wejściowy.

    Jeśli chodzi o zasilanie do pomiędzy masą, a zasilaniem jest 4,76V

    Zdjęcia płytki z przewodami programatora jak i bez dla większej czytelności podłączenia:
    [Atmega8A][USBASP V2.0] - Brak wyłączenia diody [Atmega8A][USBASP V2.0] - Brak wyłączenia diody[Atmega8A][USBASP V2.0] - Brak wyłączenia diody[Atmega8A][USBASP V2.0] - Brak wyłączenia diody[Atmega8A][USBASP V2.0] - Brak wyłączenia diody

    Zdjęcie programatora i schematu jego podłączenia:
    [Atmega8A][USBASP V2.0] - Brak wyłączenia diody[Atmega8A][USBASP V2.0] - Brak wyłączenia diody

    Schemat układu (wiem że to nie jest Atmega 8, ale schemat bardzo dobrze odwzorowuje podłączenie zasilania oraz diody):
    [Atmega8A][USBASP V2.0] - Brak wyłączenia diody

    Główkuje się nad tym już parę ładnych dni i nie mogę dojść dlaczego układ nie chce działać :cry: , dlatego proszę was o pomoc w rozwiązaniu tego problemu.
  • BotlandBotland
  • Poziom 29  
    Kolego jedyne co zrobiłeś to ustawiłeś Pinb.1 jako wyjście o stanie 1.
    Musi być jakaś pętla.
  • Moderator Mikrokontrolery Projektowanie
    Nie znam Bascom więc programu nie sprawdzę.
    Skoro jednak zaczynasz swoją przygodę, to od razu porzuć ten język z tych powodów: http://mikrokontrolery.blogspot.com/2011/04/jaki-jezyk-wybrac.html

    Co do zdjęć, wydaje się, że wszystko prawidłowo podłączyłeś.
    Rozumiem, że programowanie i weryfikacja przebiegają prawidłowo?
  • BotlandBotland
  • Poziom 39  
    rafaello13 napisał:
    ...
    Główkuje się nad tym już parę ładnych dni i nie mogę dojść dlaczego układ nie chce działać :cry: , dlatego proszę was o pomoc w rozwiązaniu tego problemu.

    A ile razy w tym czasie zaglądałeś do dokumentacji ATMega8 :?:
    Gdybyś to zrobił, dowiedziałbyś się między innymi, o istnieniu takich rejestrów jak PINB, PORTB, DDRB i do czego one służą. Nie da się oprogramować czegoś o czym nie posiada się podstawowej wiedzy.
    A więc dokumentacja na ekran i czytaj dział o portach ATMegi.
  • Poziom 7  
    Pętla była gdy ta dioda miała migać, ale ponieważ nie migała więc postanowiłem napisać prostszą wersję tylko by wygasić diodę czyli ustawić stan wysoki na PB1 (Przycisk=1 albo inaczej PINB.1=1).
  • Moderator Mikrokontrolery Projektowanie
    Tylko, że dioda podłączona jest do Vcc więc świeci, gdy na pinie wyjściowym jest zero logiczne, a Twój program (jak się wydaje) ustawia na nim jedynkę logiczną.

    Czytasz i odpowiadasz tylko na wybrane posty?
  • Poziom 29  
    To są tylko ustawienia początkowe tej nogi, procesor musi dostać instrukcję co ma robić.
  • Poziom 7  
    Staram się odpowiadać, ale zaczytałem się w nocie katalogowej według sugestii kolegi "zumek".

    Zacząłem zaprzyjaźniać się z tym językiem programowania ponieważ potrzebowałem na początek czegoś jasnego i przejrzystego.

    Cytat:
    Tylko, że dioda podłączona jest do Vcc więc świeci, gdy na pinie wyjściowym jest zero logiczne, a Twój program (jak się wydaje) ustawia na nim jedynkę logiczną.

    Właśnie o to chodzi, że powinna świecić tylko gdy jest 0 logiczne, a wydaje mi się, że tymi komendami ustawiam 1 logiczną, a dioda mimo to świeci.
  • Moderator Mikrokontrolery Projektowanie
    Jak już wspomniałem Bascom nie znam więc nie sprawdzę.
    Ale zrób ten krok do przodu i jak mówiłem porzuć ten język już na samym początku.

    Nie trać czasu i bierz się za:
    http://mikrokontrolery.blogspot.com/2011/02/kurs-jezyka-c-spis-tresci.html
    http://mikrokontrolery.blogspot.com/2011/03/drzaskowy-pamietnik-wstep.html

    I odpowiadaj na pytania które zadajemy, bo na moje nie odpowiedziałeś.


    Oto Twój program zapalający diodę stanem niskim:


    Kod: c
    Zaloguj się, aby zobaczyć kod

    Czego w nim nie rozumiesz?
    Tego?: 0b00000010
    0b oznacza zapis binarny.
  • Poziom 7  
    GBW napisał:
    To są tylko ustawienia początkowe tej nogi, procesor musi dostać instrukcję co ma robić.

    Według wiedzy którą posiadłem z książki "Programowanie mikrokontrolerów AVR w języku Bascom" te ustawienia powinny określają co ma robić procesor czyli tylko ustawić stan wysoki na tej nodze czyli wyłączyć diodę.

    GBW napisał:
    Musi być jakaś pętla.


    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    Przy zastosowaniu pętli efekt jest ten sam

    Dodano po 5 [minuty]:

    Dzięki "dondu" za program w języku C. Jutro postaram się ściągnąć jakiś program do tego języka i go przetestować (np. Eclips), bo przez Bascoma niestety nie przechodzi.

    Dodano po 2 [minuty]:

    p.s. W twoim kodzie dondu rozumiem wszystko, tle że jak zaczynałem uczyć się programowania to język Bascom wydawał się przyjemniejszy
  • Poziom 32  
    rafaello13 napisał:
    Dzięki "dondu" za program w języku C. Jutro postaram się ściągnąć jakiś program do tego języka i go przetestować (np. Eclips), bo przez Bascoma niestety nie przechodzi.


    Ściągnij sobie AVR Studio ( na początek lżejsza dla windy np. ver. 4) oprogramowanie producenta Atmegi. Próbowałem Eclips ( osobiście porażka ).
    Kup w necie najtańsze arduino ze złączem SPI.
    Przynajmniej będziesz miał do testów zmontowaną i działającą platformę, nie będziesz się zastanawiał czy dobrze wszystko podłączyłeś.
    Zauważyłem że Ci najlepsi na tym forum używają AVR Studio.
  • Użytkownik usunął konto  
  • Poziom 7  
    GBW napisał:
    A jakiego Bascoma kolega używa?


    Używam Bascom-AVR 2.0.7.5.

    niveasoft napisał:
    Mikrokontroler ma do jednego portu przynajmniej trzy rejestry.
    Jeden służy do tego żeby wybrać czy port służy jako wejście czy jako wyjście. Nazywa się DDRx gdzie x to litera portu. Czyli spotkac się możesz z DDRB DDRC lub inną literą na końcu.
    Drugi służy do ustalania stanu portu który Ty sobie życzysz i na który masz wpływ poprzez program. Nazywa się PORTx. Wpisując coś w rejestry PORT możesz ustalać czy stan ma być niski bądź wysoki jeśli wcześniej port został skonfigurowany jako wyjściowy.
    Teraz odstęp żeby było widać o co chodzi.
    Trzeci rejestr nazywa się PIN - i nie masz ŻADNEGO wpływu na niego poprzez program. Z tego rejestru możesz tylko dowiedzieć się jaki na nim panuje stan.


    Dzięki kolego niveasoft :D . Wydawało mi się, że wiem wystarczająco aby napisać pierwszy program, ale książka nie napisała o tym tak szczegółowo i przejrzyście jak ty. Wszystko wydaje się takie proste dopóki się czegoś nie napisze samemu i nie nauczy na własnych błędach.
    Jeszce raz wszystkim bardzo dziękuję za pomoc, dzięki wam radośnie rozpoczynam nowy dzień :D. Temat uważam za rozwiązany i zamknięty.