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.

Attiny 26 pierwszy program

18 Mar 2008 23:09 2829 15
  • Poziom 27  
    Witam!
    Kupiłem programator stk200 oraz procesor attiny26, zbudowałem prosty adapter i chciałbym na sam początek uruchomic najprostszy program jaki tylko się da np. ustawienie zera na nóżkę zerową portu P1 i jedynki na nóżkę 1 portu P1. Czy coś takiego po skompilowaniu ma szanse działać? Proszę o wyrozumiałość.

    LJMP START
    ORG 100H
    START:


    CLR P1.0
    SETB P1.1


    LOO:
    LJMP LOO
  • Pomocny post
    Poziom 17  
    Witaj , najpierw musisz podać kompilatorowi z jakiego mikrokontrolera bedziesz korzystał.
    tj. attiny26.

    .include "tn26def.inc"

    ;nastepnie okreslasz wektroy przerwan

    .cseg
    .org 0x00
    rjmp start ; skok do startu
    .org 0x01
    reti
    .org 0x02
    reti
    .org 0x03
    reti
    .org 0x04
    reti
    .org 0x05
    reti
    .org 0x06
    reti
    .org 0x07
    reti
    .org 0x08
    reti
    .org 0x09
    reti
    .org 0x0a
    reti
    .org 0x0b
    reti

    tutaj jest twój start

    start:

    ldi r16,ramend
    out sp,r16 ;okreslasz stos

    ldi r16,0b11111111
    out ddra,r16 ;okreslasz kierunek portu , poszczególnych linii

    ldi r16,0b11111110 ;zero na pa0 oraz 1 na pa1
    out porta,r16

    stoj:
    rjmp stoj ;skaczesz w miejscu jak zająć :)

    oczywiscie musisz podac czestotliwosc taktowania procesora lub zaprogramowac fuse bity w avr studio.
    Pozdrawiam.
  • Pomocny post
    Specjalista - Mikrokontrolery
    ani inicjalizacja stosu, ani wszystkich rejestrow przerwan nie jest potrzebna. konieczny jest tylko wektor resetu.

    0x41 0x56 0x45!!
  • Poziom 17  
    Masz rację freddie, takie moje niedobre przyzwyczajenie... :) że wszystko pisze hehhe :)
  • Pomocny post
    Poziom 29  
    mickemaster napisał:
    Witam!
    LJMP START
    ORG 100H
    START:


    CLR P1.0
    SETB P1.1


    LOO:
    LJMP LOO


    No fajny program szkoda tylko, że to asembler 51 a attiny26 to avr, to zupelnie inne asemblery. w tiny26 nie ma portu 1 jest portb i porta

    Dodano po 1 [minuty]:

    Dodatkowo w avr musisz ustawic dla kazdego portu 2 rejestry ddr i port, a jesli chcesz uzywac jako wejscia to czytasz z rejestru pin

    Dodano po 1 [minuty]:

    tu masz architekture i lista rozkazow strona 171 http://www.atmel.com/dyn/resources/prod_documents/doc1477.pdf w avr nie ma ljmp jest rjmp

    Dodano po 34 [sekundy]:

    Przykładowe programy: http://mikrokontrolery.net/avr_kursy.htm

    Dodano po 3 [minuty]:

    A tak na szybko przygotowałem Ci kod, który bedzie działał pod tiny 26 (przerobiony ze strony http://mikrokontrolery.net )



    Code:

    .include "tn26def.inc"
    .def acc= r16
    .def maska = r17
    .cseg
    .org 0x00

    ldi acc, 0b11111111 ; załaduj do r16 liczbę 255 (0xff)
    out DDRB, acc ; wpisanie do DDRB samych jedynek
    ; powoduje ustawienie pinów jako wyjście
    out PORTB, acc

    ldi acc, 0b1111100 ;
    out DDRA, acc ; piny A0 i A1 są ustawione jako wejścia
    ; pozostałe jako wyjścia
    ldi acc, 0b1110111
    out PORTA, acc

    ldi acc, 127 ;
    out SPL, acc ; ustawienie wskaˇnika stosu na 127

    cbi PORTA, 7

    start:
    rcall cpl ; wywołanie procedury cpl
    rjmp start ; pętla nieskończona

    cpl:
    in acc, PORTB ; załaduj do r16 stan przerzutników
    ; portu B
    ldi maska, 0b10000000 ; załaduj do r17 maskę negacji
    eor acc, maska ; zmień na przeciwne bity w r16 w/g maski
    out PORTB, acc ; zapisz zmodyfikowaną wartość do PORTB
    ldi acc, 200 ; czekaj ok. 200ms
    rcall waitms ;
    ret

    ; Przybliżone czasy opóznień są podane dla
    ; rezonatora 4MHz
    .def licz1 = r20
    .def licz2 = r21
    .def licz3 = r22
    waitms:
    mov licz3, acc ; ustaw czas opóznienia
    ; powtórz n razy pętlę L,
    ; co da opóznienie ok. n * 1 ms
    L:
    ; powtórz 10 razy pętlę L0,
    ; co da opóznienie ok 1ms
    ldi licz2, 10
    L0:
    ; powtórz 100 razy pętlę L1,
    ; co da opóznienie ok. 100 us
    ldi licz1, 100
    L1:
    nop ; 1 cykl
    dec licz1 ; 1 cykl
    brne l1 ; 2 cykle
    ; koniec pętli L1
    dec licz2
    brne l0
    ; koniec pętli L0
    dec licz3
    brne L
    ; koniec pętli L
    ret



    Pod dowolny pin portu B podlacz diode i bedzie migała.

    Paweł
  • Poziom 17  
    Polecam Tobie jako lekturę Książkę Mikrokontrolery AVR ATMega lub Attiny w praktyce. Bardzo fajna książka. A następnie Nota katalogowa ATMELA.

    Aby używać assemblera musisz znać architekturę mikrokontrolera więc najlepiej się z nią zapoznać.
  • Poziom 27  
    Bardzo, dziękuję kolegom za pomoc. Zabieram się do lekury a potem do pracy. Czyli proponujecie avr studio i pisanie w c?
  • Poziom 17  
    Ja proponuje AVR Studio i pisanie w Assemblerze.
    Nie wiem czy mozesz wykozystac AVR Studio do pisania w C.
    Ale mozesz piasac w C kompilowac oraz ladowac HEXA AVR studio bo on daje duzo mozliwosci konfiguracji fuse bitow itp..
  • Pomocny post
    Specjalista - Mikrokontrolery
  • Pomocny post
    Poziom 30  
    Suchy napisał:
    Nie wiem czy mozesz wykozystac AVR Studio do pisania w C.

    Może - nowe wersje same wyszukują gcc na dysku.
  • Poziom 27  
    Bardzo dziękuję za wyrozumiałość. Skopiowałem kod umieszczony przez kolegę Elektrooonik i uzyskanym plikiem hex (kompilacja AVR studio) zaprogramowałem Attiny26 (wszystkie weryfikacje ok), ale procesor nie działa tak jak powinien. Wszystkie nóżki portu b mają cały czas stan wysoki. Czy muszę wykonać jakiś reset? Zastosowałem kwarc 6 MHz ale chyba to nie ma znaczenia bo tylko czasy mrugania powinny być inne niż podano. Proszę o odpowiedź. Co robię nie tak?
  • Poziom 29  
    na ktorych nozkach mierzysz napiecie? podaj nr nozek
  • Poziom 27  
    Od 1 do 10, kompilator wywala mi jeszcze błąd w 16 linijce ale jak zmienię SPL na SP to jest ok i daje się skompilować.
  • Pomocny post
    Poziom 32  
    Suchy napisał:
    Nie wiem czy możesz wykożystac AVR Studio do pisania w C.
    jak najbardziej można pisać i uruchamiać po doinstalowaniu pakietu WinAVR.
  • Poziom 27  
    Witam ponownie. Kupiłem wczoraj Attiny2313 i udało mi się uruchomić programiki ze strony podanej przez kolegę Elektrooonik. Jeszcze raz dziekuję za zainteresowanie tematem i udzieloną mi pomoc. Temat zamykam.