最新免费av在线观看,亚洲综合一区成人在线,中文字幕精品无码一区二区三区,中文人妻av高清一区二区,中文字幕乱偷无码av先锋

登錄 免費(fèi)注冊(cè) 首頁(yè) | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | 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

讀寫(xiě)外部ram不正確,疑問(wèn)。。。。。。

作者:012278 欄目:單片機(jī)
讀寫(xiě)外部ram不正確,疑問(wèn)。。。。。。
我用的是meg162的板子,外擴(kuò)32K的ram,只寫(xiě)了一個(gè)測(cè)試讀寫(xiě)功能的小程序,卻始終運(yùn)行不正常。
程序如下:
// Target : M162  
// CRYSTAL: 11.0592MHZ  

#include <iom162v.h>
#include <macros.h>

#define  RUN_LIGHT  PORTD|=0x10  //PC0 RUN LED light
#define  RUN_BLACK  PORTD&=0xEF  //PC0 RUN LED black

unsigned int i;  

extern unsigned CHAR data[2000];  

//define mappings  
void mapping_init(void)  
{  
asm(  
  ".area MEMORY(abs)\n"  
  ".org 0x2000\n"  
  " _data:: .blkb 2000\n"  
  ".text\n"  
);  
}  

void port_init(void)
{
     PORTA = 0xff;  //PA OUTPUT
     DDRA  = 0xFF;
     PORTB = 0xFF;  //PB0-PB2  input, others OUTPUT
     DDRB  = 0xb8;
     PORTC = 0xf3;  //PC OUTPUT
     DDRC  = 0xFF;
     PORTD = 0XeF;
     DDRD  = 0x72;
     PORTE = 0x07;
     DDRE  = 0x00;
}

void InitSys()
{   
     //stop errant interrupts until set up
     CLI(); //disable all interrupts
     port_init();
         
     MCUCR= 0x80;  
     EMCUCR = 0x00;
    
     TIMSK= 0x00; //timer interrupt sources
     ETIMSK=0x00;
     GICR= 0x00;
     PCMSK0=0x00;
     PCMSK1=0x00;
     SEI(); //re-enable interrupts
     //all peripherals are now initialised
}

void main(void){

    unsigned int j;
    InitSys();     

    for (j=0;j<2000;j++){
        data[j]=0xf0;    
    }
    if (data[5]==0xf0) {RUN_LIGHT;}   //讀取數(shù)組某一位的值,如果與寫(xiě)入的一致,測(cè)試燈亮
}

程序運(yùn)行的結(jié)果應(yīng)該是測(cè)試燈直接變亮才對(duì),可是它根本沒(méi)反應(yīng)
測(cè)試燈沒(méi)有問(wèn)題,已經(jīng)檢查過(guò)了
我也翻過(guò)以前的帖子,數(shù)組的定義和操作沒(méi)看出什么不同
想不出來(lái)是哪里的問(wèn)題
我用的ICCAVR,哪位大蝦可以答疑解惑嗎?
先行謝過(guò)。

2樓: >>參與討論
huangxz
片選有問(wèn)題沒(méi)有?
 
3樓: >>參與討論
xwj
地址鎖存器要用74AHC或74F
再核對(duì)下SRAM的速度
必要時(shí)插入等待周期

4樓: >>參與討論
012278
感謝樓上兩位的幫助
我根據(jù)你們的意見(jiàn)更改了設(shè)置后出現(xiàn)了個(gè)新現(xiàn)象
如果我寫(xiě)入常量給數(shù)組賦值時(shí),程序運(yùn)行正常,測(cè)試燈亮
如果換成變量給數(shù)組賦值,結(jié)果就不對(duì)了
哪位大蝦指點(diǎn)一下啊

* - 本貼最后修改時(shí)間:2006-9-18 20:17:34 修改者:012278

5樓: >>參與討論
dadodo
還是速度問(wèn)題
 
6樓: >>參與討論
極限思考
同意樓上
 
7樓: >>參與討論
012278
求助求助
不光是這個(gè)地方
在我寫(xiě)的另一個(gè)串口測(cè)試小程序里
也出現(xiàn)了同樣的問(wèn)題
可以給串口常量
但是給他個(gè)變量就不行了
不過(guò)在沒(méi)有外擴(kuò)ram時(shí)是沒(méi)有這個(gè)現(xiàn)象的

8樓: >>參與討論
壞孩子
不要使用絕對(duì)定位
使用ICC的外擴(kuò)存儲(chǔ)器功能的時(shí)候,不要使用他的絕對(duì)定位代碼。有BUG。
外擴(kuò)了存儲(chǔ)器以后,直接使用就可以了。
系統(tǒng)會(huì)自動(dòng)把全局變量放到外部存儲(chǔ)器中。
ICC自動(dòng)把軟件堆棧和硬件堆棧放到內(nèi)部的存儲(chǔ)器中,而外部存儲(chǔ)器就全部用來(lái)存放全局變量了。
ICC的BUG是,他自己絕對(duì)定位的代碼,使用以后,系統(tǒng)回仍然無(wú)視那段已經(jīng)占用的空間,其他全局變量會(huì)覆蓋那段區(qū)域。

樓主雖然使用了絕對(duì)定位,但是在初始化的時(shí)候忘記了調(diào)用函數(shù)
void mapping_init(void);
事實(shí)上,在初始化的時(shí)候調(diào)用一下就可以了。

但是,仍然會(huì)有錯(cuò)誤。
正確的使用方法是:
include <iom162v.h>
#include <macros.h>

#define  RUN_LIGHT  PORTD|=0x10  //PC0 RUN LED light
#define  RUN_BLACK  PORTD&=0xEF  //PC0 RUN LED black

unsigned int i;  

unsigned CHAR data[2000];  


void port_init(void)
{
     PORTA = 0xff;  //PA OUTPUT
     DDRA  = 0xFF;
     PORTB = 0xFF;  //PB0-PB2  input, others OUTPUT
     DDRB  = 0xb8;
     PORTC = 0xf3;  //PC OUTPUT
     DDRC  = 0xFF;
     PORTD = 0XeF;
     DDRD  = 0x72;
     PORTE = 0x07;
     DDRE  = 0x00;
}

void InitSys()
{   
     //stop errant interrupts until set up
     CLI(); //disable all interrupts
     port_init();
         
     MCUCR= 0x80;  
     EMCUCR = 0x00;
    
     TIMSK= 0x00; //timer interrupt sources
     ETIMSK=0x00;
     GICR= 0x00;
     PCMSK0=0x00;
     PCMSK1=0x00;
     SEI(); //re-enable interrupts
     //all peripherals are now initialised
}

void main(void){

    unsigned int j;
    InitSys();     

    for (j=0;j<2000;j++){
        data[j]=0xf0;    
    }
    if (data[5]==0xf0) {RUN_LIGHT;}   //讀取數(shù)組某一位的值,如果與寫(xiě)入的一致,測(cè)試燈亮
}



參與討論
昵稱(chēng):
討論內(nèi)容:
 
 
相關(guān)帖子
第一個(gè)avr的程序,遇到問(wèn)題,編譯器icc
請(qǐng)問(wèn)哪里有AVRStudio軟件使用教程
初用tiny2313v,請(qǐng)教flash空間的問(wèn)題
在這,天津的AVR報(bào)個(gè)名
uC/OS-II AVR-GCC 移植 下載
免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號(hào)