音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

究竟是AVR的問題還是GCC的問題?或者是我的問題?

作者:fen_mo 欄目:單片機(jī)
究竟是AVR的問題還是GCC的問題?或者是我的問題?
各位DX,小弟我遇到一個(gè)新的問題,百思不得其解。
還望各位給予慷慨相助。先謝謝了啊


按照本人的想法,一直從串口送出以下數(shù)據(jù)從00到FF。
程序見后面。可是這Y運(yùn)行后的結(jié)果卻是這樣:
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F
20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F
30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F

C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF
D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF
E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF
F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA 7B FC FD FE FF
瞧,中間的部分都不見了?!郁悶啊

unsigned CHAR pp;
void  main(void)
{
    wdt_disable();
    CPU_INIT();
    while(1)
    { for(pp=0;pp<0xff;pp++)
         {    put_CHAR_to_uart(pp); }
    }
}


void    put_CHAR_to_uart(unsigned CHAR xDATA)
{
         cli();
    loop_until_bit_is_set(UCSRA,UDRE);
    UDR    =xDATA;
}

2樓: >>參與討論
winsu
可參看芯片DataSheet,照搬其例程序即可。
 
3樓: >>參與討論
zsmbj
是不是計(jì)算機(jī)uart接收軟件的問題,是串口調(diào)試助手嗎?
1、把pp改為從0x40開始看看
2、為什么FA后邊是7B啊?

4樓: >>參與討論
fen_mo
是的 用的是串口調(diào)試助手
 
5樓: >>參與討論
fen_mo
改成0X40開始后成了這樣
C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF
D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE FF
C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF
D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF
E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF
F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F
20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F
30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 

6樓: >>參與討論
zsmbj
應(yīng)該是波特率的問題,你用的什么波特率。
內(nèi)部晶振還是外部晶振。電壓多少V?還有把那個(gè)初始化函數(shù)貼上來看看。


7樓: >>參與討論
fen_mo
老大 參考datasheet也不行啊
 
8樓: >>參與討論
fen_mo
對(duì)AVR和GCC都快失去信心了!
初始化設(shè)置程序如下:
void CPU_INIT(void)
{    
    TCCR1A    =0x00;
    TCCR1B    =0x02;
    TCNT1    =0xD8F0;
    TIMSK    =0X00;                
//----------RS232 SETUP----------
    UBRRL    =0x67;
    UBRRH    =0x00;
    UCSRC    =0x86;    
    UCSRB    =0x98;    
    UCSRA    =0x02;    //設(shè)置倍速
    
//---------SPI SETUP---------
    SPCR    =0x41;            //SPI使能并設(shè)置其時(shí)鐘為晶體時(shí)鐘的1/16.注意沒有開啟SPI中斷功能
    SPSR    |=0x01;            //設(shè)置SPI速度加倍
    DDRB    =0xEF;            //PB4為MISO,設(shè)置為輸入
    PORTB    =0xFF;            //此時(shí)端口輸出1電平

    //------外部中斷設(shè)置---
    MCUCR    =0x02;            
    GICR    =0x40;            //外部中斷0使能
    //------端口設(shè)置-------
    DDRC    =0xFF;
    PORTC    =0xFF;
    DDRD    =0xFA;            
    PORTD    =0xFF;
    
}

put_char_to_uart程序完全照搬stdio.h文中的定義方式,結(jié)果還是這樣。實(shí)在是沒有招了 看來呀8位機(jī)還是51好用啊 要想快點(diǎn)就用430或者ARM算了 反正這玩意兒也不會(huì)貴多少。
    簡直忍受不了啦!!有沒有人救一把啊 要不我可就真放棄AVR和GCC了啊


9樓: >>參與討論
ipman
外部晶振就好了
 
10樓: >>參與討論
hotpower
改成for(unsigned int pp=0;pp<0x100;pp++)試試
 
11樓: >>參與討論
zhermit
:)
那絕對(duì)不是avr和gcc的錯(cuò),我串口2K多數(shù)據(jù)連續(xù)發(fā)過,可沒丟或者錯(cuò)一個(gè).
檢查你的熔絲位設(shè)置,avr默認(rèn)可是1M內(nèi)部.
另外,你選擇了倍速,PC做相應(yīng)設(shè)置了?

祝 好運(yùn)

* - 本貼最后修改時(shí)間:2005-9-16 23:01:06 修改者:zhermit

12樓: >>參與討論
gbchang
AVR中單周期指令比430多的多,我從430又改回用AVR了.
 
13樓: >>參與討論
zsmbj
應(yīng)該是波特率的問題,你用的什么波特率?
問了半天,只貼了一個(gè)代碼,還是有許多情況不知道啊,如何幫你。

哪個(gè)CPU,M8?內(nèi)部晶振還是外部晶振?電壓多少V?這些都是很重要的。

問題提的也有問題:“究竟是AVR的問題還是GCC的問題?或者是我的問題?”

告訴你,肯定是你問題。

采用外部晶振看看。




14樓: >>參與討論
fen_mo
熔絲位設(shè)置的是內(nèi)部8M。波特率是按照數(shù)據(jù)手冊進(jìn)行設(shè)置的
熔絲位設(shè)置的是內(nèi)部RC、8M。波特率是按照數(shù)據(jù)手冊進(jìn)行設(shè)置的。在9600時(shí)設(shè)置值為103(即0X67)。請(qǐng)問在PC上還應(yīng)該有什么設(shè)置?

15樓: >>參與討論
zsmbj
呵呵,改為外部晶振吧!
電壓是5V嗎?
程序和設(shè)置都沒有問題。

16樓: >>參與討論
HotPower
郁悶...樓主一直不回答正題---晶振是內(nèi)還是外???
 
17樓: >>參與討論
一甲
肯定不是GCC和AVR的問題,是自己的問題
我個(gè)人覺得做我們這一行的,先不要去懷疑芯片或開發(fā)軟件、硬件,先要檢討的是自己!

* - 本貼最后修改時(shí)間:2005-9-21 23:21:39 修改者:一甲

一甲工作室,會(huì)有你需要的!

18樓: >>參與討論
javie
支持一甲的說法
不過應(yīng)該是內(nèi)部晶振的問題
做AVR的USART出問題99.9999%是這個(gè)問題

19樓: >>參與討論
suspension
應(yīng)該是你硬件的問題!
內(nèi)部8M,你仔細(xì)查看Datasheet,上面寫的很清楚,USART傳輸時(shí),會(huì)有誤差。
你要把教正系數(shù)寫入OSCCAL寄存器里,自重新試一試,如果還是不可以,你要考慮用外部晶振了!
不要懷疑AVR MCU,你要耐心些,AVR的MCU真的很不錯(cuò)的。只是你自己有點(diǎn)著急。。

20樓: >>參與討論
fen_mo
老大 你說的是有道理 可視我用匯編都是正確的呀
 
21樓: >>參與討論
fen_mo
忙其他事去了 不好意思 用的是內(nèi)部的
 
22樓: >>參與討論
kanprin
應(yīng)該是你的問題
人家問你很多問題你都沒有回答人家,他們也愛莫能助吧?
用內(nèi)部RC作波特率的發(fā)生器不穩(wěn)定,最好用外部的。

而下面的設(shè)置:

//----------RS232 SETUP----------
    UBRRL    =0x67;
    ~~~~~~~~~~~~~~~
    UBRRH    =0x00;
    ~~~~~~~~~~~~~~~
    UCSRC    =0x86;    
    UCSRB    =0x98;    
    UCSRA    =0x02;    //設(shè)置倍速

   好像要先操作高位, 后操作低位吧 ?
   以前碰到過類似的操作,先操作低位好像就不行了。
后來看了DATASHEET 才知道所有的16位寄存器都要先操作高位后操作低位。

23樓: >>參與討論
ipman
uart發(fā)送大量數(shù)據(jù)不建議內(nèi)部rc,會(huì)出錯(cuò)
發(fā)送少量數(shù)據(jù)看不出來問題,當(dāng)然你要仔細(xì)校正好。

24樓: >>參與討論
sflfw
建議
先做過定時(shí)器 例如1秒,檢測晶振速度,如果師默認(rèn)的話一般是1MHZ8MHZ 8分頻)。

我也是剛學(xué)AVR的,自己做的板子,出問題起來還麻煩些。慢慢來吧!

* - 本貼最后修改時(shí)間:2005-10-19 19:39:34 修改者:sflfw

25樓: >>參與討論
xiaoerge
看一下GCC編譯出來的匯編文件,比較一下,也許就知道了
 
26樓: >>參與討論
xinjie1023
最好是用外部晶振
外部晶振應(yīng)該可以的,雙龍網(wǎng)站上有串口的代碼,你可以再試一下

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
頭痛的復(fù)位問題
怎么下載程序到仿真器上去?
簡單而奇怪的問題(有關(guān)AVR的IO口),請(qǐng)各位朋友賜教
緊急呼救(雞毛信): ATMega8L的PB0如何設(shè)置為輸出???
大家?guī)蛶兔Π?/a>
免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)