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

ATmega8 - Początki z mikrokontrolerami AVR[BASCOM]

08 Wrz 2014 18:22 2679 22
  • Poziom 9  
    Witam. uczę sie programowania na ATmega8, lecz z kilkoma rzeczami nie mogę sobie poradzić.

    chciałem rozjaśniać, bądź przyciemniać diodę na początku automatycznie, później przyciskiem
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    lecz nie wiem jak dodać pwm1a do zmiennej
    tak aby po wpisaniu np. zmienna= 10 lub zmienna=200
    wpisaną wartość przyjmował pwm1a.

    próbowałem tak:
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod
    lecz dioda nie przygasa wogóle.
    Co robię źle?
    Podłączenie jest prawidłowe, bo jesli wpisze pwm1a=x to dioda świeci jaśniej lub ciemniej w zależności co wpisałem.
  • Poziom 9  
    Dzięki, podziałało, tylko teraz nie wiem czemu to nie działa:
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod
  • Poziom 9  
    Dzięki. Jesteś Wielki.
    Niby taka głupota a nie mogłem tego rozgryźć.
    Pozdro.
  • Poziom 39  
    rafal1538 napisał:
    Niby taka głupota a nie mogłem tego rozgryźć.

    Błędem( jakże powszechnym u początkujących) jest odczytywanie rejestru PORTx zamiast PINx przy badaniu stanu przycisków.
    Żadne 'magiczne' END nic tu nie pomoże, jeżeli nie użyjesz właściwego rejestru. :D
  • Poziom 9  
    Jeśli chodzi im o wejście, to piszę PIN a jeśli o wyjście to PORT
    np:
    If pind.1=1 then
    portc.1=1
    tak?
    Podpowiedzcie mi jeszcze jak napisać kod, tak aby po osiągnięciu temperatury 40st na wyjściu pojawiał się stan wysoki, a po spadku do np 30st dopiero stan niski

    używam ds18b20
  • Pomocny post
    Poziom 39  
    rafal1538 napisał:
    Jeśli chodzi im o wejście, to piszę PIN a jeśli o wyjście to PORT
    np:
    If pind.1=1 then
    portc.1=1
    tak?

    Mniej więcej.
    rafal1538 napisał:

    Podpowiedzcie mi jeszcze jak napisać kod, tak aby po osiągnięciu temperatury 40st na wyjściu pojawiał się stan wysoki, a po spadku do np 30st dopiero stan niski

    używam ds18b20


    Kod: text
    Zaloguj się, aby zobaczyć kod
  • Poziom 9  
    Dzięki za dotychczasowe odpowiedzi :)
    Mam kolejny problem, tym razem z ADC, kod programu mam chyba dobrze napisany(tak mi sie wydaje) lecz nie wiem jak podłączyć np. potencjometr lub fotorezystor?
    Mój program wygląda tak:
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Pomożecie ? :D
  • Pomocny post
    Poziom 28  
    Witam.
    Nie wiem dlaczego przy konfiguracji ADC wyłączyłeś napięcie referencyjne?
    Czyli musisz doprowadzić z zewnątrz do pinu AERF.

    Myślę, iż na początek wykorzystaj napięcie wewnętrzne mikrokontrolera, które wynosi około 2,56V INTERNAL, lub napięcie AVCC czyli zasilające.

    Wykorzystując jedno z tych napięć upraszczamy układ.

    Na PW masz przykład.
  • Poziom 9  
    Dzięki za odpowiedź.
    Tylko jeszcze powiedz mi jak podłączyć np. fotorezystor żeby to wszystko poprawnie działało.
    Muszę jakoś wyliczyć rezystory tak aby napięcie maksymalne bylo 2.56?
  • Pomocny post
    Poziom 28  
    Jeżeli chcesz się pobawić ADC to:

    - wykorzystaj jako napięcie odniesienia AVCC, przy konfiguracji ADC.
    - podłącz potencjometr np. 10kom pod napięcie 5V, suwak do wejścia danego kanału ADC
    - jeżeli masz wyświetlacz LCD to regulując potencjometrem zobaczysz zmiany napięcia na wyświetlaczu.

    Nie przekraczaj napięcia 5V na wejściu ADC bo uszkodzisz.
    Resztę poszukaj w internecie np, "pomiary i ADC".
    Masz jeszcze post "pomiar napięcia baterii 12V" przeczytaj

    Przetwornik analogowo-cyfrowy – Wikipedia, wolna encyklopedia
  • Moderator Mikrokontrolery Projektowanie
  • Poziom 9  
    Witam ponownie.

    Zdecydowałem zostać przy bascomie, ponieważ wg mnie jest on najbardziej czytelny.

    Podłączyłem odbiornik podczerwieni do ATmega8 zgodnie ze schematem z pierwszego postu w tym temacie, oraz wgrałem program z drugiego postu ELEKTRODA

    Lecz nic nie działa, próbowałem z trzema pilotami.
    czy przyczyną jest to że mam TSOP31238 który działa w częstotliwości 38khz a nie TSOP31236(36khz) ?
    Czy może to że moja atmega działa na 1mhz (nie mam kwarcu)
    podłączenie jest poprawne, w kodzie żródłowym zmieniłem z 8mhz na 1mhz.
  • Poziom 9  
    Nie mam oscyloskopu żeby to sprawdzić.
    Kopiowałem gotowe programy użytkowników którzy pisali że u nich działa,
    więc następną rzeczą jaka zrobie to kupie odbiornik 36khz.
    ------------------------------------------------------------------------------------------------------------
    Jest możliwość sprawdzenia czy pilot nadaje w rc5?(bez ocyloskopu)
    bo testowałęm z 10 różnych pilotów, ale być może miałem takiego pecha że żaden nie nadawał w tym standardzie.
  • Pomocny post
    Moderator Mikrokontrolery Projektowanie
    Tutaj znajdziesz gotowe programy chyba nawet skompilowane pliki hex dla ATmega8: http://mikrokontrolery.blogspot.com/2011/03/I...dczerwien-transmisja-standard-pilot-kurs.html

    A oscyloskop masz, tylko o tym nie wiesz: http://mikrokontrolery.blogspot.com/2011/04/darmowy-oscyloskop-i-analizator.html
  • Poziom 29  
    rafal1538 napisał:
    Podłączyłem odbiornik podczerwieni do ATmega8 zgodnie ze schematem z pierwszego postu w tym temacie, oraz wgrałem program z drugiego postu ELEKTRODA
    A jakie masz taktowanie? Źródła do których linkujesz są napisane pod 8MHz, a w Twoich programach widzę 1MHz.

    rafal1538 napisał:
    Jest możliwość sprawdzenia czy pilot nadaje w rc5?(bez ocyloskopu)
    Na przykład tutaj.

    rafal1538 napisał:
    bo testowałęm z 10 różnych pilotów, ale być może miałem takiego pecha że żaden nie nadawał w tym standardzie.
    A miałeś tam jakiegoś Philipsa? Jak nie to pożycz i spróbuj.
  • Poziom 9  
    Zmieniłem częstotliwość wewnętrznego oscylatora na 8mhz, kupiłem TSOP 36khz i przed chwilą próbowałem na pilocie phillips i żadnego kodu, nawet błędnego nie odebrałem.
    Na stronie którą podał landy13 nie ma żadnego modelu TV jakie posiadam.
    Wgraem program od kolegi dondu i wzchodyi na to ze wszystkie piloty które mam nie nadajá w rc5 nawet od tv philips ;/
  • Moderator Mikrokontrolery Projektowanie
    rafal1538 napisał:
    Wgraem program od kolegi dondu i wzchodyi na to ze wszystkie piloty które mam nie nadajá w rc5 nawet od tv philips ;/

    Zmieniłeś taktowanie na wskazane w artykule?
    Schemat mam nadzieję wykonałeś taki jak w artykule ...
  • Poziom 36  
    rafal1538 napisał:
    Zmieniłem częstotliwość wewnętrznego oscylatora na 8mhz, kupiłem TSOP 36khz i przed chwilą próbowałem na pilocie phillips i żadnego kodu, nawet błędnego nie odebrałem.
    Na stronie którą podał landy13 nie ma żadnego modelu TV jakie posiadam.
    Wgraem program od kolegi dondu i wzchodyi na to ze wszystkie piloty które mam nie nadajá w rc5 nawet od tv philips ;/


    Do testów takich jak ty potrzebujesz, nie musi to byc pilot zgodny z jakimkolwiek modelem TV, VCR,DVD, e.t.c.
    W pierwszej kolejności musisz byc pewny że pilot emituje IR sygnał; mozesz to widziec przez każdy cyfrowy aparat fot. albo telefon kom.
    W drugiej kolejności sprawdzasz czy TSOP reaguje na ten sygnał. Tu na razie nie jest konieczy scope!!!!
    Wystarczy ci zwykła dioda LED. Podłącz układ jak na rysunku, naciskając dowolny klucz na pilocie skierowanym na TSOP - dioda powinna mrugac.

    ATmega8 - Początki z mikrokontrolerami AVR[BASCOM]

    Możesz też podłączyc diode w odwróconej polaryzacji do GND - wtedy będzie odwrotny efekt 'mrugania' (gorzej widac).

    Podany 'pinout' dotyczy odbiorników IR z serii TSOP17xx. Inne modele od różnych producentów mogą miec inaczej, więc na początek może to byc błąd w zasilaniu odbiornika IR.
    Jeżeli ten etap masz za sobą, to wtedy możesz martwic się czy pilot nadaje w RC5 czy w RC6.
    Zdecydowana większośc pilotów nadaje w RC5. Nie sądzę aby: - jeżeli masz ich kilka w domu - wszystkie nadawały w RC6.

    e marcus
  • Poziom 9  
    Znalazłem stary pilot i RC5 zadziałało, a co do ADC to poczytałem trochę i wykorzystałem wewnętrzne napięcie odniesienia oraz rezystorowy dzielnik napięcia.
    Pozdrawiam.