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

Jak napisać prosty program na ATMEGA16 do sterowania diodami LED?

Chivo 13 Wrz 2006 21:06 3003 7
REKLAMA
  • #1 3017219
    Chivo
    Poziom 27  
    Posty: 1325
    Pomógł: 81
    Ocena: 130
    Witam.
    Wlasnie zaczynam sie bawic AVR ami. Jak dotad uzywalem 8051 i dla niej pislaem programy w asm. Teraz chcialem zadac kilka prostych pytan dotyczacych Atmegi 16.Mam plytke z prockiem atmego16 i do tego dalem narazie 3 diody. Chcialem prosic o jakis przykladowy program ktory np zapalalby je i gasil. Diody mam podpiete do portu D pod bity 5 6 i 7.Są to nóżki 11 12 i 13 procesora. Czytalem juz ze ponoc trzeba ustawiac port jako wej lub wyj i jeszcze pare informacji jednak nadal mam problem. Uzywam programu AVR Studio 4.Nie wiem jednak jak zaczac pisac tzn chodzi mi o to ze widzialem w niektorych przykladach cos takiego jak .include <jakis plik> jednak nie wiem "czym to sie je".Do programowania używam programu PonyProg.Uzywam programu AVR Studio 4 (czy ten program jest dobry czy polecacie jakis lepszy)
    Dziękuje za pomoc.
  • REKLAMA
  • #2 3017917
    zumek
    Poziom 39  
    Posty: 3352
    Pomógł: 695
    Ocena: 52
    Chivo napisał:
    Witam.
    Wlasnie zaczynam sie bawic AVR ami.

    Gratuluję :D
    Chivo napisał:

    Jak dotad uzywalem 8051 i dla niej pislaem programy w asm.

    W takim razie powinieneś wiedzieć , że zaczynamy od rozgryzienia architektury i listy rozkazów.
    Chivo napisał:

    Nie wiem jednak jak zaczac pisac tzn chodzi mi o to ze widzialem w niektorych przykladach cos takiego jak .include <jakis plik> jednak nie wiem "czym to sie je". ...

    Koder piszący w asm, może od biedy nie używać plików INCLUDE, ale żeby nie wiedział "czym to sie je" :?: :!:

    Zacznij może od poznania architektury AVR-ów , czym się różnią od MCS-51 , a może mają jakieś wspólne cechy ... itd.Jak już nieco tej wiedzy liźniesz , to będziesz mógł sobie pobłyskać diodą.

    Piotrek
  • REKLAMA
  • #3 3018502
    marenc
    Poziom 24  
    Posty: 881
    Pomógł: 37
    Ocena: 5
    Pisany z pamięci ... może niedziałać:

    .include("m16def.inc")   ;Dodaje plik z stałymi podawanymi zamiast adresów dla ATmega16
    .cseg   ;rozpoczęcie segmętu kodu
       .org 0x00   ;przejście na początek wektorów przerwań
       rjmp Reset   ;przejście do obsługi przerwania RESET
    Reset:
       ser r16   ;wsadzenie do r16 wartości 0xFF
       out DDRD, r16   ;Ustawienie portu D jako wyjście
       out PortD, r16   ;Ustawienie HIGH(bo r16=0xFF) na wszystkich pinach portu D
    Main:
       nop   ;Odczekanie taktu zegarowego
       clr r16   ;wsadzenie do r16 wartości 0x00
       out PortD, r16   ;Ustawienie LOW(bo r16=0x00) na wszystkich pinach portu D
       nop
       ser r16
       out PortD, r16   ;Ustawienie HIGH(bo r16=0xFF) na wszystkich pinach portu
       rjmp Main
    .exit


    Kod zapala i gasi Twoje LED'y w robi to z f=6µs więc dużo nie zobaczysz. To najprostszy program więc się nie denerwuj. Poczytaj o architekturze i polecam książkę "Mikrokontrolery AVR ATmega w praktyce" BTC.
  • #4 3049321
    Chivo
    Poziom 27  
    Posty: 1325
    Pomógł: 81
    Ocena: 130
    Dzieki za pomoc, swieci ladnie. Idac dalej zrobilem taki manewr, ze mam 3 czujniki temp DS18b20 podlaczone pod nozke nr 4 i chce temp na nich zmierzona wyswietlic na LCD (JM082A http://www.pliki.jm.pl/karty/JM082ASPEC.pdf) ktory podlaczony jest do portu C. Mysle o przyklejeniu tych czujnikow do procka, chipsetu plyty i GPU klejem termoprzewodzacym tak zeby w razie przekroczenia temp (ustalonej w programie na stale) ma sie zaswiecic odp dioda. Na wyswietlaczy chce tylko wyswietlac 3 temp w postaci: 50 50 50 (odpowiednio temp proca plyty grafy). Czy ktos ma moze kod do czegos takiego lub moglby pomoc?
  • #5 3049353
    marenc
    Poziom 24  
    Posty: 881
    Pomógł: 37
    Ocena: 5
    Kolega się chce nauczyć pisać? Bo ja to wiedze, że jest potrzeba, a ten post jest typu "KTO MI TO ZROBI". Myślę, że każdy ma co dla siebie robić ...
  • REKLAMA
  • #6 3049398
    Chivo
    Poziom 27  
    Posty: 1325
    Pomógł: 81
    Ocena: 130
    zrobione juz jest brakuje tylko programu :(
  • REKLAMA
  • #7 3050424
    hunterhouse
    Poziom 26  
    Posty: 893
    Pomógł: 84
    Ocena: 3
    hehe polutować to każdy umi a pisać to nima komu :D

    a tak na serio to troche duzy przeskok kolega zrobił z programu co żsieci diodki do programu z LCD i magistralą 1wire. proponuje jeść mniejszymi kęskami bo się nam kolega zadusi.

    na poczatek LCD bo to nie znowu takie trudne. i troche własnego wkładu bo nikt ci całego programu nie napisze.

    pozdrawiam
  • #8 3050632
    fantasta
    Poziom 29  
    Posty: 1696
    Pomógł: 48
    Ocena: 100
    Albo zainstaluj bascoma, poszukaj na forum i znajdziesz jakis kod dla 3 DS a reszte sobie przerobisz :D

Podsumowanie tematu

✨ Dyskusja dotyczy pisania prostego programu w asemblerze dla mikrokontrolera ATmega16 do sterowania trzema diodami LED podłączonymi do portu D (bity 5, 6, 7). Podkreślono konieczność ustawienia portu jako wyjście poprzez rejestr DDRD oraz sterowania stanem pinów przez rejestr PORTD. Przykładowy kod asemblerowy zawiera dyrektywę .include "m16def.inc" dla definicji stałych, inicjalizację portu D jako wyjścia i prostą pętlę zapalającą i gaszącą diody z bardzo szybkim miganiem. Wskazano na potrzebę poznania architektury AVR i różnic względem 8051. Użytkownik używa AVR Studio 4 i programatora PonyProg. W dalszej części autor planuje rozszerzyć projekt o pomiar temperatury z trzech czujników DS18B20 podłączonych do pinu 4 oraz wyświetlanie wartości na wyświetlaczu LCD JM082A podłączonym do portu C. Wskazano, że projekt jest złożony i warto realizować go etapami, zaczynając od obsługi LCD. Zaproponowano także użycie Bascoma jako alternatywnego środowiska z gotowymi przykładami dla DS18B20.
Wygenerowane przez model językowy.
REKLAMA