EmbeddedRelated.com
Forums
Memfault Beyond the Launch

programming atmega48

Started by Hul Tytus October 1, 2008
comp.arch.embedded
programming atmega48

	The code below is intended to detect a rising transition on the 
external interput pin by sampling the flag register but it doesn't work on an 
atmega48. With the ei-mask bit set (no sei), the code didn't detect a 
transition either. 
	On an atmega162 this does work, however, and the documentation 
describes the functioning of the flags in the same manner. Perhaps the 48 
requires setting something I missed. Any suggestions?

Hul


	ldi areg, 0xc		; set external irpt 1 for rising edge
	sts EICRA, areg
	sbi EIFR, 1		; clear flag in ext irpt 1 - number 1 bit

		; stalling untill meas device is connected & running
exirst1:
	in areg, EIFR
	andi areg, 2		; check flags existence
	brz exirst1		; & wait if not there

On Oct 1, 5:49=A0pm, Hul Tytus <h...@panix.com> wrote:

> =A0 =A0 =A0 =A0 The code below is intended to detect a rising transition =
on the
> external interput pin by sampling the flag register but it doesn't work o=
n an
> atmega48. With the ei-mask bit set (no sei), the code didn't detect a > transition either.
I had a similar problem - I was tearing my hair out - trying to poll interrupts on an ATmega649. It turned out that I was using the wrong header file (for the 169) and the bit assignments were NOT the same! Moral: check which bits you're actually sampling vs. what you're supposed to be sampling; I see magic numbers in your code snippet.
Good thought - I'll check on the ports & such.

Hul

larwe <zwsdotcom@gmail.com> wrote:
> On Oct 1, 5:49?pm, Hul Tytus <h...@panix.com> wrote:
> > ? ? ? ? The code below is intended to detect a rising transition on the > > external interput pin by sampling the flag register but it doesn't work on an > > atmega48. With the ei-mask bit set (no sei), the code didn't detect a > > transition either.
> I had a similar problem - I was tearing my hair out - trying to poll > interrupts on an ATmega649. It turned out that I was using the wrong > header file (for the 169) and the bit assignments were NOT the same! > Moral: check which bits you're actually sampling vs. what you're > supposed to be sampling; I see magic numbers in your code snippet.

Memfault Beyond the Launch