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

ATmega8 - Początki z mikrokontrolerami AVR[BASCOM]

rafal1538 08 Wrz 2014 18:22 2985 22
REKLAMA
  • #1 13944210
    rafal1538
    Poziom 10  
    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: text
    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: text
    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.
  • REKLAMA
  • #3 13944332
    rafal1538
    Poziom 10  
    Dzięki, podziałało, tylko teraz nie wiem czemu to nie działa:
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #5 13944437
    rafal1538
    Poziom 10  
    Dzięki. Jesteś Wielki.
    Niby taka głupota a nie mogłem tego rozgryźć.
    Pozdro.
  • #6 13945384
    zumek
    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
  • #7 13946175
    rafal1538
    Poziom 10  
    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
    #8 13948421
    zumek
    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
  • #9 13970587
    rafal1538
    Poziom 10  
    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: text
    Zaloguj się, aby zobaczyć kod


    Pomożecie ? :D
  • REKLAMA
  • Pomocny post
    #10 13971040
    yokoon
    Poziom 29  
    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.
  • #11 13971412
    rafal1538
    Poziom 10  
    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
    #12 13972081
    yokoon
    Poziom 29  
    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
  • #13 13972551
    dondu
    Moderator na urlopie...
  • #14 13997894
    rafal1538
    Poziom 10  
    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.
  • #16 14001092
    rafal1538
    Poziom 10  
    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
    #17 14001574
    dondu
    Moderator na urlopie...
    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
  • REKLAMA
  • #18 14001642
    landy13
    Poziom 31  
    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.
  • #19 14004187
    rafal1538
    Poziom 10  
    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 ;/
  • #20 14004701
    dondu
    Moderator na urlopie...
    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 ...
  • #22 14007475
    Konto nie istnieje
    Poziom 1  
  • #23 14683266
    rafal1538
    Poziom 10  
    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.
REKLAMA