Bobbyb
hallo
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...
Bobbyb
hallo
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,r20hiermee 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)
Bobbyb
hallo
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!!