vink
het begint allemaal met elektronica
Voor mijn project ben ik bezig om een AtMega324pv te programmeren hierin zitten 2 uarts. om normaal de BAUD rade in te stellen moet normaal gesproken de baudrade in de UBRR(L of H) worden gezet. Omdat er hier 2 in zitten moet dit volgens de data sheet in de UBRRnr(L of H). Dit heb ik dus ook zo gedaan.
.include "m324Pdef.inc"
.def temp =r16
;Stackpointer
ldi temp,HIGH(RAMEND)
out SPH,temp
ldi temp,LOW(RAMEND)
out SPL,temp
;UART0--------------------------------
ldi temp,1
ldi r17,161
out UBRR1L,r17
out UBRR1H,temp
Nu krijg ik de error: Operand 1 out of range: 0xcc
terwijl het zo wel stond in de data sheet.
Wat doe ik verkeerd??
Het ding struikelt over je voorlaatste regel. Heb je de assembler verteld voor welke AVR je aan het klussen bent? Ding doet nog wat checking mbt. het al dan niet bestaan van deze soort adressen. Als het in de AVR die de assembler gebruikt niet voorkomt, gaat het stuk bij het bouwen.
vink
het begint allemaal met elektronica
Ik ben weer een stap veder.
In het avr programma zetten ik altijd .include "M324pdef.inc" of .include "M32def.inc" dit is verschillend per ic. Hierin staat vermeld wat de controller wel en niet kan.
Wat ik moeten hebben is de UBRR1L en H deze staan dus in die aplicatie note. Als ik in de aplicatie note kijk zie ik het volgende staan.
; ***** I/O REGISTER DEFINITIONS *****************************************
; NOTE:
; Definitions marked "MEMORY MAPPED"are extended I/O ports
; and cannot be used with IN/OUT instructions
.equ ...................................
.equ UBRR1L = 0xcc ; MEMORY MAPPED
.equ UBRR1H = 0xcd ; MEMORY MAPPED
Als ik nu in de aplicatie note van de AtMega32 kijk zie ik hetvolgende staan.
;***** I/O Register Definitions
.equ ....................................
.equ UCSRC =$20 ; Note! UCSRC equals UBRRH
.equ UBRRL =$09
Hierachter staat dus niet MEMORY MAPPED.
Ik vermoet nu dus ook dat het probleem wat ik heb de error: Operand 1 out of range: 0xcc hier iets mee te maken heeft.
Hoe kan ik het nu zo pragrmmeren dat ik dit nu tog kan doen.
Wat ik vreemd vind is dat bij de aplicatie note van de AtMega324p staat
; Definitions marked "MEMORY MAPPED"are extended I/O ports
; and cannot be used with IN/OUT instructions
terwijl dit in de datasheet staat.
USART_Init:
; Set baud rate
out UBRRHn, r17
out UBRRLn, r16
; Enable receiver and transmitter
ldi r16, (1<<RXENn)|(1<<TXENn)
out UCSRnB,r16
; Set frame format: 8data, 2stop bit
ldi r16, (1<<USBSn)|(3<<UCSZn0)
out UCSRnC,r16
ret
Hier staat dus wel gewoon LDI vreemd lijkt mij.
[edit]
Het werkt!
Ik zit net in de datasheet te lezen onder Register Summary. Daar staat aan het einde wat over die register die niet op de standart met out kan worden geladen. Daar stonden de comandows ST/STS en STD en STS moets ik hebben.
Hallo
Vink ik had een vraagje over je ambilight. Is het mogelijk om je te contacteren want ik vond geen gegevens in het profiel. Stuur mij maar een mailtje als je wil.
Alvast bedankt.