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

AVT3500 w asm - zaprogramowanie Attiny2313

domibros 07 Lis 2008 17:14 1617 6
REKLAMA
  • #1 5712107
    domibros
    Poziom 12  
    Witam. Posiadam płytkę testową AVT 3500 i plik w asm (Link) którym muszę zaprogramować Attiny2313. Niestety nie umiem programować i nie wiem jak i z pomocą jakiego programu to zrobić. Mam już zainstalowany Bascom-AVR, Avr Studio i PonyProg lecz nadal nie wiem jak to zrobić. Bardzo proszę o pomoc.
  • REKLAMA
  • #2 5712856
    ZbeeGin
    Poziom 39  
    Program tam przedstawiony dotyczy ATTiny13 a nie AT90S2313/Tiny2313 jakie są umieszczone w kicie AVT3500.
  • REKLAMA
  • #3 5712930
    domibros
    Poziom 12  
    Nie wiedziałem że to różnica. A da się to jakoś zmienić w programie?
  • REKLAMA
  • #4 5713073
    ZbeeGin
    Poziom 39  
    Zmienić się da, ale jest to przeróbka całego programu. Nie wystarczy zmienić definicję w dyrektywie .include.

    Jeśli w Twojej płytce siedzi ATTiny2313 to poza zmianą połączenia z diodą z wyjścia PB0 na PB2 (funkcja alternatywna OC0A) i modyfikacją wartości ładowanej do DDRB; reszta programu powinna być taka sama (Timery0 są takie same w obu układach). Trzeba by jeszcze dopisać więcej rozkazów RETI by dopełnić puste tutaj przerwania.

    Jeśli zaś w Twojej płytce siedzi AT90S2313 to program wymaga głębszych przeróbek. Trzeba skorzystać nie z licznika TIMER0 tylko TIMER1 z wszystkimi tego konsekwencjami.
  • REKLAMA
  • #5 5713304
    domibros
    Poziom 12  
    Mam i taki i taki układ. Mogę go w każdej chwili zmienić. Niestety ja nie umiem programować i czy mógłbym prosić o modyfikację tego programu?
  • Pomocny post
    #6 5745261
    ZbeeGin
    Poziom 39  
    Programik dla AVT3500 z ATTiny2313:

    ; Henryk Więsyk
    ; 16.10.2007
    ; wersja 1.0 - przerobiona na ATTiny2313
    ; Dioda do masy z OC0A
    ; Wewnętrzny oscylator ustawiony na 1MHz (RC@8MHZ + CLKDIV8)
    
        .include     "tn2313def.inc"
    
    ;*********************************************
    ; Definicje
    ;*********************************************
    
        .def    czas1 =    R17   ; licznik opóźnienia
        .def    czas2 =    R18
        .def    temp  =    R19   ; bajt dla fazy
    
        .cseg
        .org    0x00
    
        rjmp start               ; reset
        reti                     ; int0
        reti                     ; int1
        reti                     ; ticap1
        reti                     ; tcoma1
        reti                     ; tovf1
        reti                     ; tovf0
        reti                     ; urxc
        reti                     ; udre
        reti                     ; utxc
        reti                     ; aco
        reti                     ; pcint
        reti                     ; tcomb1
        reti                     ; tcoma0
        reti                     ; tcomb0
        reti                     ; usta
        reti                     ; uovf
        reti                     ; eerdy
        reti                     ; wdtovf
    
    ;*********************************************
    ; Inicjalizacja
    ;*********************************************
    start:
        cli                       ; blokada przerwań
        ldi  temp, (1 << PB2)     ; linia OCR0A wyjście
        out  DDRB, temp           ; zapis do rejestru
    
        sbi  ACSR, ACD            ; wyłącz komparator
        
        ldi  temp, (1 << CLKPCE)|(1 << CLKPS0)
        out  CLKPR, temp          ; ustawienie preskalera 
    
        ldi  temp, (1 << COM0A0)|(1 << COM0A1)|(1 << WGM00)    
        out  TCCR0A, temp         ; tryb PWM, kanał A clear-down
    
        ldi  temp, (1 << CS01)    ; preskaler timera 0 = 8
        out  TCCR0B, temp         ; 
        
        ldi  temp, 0x06           ; zapis wartości do 
        out  OCR0A, temp          ; rejestru porównania
        
        ldi  ZL, low(jasnosc << 1)    
        ldi  ZH, high(jasnosc << 1)    
    
    ;*****************************************
    ; główna petla
    ;*****************************************
    main:
        dec  czas1                ; pętla odliczająca czas
        brne main
        dec  czas2
        brne main
    
        lpm  temp, Z+             ; załaduj  bajt z tablicy
        com  temp                 ; dla diody dołączonej do plusa negacja
        out  OCR0A, temp          ; i ładuj PWM-a
        ldi  temp, low(jasnosc << 1) + 140    
        cp   ZL, temp             ; koniec tablicy?
        brne main                 ; jeszcze nie to na początek
    
        ldi  ZL, low(jasnosc1 << 1)
        ldi  ZH, high(jasnosc1 << 1)
        clr  czas1                ; zeruj licznik opóźnienia
        clr  czas2
    
    swieczka:
        dec  czas1                ; pętla odliczająca czas
        brne swieczka
        dec  czas2
        brne swieczka    
    
        lpm  temp, Z+
        com  temp                 ; dla diody dołączonej do plusa
        out  OCR0A, temp
        ldi  temp, low(jasnosc1 << 1) + 200    
        cp   ZL, temp
        brne swieczka
    
        ldi  ZL, low(jasnosc << 1)
        ldi  ZH, high(jasnosc << 1)    
        clr  czas1
        clr  czas2
    
        rjmp main                ; i od nowa...
    
    ; wartości współczynnika wypełnienia
        .org    0x100
    jasnosc:
        .DB     10 , 20 , 30 , 40 , 50 , 60 , 70 , 80 , 90 , 100
        .DB     10 , 10 , 10 , 255 , 0 , 30 , 25 , 240 , 2 , 5
        .DB     10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10
        .DB     100 , 66 , 90 , 120 , 250 , 160 , 10 , 22 , 230 , 67
        .DB     134 , 234 , 56 , 76 , 10 , 10 , 10 , 10 , 100 , 200
        .DB     0 , 100 , 0 , 200 , 250 , 100 , 10 , 40 , 200 , 250
        .DB     10 , 100 , 10 , 40 , 80 , 190 , 250 , 137 , 89 , 250
        .DB     255 , 190 , 160 , 20 , 35 , 58 , 36 , 98 , 82 , 16
        .DB     0 , 250 , 0 , 123 , 36 , 159 , 178 , 95 , 12 , 100
        .DB     49 , 169 , 250 , 25 , 89 , 200 , 58 , 236 , 250 , 100
        .DB     10 , 250 , 20 , 250 , 30 , 255 , 90 , 10 , 36 , 25
        .DB     30 , 50 , 255 , 200 , 100 , 136 , 63 , 150 , 105 , 56  
        .DB     250 , 0 , 13 , 200 , 6 , 18 , 63 , 185 , 200 , 200
        .DB     200 , 150 , 200 , 200 , 150 , 100 , 80 , 50 , 10 , 0        
    
        .org    0x200
    jasnosc1:
        .DB     0 , 10 , 20 , 30 , 40 , 50 , 0 , 30 , 20 , 10
        .DB     0 , 0 , 80 , 0 , 0 , 0 , 100 , 0 , 0 , 0
        .DB     0 , 10 , 30 , 50 , 70 , 50 , 40 , 30 , 20 , 10
        .DB     0 , 0 , 0 , 30 , 60 , 90 , 60 , 30 , 0 , 0
        .DB     0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
        .DB     0 , 10 , 20 , 30 , 40 , 50 , 60 , 70 , 60 , 50
        .DB     0 , 40 , 30 , 20 , 10 , 0 , 0 , 0 , 0 , 0
        .DB     0 , 10 , 20 , 30 , 40 , 50 , 60 , 60 , 60 , 70
        .DB     0 , 50 , 30 , 10 , 0 , 0 , 0 , 50 , 100 , 0
        .DB     0 , 10 , 30 , 70 , 0 , 0 , 0 , 0 , 120 , 80
        .DB     0 , 0 , 30 , 90 , 90 , 40 , 0 , 0 , 120 , 80
        .DB     0 , 10 , 80 , 50 , 0 , 0 , 0 , 0 , 80 , 30
        .DB     0 , 20 , 120 , 80 , 20 , 0 , 0 , 0 , 80 , 0
        .DB     0 , 10 , 40 , 80 , 40 , 0 , 0 , 0 , 90 , 120
        .DB     0 , 10 , 90 , 60 , 20 , 0 , 0 , 0 , 120 , 70
        .DB     0 , 10 , 60 , 40 , 20 , 0 , 0 , 0 , 90 , 0
        .DB     0 , 10 , 30 , 60 , 100 , 50 , 20 , 10 , 0 , 0
        .DB     0 , 90 , 50 , 10 , 0 , 0 , 150 , 100 , 0 , 0
        .DB     0 , 150 , 100 , 30 , 40 , 50 , 60 , 80 , 60 , 40
        .DB     0 , 10 , 80 , 100 , 0 , 0 , 80 , 120 , 0 , 0


    Sprawdzono w realnie działającym układzie. Dioda do goldpina B2 przez rezystor do masy.
  • #7 5747325
    domibros
    Poziom 12  
    Bardzo dziękuję za pomoc!
REKLAMA