Spojio sam prema preporuci...i ovo je kod koji sam sada napisao da cita MSB i LSB sa MAX-a pa ako moze se bacit pogled jeli ok..posto mislim da moze biti kraci:
; ***** readThermoCouple *****
readThermoCouple:
cbi PORTB,3 ; Enable CS Low
ldi R20, 0x00 ; Dummy Byte
out SPDR, R20 ; Send Dummy Byte
Read_Temp_MSB:
in R20, SPSR ; Read Data
sbrs R20, SPIF ; Wait Unti Read Data
ldi XH, HIGH(SPDR) ; Read Msb From MAX6675
rcall Read_Temp_LSB
rjmp Read_Temp_MSB
Read_Temp_LSB:
in R20, SPSR ; Read Data
sbrs R20, SPIF ; Wait Unti Read Data
ldi XL, LOW(SPDR) ; Read Lsb From MAX6675
sbi PORTB,3 ; Disable CS High
ret
rjmp Read_Temp_LSB
ret
Jeli ovako moze da cita MSB i LSB sa MAX-a? Gledam u proteusu da simuliram ali bezuspjesno...mora negdje da ima kakav datalogger...a za Floatipoint ALU u ASM cu kasnije da procavam kako se radi sad mi je cilj da ocitam MSB i LSB da mogu onda da radim shifting...
Dakle ako sam dobro razumio protokol SPI sa MAX treba da ide:
- CS postaviti na LOW
- poslati 0x00 byte na MAX
- procitati HIGH (MSB) Byte kada je SPIF 1
- poslati 0x00 byte na MAX
- procitati LOW (LSB) Byte kada je SPIF 1
sve to spremam u XH i XL registar sa kojima cu kad ovo proradi raditi shifting da se dobije 12 bita...
; ***** readThermoCouple *****
readThermoCouple:
cbi PORTB,3 ; Enable CS Low
ldi R20, 0x00 ; Dummy Byte
out SPDR, R20 ; Send Dummy Byte
Read_Temp_MSB:
in R20, SPSR ; Read Data
sbrs R20, SPIF ; Wait Unti Read Data
ldi XH, HIGH(SPDR) ; Read Msb From MAX6675
rcall Read_Temp_LSB
rjmp Read_Temp_MSB
Read_Temp_LSB:
in R20, SPSR ; Read Data
sbrs R20, SPIF ; Wait Unti Read Data
ldi XL, LOW(SPDR) ; Read Lsb From MAX6675
sbi PORTB,3 ; Disable CS High
ret
rjmp Read_Temp_LSB
ret
Jeli ovako moze da cita MSB i LSB sa MAX-a? Gledam u proteusu da simuliram ali bezuspjesno...mora negdje da ima kakav datalogger...a za Floatipoint ALU u ASM cu kasnije da procavam kako se radi sad mi je cilj da ocitam MSB i LSB da mogu onda da radim shifting...
Dakle ako sam dobro razumio protokol SPI sa MAX treba da ide:
- CS postaviti na LOW
- poslati 0x00 byte na MAX
- procitati HIGH (MSB) Byte kada je SPIF 1
- poslati 0x00 byte na MAX
- procitati LOW (LSB) Byte kada je SPIF 1
sve to spremam u XH i XL registar sa kojima cu kad ovo proradi raditi shifting da se dobije 12 bita...
SAMO-BANOVAN OD 01.11.2024