久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2782|回復(fù): 5
打印 上一主題 下一主題
收起左側(cè)

OA日志

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:82781 發(fā)表于 2015-6-13 15:44 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
今天難題了,昨天建華改了硬件電路,今天不好用了,前天是好用,今天不好用了?奇怪,我又對(duì)程序檢查,其實(shí)很簡(jiǎn)單啊,ADC嘛,無(wú)非是第一步初始化端口,第二選中ADC的通道,然后時(shí)能中斷,開始轉(zhuǎn)換,就這么簡(jiǎn)單,為什么呢?后來(lái)發(fā)現(xiàn)程序在不DBUG的時(shí)候不運(yùn)行,所以引起我的懷疑,我換了硬件電路,換了一塊板子,結(jié)果程序跑起來(lái)了但是還是解不出來(lái)了,很是郁悶,然后著重開始對(duì)癥手冊(cè)對(duì)程序繼續(xù)檢查,其中有一句話是這樣的“ It needs about 27 ADC clocks to complete an A/D conversion.”也就是說(shuō)ADC時(shí)鐘我是可以控制的,間接地對(duì)目標(biāo)精心采樣,但是遺憾的是,我用的是200K的ADC時(shí)鐘,那么采樣肯定達(dá)不到200K,但是確實(shí)好用 ,信號(hào)要求,必須達(dá)到300-200K的速率才可以接出來(lái)正確的波,很難理解,PLL時(shí)鐘是50M。這個(gè)應(yīng)該和PLL沒(méi)什么關(guān)系,因?yàn)樵词现形疫x定外部的晶體,下午快下班的時(shí)候我把DIV換到4,然后莫名其妙的就好了,此時(shí)軟件測(cè)得采樣率每秒鐘11萬(wàn)次,根本不對(duì),卻可以得到正確的數(shù)據(jù),凌亂。示波器波形顯示上升沿和下降沿時(shí)間均在5微妙左右,所以硬件上沒(méi)有問(wèn)題,有問(wèn)題也是我程序的問(wèn)題,但是這個(gè)真的求不出來(lái)這個(gè)速率,因?yàn)闄?quán)威的軟件取采樣率和實(shí)際并不相符啊!必須要200K-300K的速率來(lái)采才會(huì)得到正確的結(jié)果,可是我設(shè)定的是11萬(wàn)次的采樣率一樣可以得到正確的值,很詭異很詭異!有待研究學(xué)習(xí)啊,好神奇啊!真是有神啊!有神!
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:82781 發(fā)表于 2015-6-13 15:44 | 只看該作者
    今天搞DHCP的時(shí)候,也碰到一個(gè)很奇怪的問(wèn)題,無(wú)反應(yīng),后來(lái)檢查程序,原來(lái)移植程序的時(shí)候中斷引腳沒(méi)有改,改掉之后發(fā)現(xiàn)仍然獲取不到DHCP服務(wù)器給的IP地址,萬(wàn)般無(wú)奈下只好改成固定IP測(cè)試硬件    txrx,測(cè)得硬件完全正常,只不過(guò)剛開始碰到一個(gè)號(hào)段問(wèn)題,那就是0號(hào)段的可以向1號(hào)段發(fā)。反之則不行,修改后好使,但是DHCP任然不好用,并未得導(dǎo)IP地址,不得不跟蹤代碼。
IP4_ADDR(&gw, 0,0,0,0);
IP4_ADDR(&ipaddr, 0,0,0,0);
IP4_ADDR(&netmask, 0,0,0,0);
清掉IP網(wǎng)管子網(wǎng)掩碼信息,
tcpip_init(RT_NULL, RT_NULL);

netif_set_addr(netif_default, &ipaddr, &netmask, &gw);
netif_set_up(netif_default);
初始化TCPIP服務(wù)線程,加載地址
dhcp_start(netif_default);
向DHCP服務(wù)器發(fā)送請(qǐng)求
while (netif_default->ip_addr.addr == 0)
等待分配IP,
結(jié)束,這就是DHCP的全過(guò)程,如果順利的分配到IP地址那么就會(huì)跳出堵塞,向下執(zhí)行,如果得不到,那將會(huì)啟動(dòng)一個(gè)超時(shí)等待(DHCP transaction timeout handling)。我得到的是等待,顯然發(fā)出去請(qǐng)求沒(méi)有回應(yīng),于是實(shí)在是沒(méi)有道理,考慮MAC地址,一看地址是0X27*6,馬上改掉,問(wèn)題解決了,IP地址分配了,一切有正常起來(lái)!哈哈也就是說(shuō)MAC雖然可以亂寫,但是不能重復(fù),當(dāng)然這個(gè)變數(shù)就多了,經(jīng)驗(yàn)經(jīng)驗(yàn)!好使才是王道啊!

回復(fù)

使用道具 舉報(bào)

板凳
ID:82781 發(fā)表于 2015-6-13 15:44 | 只看該作者
今天上午在Mbus項(xiàng)目上加上GPRS,做了實(shí)驗(yàn), 經(jīng)測(cè)試數(shù)據(jù)可以上傳下達(dá),當(dāng)然是測(cè)試,工作在透?jìng)髂J剑页绦蚓芎?jiǎn)潔,有待完善,數(shù)據(jù)完整性和連接可靠性,均未處理。數(shù)據(jù)完整主要是Mbus上傳數(shù)據(jù)進(jìn)行的校驗(yàn),數(shù)據(jù)連接性主要是GPRS的可靠性
我們的流程是這樣的:

TCP 服務(wù)器------》》》》------SIM900A(CLINTE)------>>>TX0---MBUS設(shè)備 -----》》mcu 解碼------》tx1---sim900a(CLINTE)-----》》--TCP服務(wù)器---THE END

數(shù)據(jù)完整性處理:

數(shù)據(jù)流設(shè)備---》---采集---》TO buff  ------>>take data ----->一定的算法計(jì)算差錯(cuò)----》完全正確上傳平臺(tái)
                                                                                                                 |》》》丟棄,報(bào)告錯(cuò)誤。


鏈接可靠性

重練機(jī)制,自身檢測(cè)診斷,(參照SIM900AAT集),心跳, 其他的還希望大家提供線索,力求可靠。

gprs部分測(cè)試:

對(duì)于串口流我采用了分時(shí)分批處理的方法,算法是環(huán)形隊(duì)列。只要BUF足夠大,就不大會(huì)發(fā)生丟數(shù)據(jù)的情況。(環(huán)形隊(duì)列慎用之)


IP :119.184.123.84
PORT:1000


  void initsim900a(void)
{
   
uint8_t m;
POWER_ON;
DrvSYS_Delay(300000);
POWER_OFF;
DrvSYS_Delay(300000); //開機(jī)
for(m=5;m;m--)
{
DrvSYS_Delay(100000);
}

if(GET_START)
{
DrvUART_Write(UART_PORT1,"AT\r\n",4);//發(fā)送AT命令
DrvUART_Write(UART_PORT0,"AT\r\n",4);//發(fā)送AT命令
}

}
void timeout(uint32_t time)
{
     uint32_t n;
  for(n=0;n<time;n++)
{

   DrvSYS_Delay(1000);//1ms
}

}

extern uint8_t *Gprs_Pong(void);
uint8_t  Wait_Gprs_Sure(char *p)
{
   p=p;
   
   
   Gprs_Pong();
   
   
   
   
   
   
    /*
        if(memcmp(SIM900A_DATA,sk,strlen(sk))==0)
     {
     
      send_data();
     
     }

      if(memcmp(SIM900A_DATA,sendok,strlen(sendok))==0)
      {
        //  pa->AT_REC_SEND_OK=1;
      
      }

       if(memcmp(SIM900A_DATA,connect_ok,strlen(connect_ok))==0)
    {

   // pa->AT_REC_CONNECT=1;
     
   
    }
      if(memcmp(SIM900A_DATA,err,strlen(err))==0)
    {

   // pa->AT_REC_ERR=1; //err
     
   
    }
    if(memcmp(SIM900A_DATA,atd,strlen(atd))==0)
    {

   // pa->AT_REC_ATD=1; //撥電話
     
   
    }


    if(memcmp(SIM900A_DATA,power_down,strlen(power_down))==0)
    {
   // pa->AT_REC_POWERDOWN=1;
     // printf_usart0 ("模塊掉電請(qǐng)重新上電\r\n");
   
    }


   
       if(memcmp(SIM900A_DATA,ati,strlen(ati))==0)
    {
   
   // pa->AT_REC_ATI=1;
    //  printf_usart0 ("收到設(shè)備號(hào)\r\n");
   
    }
   
       if(memcmp(SIM900A_DATA,ok,strlen(ok))==0)
    {
  //  pa->AT_REC_OK=1;
    //  printf_usart0 ("收到OK\r\n");
   
    }


      */
   return 0;
}



uint8_t  Connect_Sever(char *Url)
{
   

     Url = Url;
  timeout(1000);//1s
  Gprs_Send_String(at_cmd);//支持包交換和數(shù)據(jù)交換
  timeout(8000);//1s
  Wait_Gprs_Sure("ok!!");

     Gprs_Send_String(" AT+CGCLASS=\"B\"\r\n\r\n");//支持包交換和數(shù)據(jù)交換

   timeout(8000);//1s
   Wait_Gprs_Sure("AT+CGCLASS=\"B\"\r\n\r\n");
       // {pa->AT_REC_OK=0;printf_usart0 ("支持包交換和數(shù)據(jù)交換配置成功\r\n");}

  Gprs_Send_String ("AT+CGDCONT=1,\"IP\",\"CMNET\"\r\n\r\n");
      timeout(8000);//1s
   Wait_Gprs_Sure("AT+CGDCONT=1,\"IP\",\"CMNET\"\r\n\r\n");
// CoTickDelay(60);
  //  {pa->AT_REC_OK=0;printf_usart0 ("配置GPRS和接入點(diǎn)設(shè)置成功\r\n");}

    Gprs_Send_String ("AT+CGATT=1\r\n\r\n"); //附著GPRS業(yè)務(wù)
     
     timeout(8000);//1s
   Wait_Gprs_Sure("AT+CGATT=1\r\n\r\n");
  //CoTickDelay(60);
     //{pa->AT_REC_OK=0;printf_usart0 ("附著GPRS業(yè)務(wù)成功\r\n");}
    Gprs_Send_String ("AT+CIPCSGP=1,\"CMNET\"\r\n\r\n"); //選擇GPRS連接
      
     timeout(8000);//1s
   Wait_Gprs_Sure("AT+CIPCSGP=1,\"CMNET\"\r\n\r\n");

    // {pa->AT_REC_OK=0;printf_usart0 ("選擇GPRS連接成功\r\n");}
      Gprs_Send_String("AT+CIPSTART=\"TCP\",");
   timeout(10);//1s
    Gprs_Send_String ("\"119.184.123.84\","); //ip地址
   timeout(10);//1s
      Gprs_Send_String("1000\r\n");   //端口
   timeout(10);//1s
            timeout(8000);//1s
   Wait_Gprs_Sure("AT+CIPSTART=\"TCP\",\"119.184.123.84\",""1000\r\n");


     return 0;
}


void Send_Data_Gprs(uint8_t *data,uint8_t len)
{
  
    static uint8_t g=0x1A;
    timeout(8000);//1s
   Gprs_Send_String ("AT+CIPSEND\r\n");
  timeout(1000);//1s
  Gprs_Send_Data(data,len);
     // Gprs_Send_String (">嘿!伙計(jì),我是單片機(jī)!\r\n");
   DrvUART_Write(UART_PORT1,&g,1);  
           timeout(8000);//1s

  
}


回復(fù)

使用道具 舉報(bào)

地板
ID:82781 發(fā)表于 2015-6-13 15:45 | 只看該作者
霧靄湝湝,云露淇淇,日月不得其光,賊星在位,不知朝夕,恍惚逝去!!
沉吟:夫士不可以弘毅,任重而道遠(yuǎn)!
昨夜食,不得寐,晨其舍飯,余碗粟米也,食罷而去。
吾等繼至,建華早至,說(shuō)如此!

上午本來(lái)大打算繼續(xù)搞GPRS的穩(wěn)定性滴,沒(méi)想到打開電腦,看到某大神在討論修飾符volatile,這個(gè)符號(hào)可不是一般的符號(hào)啊,就我個(gè)人而言這個(gè)東東很常見于只向寄存的指針上用,因?yàn)樗缶幾g器對(duì)他不進(jìn)行優(yōu)化,長(zhǎng)用的方式如下:
#defien  REG_SRC (*(volatile const unsigned char*)0x2f00345e)
我們?cè)贑語(yǔ)言中常常有這樣的語(yǔ)句:

unsigned int a;

a=1;
a=2;
a=4;
a=7;
編譯器最后得出的結(jié)果是a=7,其他的都會(huì)編譯掉,但是如果A是寄存器呢?他的每一次賦值都是一個(gè)變化,又怎么解釋呢?就有

#defien  REG_SRC (*(volatile const unsigned*)0x0000345e)

REG_SRC = 0x 0000000;

REG_SRC = 0xff00ff00;

REG_SRC = 0x00ff00ff;

這是決然不同的!后者高速編譯器這個(gè)地址可能被改變,你要保留不要優(yōu)化掉,當(dāng)然,現(xiàn)在的編譯器尤其是嵌入式專用的那些對(duì)這些絕對(duì)地址的尋址上都是有保護(hù)滴,當(dāng)然這也不可以步履啊。

還有就是在ISR服務(wù)中使用,其實(shí)差不多啦,

噯氣,懂得太少了!

上午應(yīng)王建華的需求改了路燈終端的AT93C56的CS引腳,下午才知道,本來(lái)是對(duì)的上午他媽的改錯(cuò)了!暈死,建華不該亂說(shuō)。我懶得看手冊(cè),沒(méi)拆穿建華!

下午王建華說(shuō)他找到了問(wèn)題所在,原因在于93c6\56和7053之間公用的SPI接口的Dout被拉長(zhǎng)高電平,導(dǎo)致7053無(wú)法拉低,所以讀出來(lái)的是一個(gè)巨大的數(shù)據(jù),F(xiàn)FFFff,

下午對(duì)GPRS的回復(fù)信號(hào)做了處理,加上了比較和返回值,

uint8_t  Wait_Gprs_Sure( char *pstr,int len,char *s)
{
   char *rep;
   char *index;
      
       rep = Gprs_Get_Respond();  //save respond data and pointer to it

    index = strstr(rep,pstr);   //find string in dst add
   if(index==((char*)0))
   {
     Mbus_Send_String ("no string !!\r\n");
    return ;
   }
if(0== memcmp (index ,pstr,len-1))
  {
  
   // Mbus_Send_String ("ok \r\n");
    Mbus_Send_String (s);
   //Mbus_Send_Data(char*p,uint8_t len)
  }
  else
     {
  
     Mbus_Send_String ("err!!\r\n");
      }


   
   return 0;
}

值得注意的是內(nèi)存池里面的數(shù)據(jù)直接用STRSTR查找的時(shí)候他碰到‘\0’就返回,所以要加以處理,不然你是查不到的,我的辦法是:
uint8_t  *Gprs_Get_Respond(void)
{  
         uint8_t l,k;
   memset(Gprs_app,1,80);
   len=QueueLength(&Gprs_ctrl_Queue);//updata the "lne"
  for(k=0;k<len;k++)
  {
    DeQueue(&Gprs_ctrl_Queue,&l);
   if(l==0)l=0x0d;
   Gprs_app[k]=l; //save into buff of app

  
  }   k++;
     Gprs_app[k]='\0';
    return Gprs_app;
}
這樣一來(lái)就可以順利的比對(duì)了,哈哈,辦法是笨,但是。。。。。!

晚上劉總說(shuō)有幾個(gè)開關(guān)不好用,我跟蹤了下,兩鍵的開關(guān)老是進(jìn)第三個(gè)IS人,所以我屏蔽掉第三個(gè)之后,安裝上了,上電實(shí)驗(yàn)還行,不必要的通道要及時(shí)的屏蔽掉,以免干擾正常的工作,其實(shí)開關(guān)沒(méi)有死,他一直在進(jìn)中斷,沒(méi)時(shí)間干別的,所以看起來(lái)就像死了一樣,也許還有其他的原因吧,有待時(shí)間去慢慢驗(yàn)證啊,有時(shí)候真是倒霉催的,莫名其妙!盡力。。。。


回復(fù)

使用道具 舉報(bào)

5#
ID:82781 發(fā)表于 2015-6-13 15:45 | 只看該作者
今天主要是對(duì)GPRS的鏈接做了點(diǎn)處理和測(cè)試,雙向心跳包,一個(gè)是客戶端主動(dòng)發(fā),一個(gè)是服務(wù)器主動(dòng)發(fā),但是呢我碰到一個(gè)問(wèn)題,那就是 在客戶端檢測(cè)到?jīng)]有心跳包之后,要主動(dòng)發(fā)送一個(gè)類似socket的close命令,但是呢,發(fā)完這個(gè)命令,在想要綁定到CMNET就幫不上了,導(dǎo)致鏈接失敗,后來(lái)查閱手冊(cè)GPRS說(shuō)是要提前進(jìn)入init狀態(tài),后來(lái)加了條初始化IP狀態(tài),就好了,暈暈的。。這才是萬(wàn)里長(zhǎng)征第一步,早來(lái)!在等待返回?cái)?shù)據(jù)和解析上我做的不是很好,有待改進(jìn)啊。。。。
  char *rep;
   char *index;
      
       rep =(char*) Gprs_Get_Respond();  //save respond data and pointer to it

    index = strstr(rep,pstr);   //find string in dst add
   if(index==((char*)0))
   {
         //Exception Handling

           index = strstr(rep,"CLOSE");   //find string in dst add
      if(index==((char*)0))
     {

         index = strstr(rep,"ERROR");   //find string in dst add  
          if(index==((char*)0))
         {
      
        Mbus_Send_String ("no string !!\r\n");
        Exception_Handling_Evet=1;
      
         }
         else
         {
           Mbus_Send_String ("This is a Error!!\r\n");
             Exception_Handling_Evet=1;
         }

   
     }
     else
     {
              Mbus_Send_String ("SEVER IS CLOSED !!\r\n");
     Exception_Handling_Evet=1;
     }
   


    return 0;
   }

if(0== memcmp (index ,pstr,len-1))
  {
  

    Mbus_Send_String (s); //successfully

  }
  else
     {
  
     Mbus_Send_String ("err!!\r\n");
      }


回復(fù)

使用道具 舉報(bào)

6#
ID:82781 發(fā)表于 2015-6-13 15:46 | 只看該作者
下午主要是在搞基于dhcp客戶端上的無(wú)線協(xié)議的移植的透?jìng)髟O(shè)備程序,由于之前和上位機(jī)軟件調(diào)試了DHCP,所以只要移植上無(wú)線驅(qū)動(dòng)和協(xié)議就好啦,碰到一個(gè)苦逼問(wèn)題,就是沒(méi)開時(shí)種啊,暈死,以前的程序忘了做聲明,導(dǎo)致了漏掉了始終那一檔子事, 讀取來(lái)的ID是錯(cuò)誤的,搞了一下午,噯氣八八!不行不行啊!低落ing,

GPRS仍然再測(cè),一切良好,可以用一個(gè)低成本的處理起來(lái)實(shí)現(xiàn),夠用,gprs抄表的項(xiàng)目似乎領(lǐng)導(dǎo)們不太中意,我卻看的很重,這個(gè)東西還是可以的,以后來(lái)說(shuō),用處還是大點(diǎn)的,雖然慢點(diǎn),但是小數(shù)據(jù)量,無(wú)線傳輸?shù)膱?chǎng)合可以了,總不能每個(gè)都托根電線吧。所以我投入了大量的時(shí)間來(lái)處理鏈接的可靠性,告一段落了,剩下的時(shí)間就是永無(wú)休止的測(cè)測(cè)測(cè)測(cè)。。。。。。。。

還偶有一屁股的事情要做,路燈的通道板要做,完善,好幾個(gè)小的整套測(cè)試程序都沒(méi)做,還哦有好幾個(gè)開關(guān)的程序要完善那,
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 三级免费 | 中文字幕1区2区3区 亚洲国产成人精品女人久久久 | 中文字幕 国产精品 | 二区不卡 | 久久久国产一区二区三区 | 国产精品一区二区日韩 | 草久久 | 狠狠干美女 | 久久国产亚洲 | 91亚洲国产成人久久精品网站 | 亚洲美乳中文字幕 | 欧美激情综合 | 天天拍夜夜爽 | 亚洲精品久久久一区二区三区 | 国产一区精品在线 | 亚洲h在线观看 | 天天干成人网 | 日韩视频中文字幕 | 国产亚洲精品美女久久久久久久久久 | 欧美一级淫片007 | 国产视频综合 | 久久精品亚洲一区二区三区浴池 | 国产欧美日韩一区 | 中文字幕日本一区二区 | 成人欧美一区二区 | 亚洲成人av在线播放 | 成人午夜精品 | 精品视频免费 | 欧美精品在线播放 | 欧美成人黄色小说 | 97中文视频| 亚洲成人中文字幕 | 蜜月va乱码一区二区三区 | 精品日韩在线 | 91在线视频在线观看 | 国产成人久久精品一区二区三区 | 性色av香蕉一区二区 | 欧美成人精品一区二区男人看 | 亚洲一区二区三区国产 | 亚洲免费观看视频网站 | 久久精品一级 |