با توجه به دیتا شیت وقتی بیت spi2x در ثبات spsr یک میشه باید فرکانس sck در حالت master و در هنگام ارتباط دوبرابر بشه . ولی من تو عمل نتونستم همچین کاری بکنم . کسایی که تجربه دارن لطفا کمک کنن. :roll:
بابا ایول هیچ کی به ما محل نمی ذاره :) :?:
خودت گفتی اونایی که تجربه دارن :wink:
من با spi کا رکردم اما نه مد دوبرابرش مشکل خاصی هم نداشت کار می کرد
لازم متن برنامه را قرار بدید. چون نباید مشکلی باشد.
البته نهایت پالس ساعت SPI در فرکانس 16Mhz تنها 8Mhz است.
فرکانس چقدر بود؟ در شبیه سازی جواب گرفتید؟
باید بگم که همه چیزهایی که دیدم تو پروتئوس بود.
این هم سورس
نقل قول: .include"m8def.inc"
.org 0
rjmp reset
reset:
ldi R16,low(ramend)
out spl,r16
ldi R16,high(ramend)
out sph,r16
ldi r16,0b00101101
out ddrb,r16
sbi portb,0
ldi r16,255
out ddrd,r16
ldi r16,0x50
out spcr,r16
ldi r16,1
out spsr,r16
ldi r17,23
again:
cbi portb,0
out spdr,r17
inc r17
cpi r17,150
brne wait2
clr r17
wait2:
sbis spsr,spif
rjmp wait2
sbi portb,0
rjmp again
همون طور که می بینید داره دائم از 0 تا 150 رو میفرسته
ولی تغییر ثبات spsr از 1 به صفر هیچ تغییری رو ایجاد نمی کنه. به نظرتون مشکل چیه
حق با شما بود
در شبیه ساز Proteus این یک مشکل است.
اگر مدار را ببندید مشکل حل می شود(با توجه به متن راهنمای AVR)
مشکل Proteus این نیست که فرکانس را دوبرابر کند مشکل این که بیت spi2x تغییر نمی کند. یعنی همیشه 0 است. این هم از Proteus .
:roll:
ممنون از لطفتون واقعا گیر کرده بودم . بعضی وقت ها پروتئوس هم آدم رو سر کار میذاره.