سلام
من دو میکرو atmega32 را از طریق پروتکل SPI با موفقیت به هم مرتبط کرده ام ولی مشکل من در تبادل متغیرها از نوع float می باشد.به عنوان مثال میکرو slave عدد 12.52 را به سمت میکرو master ارسال می کند ولی مقدار نمایش داده شده توسط میکرو master روی lcd عدد 12 است!مقدار اعشار آن حذف میشود.لطفا از دوستان عزیز میخواهم که با توجه به سورس برنامه زیر مرا راهنمایی کنند:
Slave MCU
Master MCU
من دو میکرو atmega32 را از طریق پروتکل SPI با موفقیت به هم مرتبط کرده ام ولی مشکل من در تبادل متغیرها از نوع float می باشد.به عنوان مثال میکرو slave عدد 12.52 را به سمت میکرو master ارسال می کند ولی مقدار نمایش داده شده توسط میکرو master روی lcd عدد 12 است!مقدار اعشار آن حذف میشود.لطفا از دوستان عزیز میخواهم که با توجه به سورس برنامه زیر مرا راهنمایی کنند:
Slave MCU
کد:
#include <mega32.h> #include <spi.h> #include <stdlib.h> float data_send,data_get; void main(void) { PORTB=0x00; DDRB=0x40; ACSR=0x80; SFIOR=0x00; SPCR=0B01100100; SPSR=0x00; while (1) { data_send=12.52; data_get=spi(data_send); }; }
کد:
#include <mega32.h> #asm .equ __lcd_port=0x15 ;PORTc #endasm #include <lcd.h> #include <spi.h> #include <stdlib.h> unsigned char buffer[10]; float data_send,data_get; void main(void) { PORTB=0x00; DDRB=0xB0 | 0b00000001; SPCR=0B01110111; SPSR=0x00; lcd_init(16); data_get=spi((float)data_send); ftoa(data_get,2,buffer); lcd_puts(buffer); while (1) { }; }
دیدگاه