04-12-2018, 08:15 AM
Pokusao sam sa ovim...vidim da ASM ima iste direktive kao i C:
Sa MAX6675<<5 shiftujem 5 mjesta u lijevo...
Read_Temp_MSB:
in R21, SPSR ; Read Data
sbrs R21, SPIF ; Wait Unti Read Data
rjmp Read_Temp_MSB
ldi R21, SPDR
out HIGH(MAX6675<<5/4), R21 ; Read Msb From MAX6675
out SPDR, R20 ; Send Dummy Byte
Sa MAX6675>>3 shiftujem desno 3 mjesta...
Read_Temp_LSB:
in R21, SPSR ; Read Data
sbrs R21, SPIF ; Wait Unti Read Data
rjmp Read_Temp_LSB
ldi R21, SPDR
out Low(MAX6675>>3/4), R21 ; Read Lsb From MAX6675
A /4 dijelim reziltat sa 4 (posto se mora pomnoziti sa 0,25C rezolucije maxa da bi se dobila temperatura....a ja to radim 1/0,25 = 4 posto ASM nema jednostavnu ALU za rad sa floating point).
Pokrenem ja simulaciju i na brojkama samo 208 mislim da nisam dobro ocitao vrijednost MAX6675 u Loop glavnome programu gdje on uzima MAX6675 i onda extracta prvi drugi i treci digit...jednostavno ne uzima vrijednost MAX6675 sa FLASH-a...tu je sada rar sa kodom...
Dakle sa ovim kodom ocekujem da se na displayu ispise 143 do 149 posto je temperatura postavljena na 146 a MAX ima -/+3C pogresku...
Evo i slike sheme iz simulatora da mozda nisam sto krivo spojio..pa da se i to vidi...
Projects.rar (Size: 1,67 KB / Downloads: 2)
Sa MAX6675<<5 shiftujem 5 mjesta u lijevo...
Read_Temp_MSB:
in R21, SPSR ; Read Data
sbrs R21, SPIF ; Wait Unti Read Data
rjmp Read_Temp_MSB
ldi R21, SPDR
out HIGH(MAX6675<<5/4), R21 ; Read Msb From MAX6675
out SPDR, R20 ; Send Dummy Byte
Sa MAX6675>>3 shiftujem desno 3 mjesta...
Read_Temp_LSB:
in R21, SPSR ; Read Data
sbrs R21, SPIF ; Wait Unti Read Data
rjmp Read_Temp_LSB
ldi R21, SPDR
out Low(MAX6675>>3/4), R21 ; Read Lsb From MAX6675
A /4 dijelim reziltat sa 4 (posto se mora pomnoziti sa 0,25C rezolucije maxa da bi se dobila temperatura....a ja to radim 1/0,25 = 4 posto ASM nema jednostavnu ALU za rad sa floating point).
Pokrenem ja simulaciju i na brojkama samo 208 mislim da nisam dobro ocitao vrijednost MAX6675 u Loop glavnome programu gdje on uzima MAX6675 i onda extracta prvi drugi i treci digit...jednostavno ne uzima vrijednost MAX6675 sa FLASH-a...tu je sada rar sa kodom...
Dakle sa ovim kodom ocekujem da se na displayu ispise 143 do 149 posto je temperatura postavljena na 146 a MAX ima -/+3C pogresku...
Evo i slike sheme iz simulatora da mozda nisam sto krivo spojio..pa da se i to vidi...
Projects.rar (Size: 1,67 KB / Downloads: 2)
SAMO-BANOVAN OD 01.11.2024