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

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

AT90CAN128開發(fā)問題

作者:胖兔子 欄目:單片機
AT90CAN128開發(fā)問題
AT90CAN128做開發(fā)。
遇到N多問題,有用AT90CAN128做過開發(fā)的大大們,給幫個忙吧。
1.如何配置各個寄存器。
2.如何配置2.0B
3.如何配置速率
4.如何產(chǎn)生中斷
5.
6.
反正問題多多。調(diào)了5天了。還沒有調(diào)通?殳偭。有誰能幫我呀。

2樓: >>參與討論
shenshi
給你一個例程參考下吧,這是我做的CAN測試程序
#include <avr/io.h>
#include <avr/signal.h>
#include <util/delay.h>

unsigned CHAR can_transdata[8]={1,2,3,4,5,6,7,8};
unsigned CHAR can_receivedata[8]={8,7,6,5,4,3,2,1};
unsigned CHAR CanReceiveEndFlag;
InitCAN()
{
// CAN控制器 0# ,3# 信箱中斷接收 ,1#、2#、4# 信箱發(fā)送數(shù)據(jù)
  CANGCON |= (1<<SWRES);                                                        //CAN控制器軟復(fù)位
  CANBT1 = 0x0a;                                                                //設(shè)置波特率分頻因子16MHZ,16TQ,250k,=4=3+1,3
  CANBT2 = 0x0c;                                                                //同步段為1“0x0n”傳播段=7=6+1
  CANBT3 = 0x37;                                                                //相位緩沖PH2=4=3+1,PH1=4=3+1
  CANTCON = 0xff;
//--------------can_MOB INITIAL-------------------
//MOB0=RX[CMD]    接收上位機發(fā)來的指令       格式:3,0,0,177,239,33
  CANPAGE  = 0x00;                                                              //MOB0,自動增量,初值為0
  CANSTMOB = 0;
  CANCDMOB = 0x18;                                                              //can2B,DLC=8
  CANIDT4 = 0x30;                                                               // 00001 0xx
  CANIDT3 = 0x00;                                                               // 01111 001              33
  CANIDT2 = 0x41;                                                               // 10001 111             239
  CANIDT1 = 0x00;                                                              // 01100 101             177
  CANIDM4  = 0x00;                                                              //                             11111 100
  CANIDM3  = 0x00;                                                              //                             11111 111
  CANIDM2  = 0x00;                                                              //                             11111 111
  CANIDM1  = 0x00;
                                                               //CANIDM4-1數(shù)據(jù)校驗屏蔽寄存器  00000 111
  //MOB1=TX[STA1]  向上位機報告狀態(tài)組1          6,0,0,178,239,33
  CANPAGE = 0x10;
  CANSTMOB = (1<<TXOK);
  CANCDMOB = 0x18;
  CANIDT4 = 0x30;                                                  
3樓: >>參與討論
胖兔子
謝謝
謝謝紳士兄。這就看看

4樓: >>參與討論
胖兔子
AT90CAN128
紳士兄:
     我試了一下,但是不行。
     你給的例子
CANBT1 = 0x0a;  //設(shè)置波特率分頻因子16MHZ,16TQ,250k,=4=3+1,3
這句是0x0a是如何計算出來的?
我用的是外部晶振頻率是11.0592,那么,在CAN中是如何設(shè)置的?
請賜教。


5樓: >>參與討論
shenshi
answer
我的注釋中有些錯誤,我的CAN的波特率是125K的,我用的晶振是12M的,BT1、BT2、BT3的設(shè)置你要參考Datasheet中給的數(shù)值。11.0592的晶振可能會不可以。你不妨先用12M的測試一下,我這個程序在我的板子上沒有問題,我兩塊板子可以互相收發(fā)。

6樓: >>參與討論
胖兔子
只能參考Datasheet嗎
BT1、BT2、BT3的設(shè)置只能參考Datasheet中給的數(shù)值嗎?不能計算嗎?


在串口中,開始我也是參考Datasheet中給的數(shù)值,后來我找了一個計算公式來計算波特率。方便了很多。
下面給出源碼看大家能不能給出更好的思路。
AT90CAN128中,我按照資料中說的來計算,怎么也算不出來。
再次謝謝大家。
#define fosc 11059200 //晶振 11.0592
/*******************************************************************************
*函數(shù)名:uart0_init                                                            *
*功  能:初始化串口1                                                              *
*參  數(shù):baud                                                                  *
*支  持:300,600,1200,2400,4800,9600,19200,38400,56000,115200                  *
*******************************************************************************/
void uart0_init(LONG baud)
{

UCSR0B = 0x00;  //設(shè)置波特率時關(guān)閉發(fā)送和接收
UCSR0A = 0x00;
UCSR0C = 0x06; //8位數(shù)據(jù)+1位STOP位
UBRR0L=(fosc/16/(baud+1))%256;
UBRR0H=(fosc/16/(baud+1))/256;//設(shè)置波特率
UCSR0B =(1<<RXCIE0)|(1<<RXEN0)|(1<<TXEN0);//允許發(fā)送和接收,允許中斷
}

7樓: >>參與討論
shenshi
answer
如果你的系統(tǒng)中既要用到CAN 又要用到串口的話,我建議你還是把晶振的頻率改為12M吧。CAN對晶振的要求要比串口高很多。你給出的雙龍的初始化串口的例程對于CAN來說沒有意義。我覺得你還是將就一下CAN吧。我們就是這樣做的

8樓: >>參與討論
胖兔子
12晶振問題
紳士兄:
     如果我用12MHZ的晶振,串口通訊就會出現(xiàn)一系列問題,因為我的串口要與其它的設(shè)備通訊,必須保證誤差等于0%,如果用整數(shù)倍的晶振,與其它設(shè)備的通訊就不能正常工作。
     剛才我重新配置了熔絲位,使用了內(nèi)部8MHZ的晶振,按照DataSheet中給出的數(shù)值編譯后,還是無法進行通訊。(手頭沒有12MHZ的晶振)

9樓: >>參與討論
shenshi
回答:
你用內(nèi)部8M晶振的話,你要把BT1、BT2、BT3的設(shè)置要改下,DATASHEET中提供了06、DC、37你可以去看下。另外12M晶振的話,串口通信雖然有些誤差,但是它是異步的,一個字節(jié)就調(diào)整的。我按照你的方法在我的板子上測試下,一會再回答你。

10樓: >>參與討論
shenshi
回答
說明下:8M晶振的設(shè)置BT1、BT2、BT3 的設(shè)置DATASHEET中是06、0C、37。
我測試了下這個程序在12M很正常,在8M的情況下,就是不停的在發(fā)。
你先把測試程序改動下,把收中斷標志屏蔽下,先讓板子處于一直發(fā)送的狀態(tài),你再看看發(fā)送引腳是否有波形。

11樓: >>參與討論
zsmbj
如用can和串口,建議用12M晶體吧。
CAN對時鐘要求比較高,一般要選擇晶振,不能用內(nèi)部RC。晶振一般是16,12,8M等。如果要兼顧串口。12M是最好的選擇,115200,57600,38400,28800,19200,14400,9600,4800,2400等誤差只有0.2%,通訊完全沒有問題。  8M也不錯。不過57600和115200誤差太大,不能使用。

串口誤差不要大于2%,實際不大于0.5%完全沒有問題?梢苑判氖褂谩

12樓: >>參與討論
胖兔子
謝謝
我去買個12MHZ的晶振

13樓: >>參與討論
胖兔子
CAN還是不通
紳士兄:
12MHZ晶振裝上了。還是不行。為什么????????????

另外:我用來測試的CAN板是市場上買回來的。它與其它CAN設(shè)備通訊是正常的。

//     格式:3,0,0,177,239,33
在你給的例子中,上面這句話的意思是什么??

網(wǎng)絡(luò)主機地址
網(wǎng)絡(luò)從機地址與回復(fù)主機地址又是如何設(shè)置的?





14樓: >>參與討論
shenshi
回復(fù)
紳士兄:
12MHZ晶振裝上了。還是不行。為什么????????????

另外:我用來測試的CAN板是市場上買回來的。它與其它CAN設(shè)備通訊是正常的。

//     格式:3,0,0,177,239,33
在你給的例子中,上面這句話的意思是什么??

網(wǎng)絡(luò)主機地址
網(wǎng)絡(luò)從機地址與回復(fù)主機地址又是如何設(shè)置的?


回答: //     格式:3,0,0,177,239,33 這個數(shù)據(jù)是沒有意義的,主要是設(shè)置29位標識符的,對測試來說沒有意義,MOB0中的屏蔽CANIDM都已經(jīng)設(shè)置成了0,所以對方發(fā)來的數(shù)據(jù)不會屏蔽的.至于你說的網(wǎng)絡(luò)的主機地址和從機地址,那應(yīng)該是協(xié)議的問題,應(yīng)該是設(shè)置CANIDT來完成的.

不通的話,你先查查硬件上數(shù)據(jù)是否到了單片機的接收引腳,每位時間是否是8us,有的時候因為線路上器件的延時,高電平的時間可能會小于8us,如果硬件上沒問題,那就用仿真器跑下,看看是否進中斷以及看下CAN寄存器的值時候正常

另外你可以先看發(fā)送程序是否能運行,


15樓: >>參與討論
胖兔子
提問
紳士兄:
    前幾天身體不適,一直沒有上網(wǎng)。今天看見你給的回答了。


    你給我的例子在仿真器中運行的正常。


    在AT90CAN128的輸出腳上有信號。但到了PCA82C250的CANH、CANL,沒有變化了。
    這個電路我是按SJA1000的做的。不知對不對。

16樓: >>參與討論
胖兔子
哈哈
自己頂

17樓: >>參與討論
問題
紳士們: 在開發(fā)AT90CAN128的板子中,對CAN的驅(qū)動代碼中MAIN函數(shù)不知道怎么寫,能否提供一下!初始化配置我有了!但就是關(guān)于在MAIN函數(shù)中怎么操作CAN呢? 盼答復(fù)!
參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
用AVR Studio4怎么進行C語言的仿真
關(guān)于C語言交通燈的編寫出了點問題
請問各位大俠:在STUDIO中,怎么定義一個pin腳標識。謝謝!
怎樣才能寫好AVR STUDIO編譯器下的中斷程序??
請教電機問題
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號