Re: atmega 128 portd problémák

Laurinyecz Zoltán lauri at mail.globonet.hu
Mon Sep 13 23:17:09 CEST 2004


Szia!

    > > Igazad van én nem erre gondoltam. De ezeket a funkciókat össze lehet
kavarni
     > > egy sima SEI utasítással? Mert ha nem akkor nem tudom mitol van.
És még
    >
    > Igen ossze, ha az external interrupt engedelyezve van, de nincs
    > kiszolgalo rutinja. ekkor elugrik akarhova aztan csinal amit akar. De
    > ezt nem tartom valoszinunek, hogy ez lenne a baj. Kuld el a  progit
ami
Pedig igencsak lehet, hogy ez lesz a megfejtés mivel úgy gondolkoztam hogy
ha nincs kiszolgáló rutin a külso megszakításhoz de az nem is következik be
attól még a progi többi részének muködnie kell. Egy köztes tesztet próbáltam
meg lefuttatni, természetesen készül a kiszolgáló rutin is. Íme a progi

.org 0x0000
rjmp init
reti
rjmp INT0
reti
rjmp INT1
reti
rjmp INT2
reti
rjmp INT3


init:
 ldi r16, low(RAMEND)
 out SPL, r16
 ldi r16, high(RAMEND)
 out SPH, r16

 ldi r16, 0xFF                             ;PORTA
 out DDRA, r16                          ;kimenet

 ldi r16, 0x00                             ;POTRD
 out DDRD, r16                         ;bemenet

 sei                                             ;megszakítások engedélyezve
(általános)
 ldi r16, 0x0F                             ;int0-3
 out EIMSK, r16                         ;engedélyezve

flashing_line:

 ldi r16, 0xFF
 out PORTA, r16
 rcall delay
 ldi r16, 0x00
 out PORTA, r16
 rcall delay
 rjmp flashing_line

delay:                                        ;ez itt egy szoftveres
késleltetés akar lenni
 ldi r16, 8                                  ;ha igaz 4 MHz-es órajelnél 0.5
sec
  outer_loop:                              ;forrás: www.avrbeginners.net
  ldi r24, low(3037)
  ldi r25, high(3037)
   delay_loop:
    adiw r24, 1
    brne delay_loop

  dec r16
  brne outer_loop
ret




More information about the Elektro mailing list