Ik ben bezig met de uart van een atmega 128 aan de praat te krijgen en dat lukt.

wat minder gaat is het controleren of de uart klaar is met verzenden het volgende programma verstuurd 1 maal en blijft dan in de test loop vast zitten.



			ldi		r20,(0<<TXC1)|(0<<U2X1)|(0<<MPCM1)
;			sts		UCSR1A,r20

			ldi		r20,0b00011101	;RXCIE1, TXCIE1, UDREI1, RXEN1, TXEN1, UCSZ12, RXB81, TXB81
			sts		UCSR1B,r20

			ldi		r20,0b00000110	;X, UNMSEL1, IUPM11, UPM0, USBS1, UCSZ11, UCSZ10, UCPOL1
			sts		UCSR1C,r20

			ldi		r20,0b00000000
			sts		UBRR1H,r20

			ldi		r20,0b00000011
			sts		UBRR1L,r20

A:			
test:			ldi	r20,UCSR1a
;			sts	lcd1,r20
;			call	lcdwrsram
;			call	wait2r
			sbrs	r20,5
			jmp	test
						
			ldi	r20,0b10101010
			sts	UDR1,r20

;			call 	wait2r
			
			jmp		A

Wie weet wat ik zoek?

Waarom gebruik je de door Atmel voorgekauwde constanten niet? Maakt het wat leesbaarder.

Zonder echt in die code gedoken te zijn:
Heb je nog ergens een interrupt aan staan die getriggerd wordt? Als die routine er niet is, is het wat onvoorspelbaar, als-ie er wel is, zou het kunnen dat die je probleem oplost en je dus nooit meer met een leeg register komt te zitten.

Ten overvloedde: ik zie je nergens iets versturen. Alleen wat inits doen...

Op 24 april 2006 18:27:20 schreef Marco69:
Waarom gebruik je de door Atmel voorgekauwde constanten niet? Maakt het wat leesbaarder.

zoals?

Zonder echt in die code gedoken te zijn:
Heb je nog ergens een interrupt aan staan die getriggerd wordt? Als die routine er niet is, is het wat onvoorspelbaar, als-ie er wel is, zou het kunnen dat die je probleem oplost en je dus nooit meer met een leeg register komt te zitten.

nee alle interupts staan uit

Ten overvloedde: ik zie je nergens iets versturen. Alleen wat inits doen...


        ldi	r20,0b10101010
	sts	UDR1,r20

hiermee verzend ik. en dat werkt als ik het los neerzet (zonder udre1 in UCSR1a te testen).

Op 25 april 2006 09:41:44 schreef Bobbyb:
[...]
zoals?

Kijk even in je include files. Elke bit in die registers heeft een define, zodat je met SBI / CBI alles naar je hand kunt zetten. Dat van jou is zonder meer korter, maar mogelijk niet portable en zonder datasheet ernaast niet leesbaar.

[...]
nee alle interupts staan uit

Dat was ook te simpel :)

[...]


        ldi	r20,0b10101010
	sts	UDR1,r20

hiermee verzend ik. en dat werkt als ik het los neerzet (zonder udre1 in UCSR1a te testen).

Kijk ook eens naar die sbrs enzo die je gebruikt. Heeft iets met 'extended I/O map' te maken. Daar heb ik geen ervaring mee (doe meer met het kleinere spul van Atmel), wellicht moet je daar de SBIC / SBIS voor gebruiken... (en misschien slaat deze opmerking ook nergens op; maar functioneel zie ik geen andere reden waarom die code niet zou werken - tenzij die AVR leuke features heeft die ik niet ken natuurlijk)

ja het zat em inderdaat in de extenden io


ldi	r20,UCSR1a
sts	lcd1,r20

Hij lade bij ldi de geheugen plek 9e of zo en niet wat er op die geheugen plet staat.

Dus het werkt nu :)

THXX!!