【我與單片機(jī)】我的PIC單片機(jī)調(diào)試心得,給苦苦尋覓的初學(xué)者一點(diǎn)啟示
在單片機(jī)行當(dāng)已經(jīng)混跡多年了。說句實(shí)話,c開發(fā)環(huán)境都大同小異,只不過燒寫和在線仿真大同小異。鉆研了兩天,收到了很多回應(yīng)和啟發(fā)。下面應(yīng)soso的請(qǐng)求,把最近的調(diào)試心得和大家分享1、 先說說我要做的東西說來慚愧,這是臨時(shí)的一個(gè)小任務(wù),做一個(gè)采集和現(xiàn)實(shí)的部分,用兩路ad采集模擬量,通過開關(guān)進(jìn)行切換,簡(jiǎn)單的說就是開關(guān)打開,顯示一路模擬量;開關(guān)關(guān)閉,顯示另一路模擬量。主電路及其簡(jiǎn)單,我就直接說了,不附圖了。電源通過一個(gè)負(fù)載(滑動(dòng)變阻器就可以)回到電源負(fù)極,在回路中接入一個(gè)電流傳感器,實(shí)時(shí)采集電流信號(hào)(如果條件不允許,也可以用康銅絲或者一個(gè)大瓦數(shù)小數(shù)值的采樣電阻采集電流信號(hào)。然后通過放大,隔離后送入單片機(jī)的AN0口。另外一路AN1可以用來做另外一個(gè)模擬量的采集,具體是什么待定,可以是溫度,也可以是電壓(時(shí)間短,我就做了1路,另一路有待高人們自己開發(fā),哈哈)
全部回復(fù)(12)
正序查看
倒序查看
2、 我遇到的問題對(duì)于我來說,pic是新事物,要從剛開始接觸說起,時(shí)間不長(zhǎng),72小時(shí)。給我的感覺,這種單片機(jī)價(jià)格便宜,體積小,結(jié)構(gòu)簡(jiǎn)單,編程用c,也比較和我的胃口。缺點(diǎn)(也就是苦苦煎熬著我的)就是仿真和燒錄。和 其他單片機(jī)一樣,每個(gè)廠商都推出了自己的c編譯環(huán)境和開發(fā)環(huán)境,我們的pic使用ide和picc(不是保險(xiǎn)公司哦)具體如圖。
Picc是自己嵌入ide的進(jìn)入界面,感覺無比親切,和keil也差不多啊,于是照方抓藥。
通過工程想到,建立工程。選擇你使用的芯片,選擇編譯器,如圖,picc.exe的路徑也可以看到哦!
新建工程,但是不導(dǎo)入c文件點(diǎn)菜單欄VIEW下的project,在source右鍵,加入c文件,如果沒有c文件,就新建一個(gè)c文件,然后加入到source里面。導(dǎo)入之后就如圖了。
下面就是激動(dòng)人心的編譯程序了,如果程序無誤,應(yīng)該出現(xiàn)這個(gè):
接下來就可以進(jìn)行燒寫和仿真了
在這之前,需要進(jìn)行一些必要的設(shè)置,按上圖就可以,在Configue里面。然后,通過Programer和Debugger選擇要設(shè)備,我用ICD2就選ICD2下面就是要進(jìn)行連接,如果你想仿真,就把Release點(diǎn)成Debug,然后在debugger里面點(diǎn)connect,如果想燒程序,就在programmer里面點(diǎn)connect,成功是這個(gè)樣子的
我做的是燒寫,所以就點(diǎn)program,結(jié)果如下
0
回復(fù)
@fjfhjmh
2、我遇到的問題對(duì)于我來說,pic是新事物,要從剛開始接觸說起,時(shí)間不長(zhǎng),72小時(shí)。給我的感覺,這種單片機(jī)價(jià)格便宜,體積小,結(jié)構(gòu)簡(jiǎn)單,編程用c,也比較和我的胃口。缺點(diǎn)(也就是苦苦煎熬著我的)就是仿真和燒錄。和其他單片機(jī)一樣,每個(gè)廠商都推出了自己的c編譯環(huán)境和開發(fā)環(huán)境,我們的pic使用ide和picc(不是保險(xiǎn)公司哦)具體如圖。 [圖片] Picc是自己嵌入ide的進(jìn)入界面,感覺無比親切,和keil也差不多啊,于是照方抓藥。 [圖片] 通過工程想到,建立工程。選擇你使用的芯片,選擇編譯器,如圖,picc.exe的路徑也可以看到哦! [圖片] 新建工程,但是不導(dǎo)入c文件點(diǎn)菜單欄VIEW下的project,在source右鍵,加入c文件,如果沒有c文件,就新建一個(gè)c文件,然后加入到source里面。導(dǎo)入之后就如圖了。 [圖片] 下面就是激動(dòng)人心的編譯程序了,如果程序無誤,應(yīng)該出現(xiàn)這個(gè):[圖片] 接下來就可以進(jìn)行燒寫和仿真了 [圖片] 在這之前,需要進(jìn)行一些必要的設(shè)置,按上圖就可以,在Configue里面。然后,通過Programer和Debugger選擇要設(shè)備,我用ICD2就選ICD2下面就是要進(jìn)行連接,如果你想仿真,就把Release點(diǎn)成Debug,然后在debugger里面點(diǎn)connect,如果想燒程序,就在programmer里面點(diǎn)connect,成功是這個(gè)樣子的 [圖片] 我做的是燒寫,所以就點(diǎn)program,結(jié)果如下[圖片]
在線仿真本人也在研究中,如果有高人能夠指點(diǎn)就更好了,我就和大家分享到這兒。最后說說學(xué)到了什么吧,接觸新實(shí)物,第一反應(yīng)就是迷茫,無從下手,當(dāng)然,這不可能做成事。要想到解決這一切的方法,首先就是找個(gè)明白人,如果身邊真的沒有這樣的人,那么就去網(wǎng)絡(luò),我們的論壇就有很多人才。接著我想到了網(wǎng)絡(luò),去找需要的資源,datasheet,參考頭文件,datasheet還有我們的電路圖就可以進(jìn)行粗略的程序設(shè)計(jì),我指的是框圖,流程這類的東西。寫好程序以后一定要反復(fù)推敲,有可能一個(gè)不留神就可能導(dǎo)致程序失靈。這個(gè)我遇到過,一頓找,就是找不到問題所在,結(jié)果是一個(gè)小小的寄存器的某一位寫錯(cuò)了。
0
回復(fù)
@fjfhjmh
寫這篇帖子的目的是,給苦苦尋覓的初學(xué)者一點(diǎn)啟示,如果能恰好幫助在困境中的求學(xué)者,將感到無比榮幸。
ARM和單片機(jī)的區(qū)別
|
1、軟件方面
這應(yīng)該是最大的區(qū)別了。引入了操作系統(tǒng)。為什么引入操作系統(tǒng)?有什么好處嘛?
1)方便。主要體現(xiàn)在后期的開發(fā),即在操作系統(tǒng)上直接開發(fā)應(yīng)用程序。不像單片機(jī)一樣一切都要重新寫。前期的操作系統(tǒng)移植工作,還是要專業(yè)人士來做。
2)安全。這是LINUX的一個(gè)特點(diǎn)。LINUX的內(nèi)核與用戶空間的內(nèi)存管理分開,不會(huì)因?yàn)橛脩舻膯蝹€(gè)程序錯(cuò)誤而引起系統(tǒng)死掉。這在單片機(jī)的軟件開發(fā)中沒見到過。
3)高效。引入進(jìn)程的管理調(diào)度系統(tǒng),使系統(tǒng)運(yùn)行更加高效。在傳統(tǒng)的單片機(jī)開發(fā)中大多是基于中斷的前后臺(tái)技術(shù),對(duì)多任務(wù)的管理有局限性。
2、硬件方面
現(xiàn)在的8位單片機(jī)技術(shù)硬件發(fā)展的也非常得快,也出現(xiàn)了許多功能非常強(qiáng)大的單片機(jī)。但是與32ARM相比還是有些差距吧。
ARM芯片大多把SDRAM,LCD等控制器集成到片子當(dāng)中。在8位機(jī),大多要進(jìn)行外擴(kuò)。
總的來說,單片機(jī)是個(gè)微控制器,ARM顯然已經(jīng)是個(gè)微處理器了。 引入嵌入式操作系統(tǒng)之后,可以實(shí)現(xiàn)許多單片機(jī)系統(tǒng)不能完成的功能。比如:嵌入式web服務(wù)器,java虛擬機(jī)等。也就是說,有很多免費(fèi)的資源可以利用,上述兩種服務(wù)就是例子。如果在單片機(jī)上開發(fā)這些功能可以想象其中的難度。 0
回復(fù)
@fjfhjmh
2、我遇到的問題對(duì)于我來說,pic是新事物,要從剛開始接觸說起,時(shí)間不長(zhǎng),72小時(shí)。給我的感覺,這種單片機(jī)價(jià)格便宜,體積小,結(jié)構(gòu)簡(jiǎn)單,編程用c,也比較和我的胃口。缺點(diǎn)(也就是苦苦煎熬著我的)就是仿真和燒錄。和其他單片機(jī)一樣,每個(gè)廠商都推出了自己的c編譯環(huán)境和開發(fā)環(huán)境,我們的pic使用ide和picc(不是保險(xiǎn)公司哦)具體如圖。 [圖片] Picc是自己嵌入ide的進(jìn)入界面,感覺無比親切,和keil也差不多啊,于是照方抓藥。 [圖片] 通過工程想到,建立工程。選擇你使用的芯片,選擇編譯器,如圖,picc.exe的路徑也可以看到哦! [圖片] 新建工程,但是不導(dǎo)入c文件點(diǎn)菜單欄VIEW下的project,在source右鍵,加入c文件,如果沒有c文件,就新建一個(gè)c文件,然后加入到source里面。導(dǎo)入之后就如圖了。 [圖片] 下面就是激動(dòng)人心的編譯程序了,如果程序無誤,應(yīng)該出現(xiàn)這個(gè):[圖片] 接下來就可以進(jìn)行燒寫和仿真了 [圖片] 在這之前,需要進(jìn)行一些必要的設(shè)置,按上圖就可以,在Configue里面。然后,通過Programer和Debugger選擇要設(shè)備,我用ICD2就選ICD2下面就是要進(jìn)行連接,如果你想仿真,就把Release點(diǎn)成Debug,然后在debugger里面點(diǎn)connect,如果想燒程序,就在programmer里面點(diǎn)connect,成功是這個(gè)樣子的 [圖片] 我做的是燒寫,所以就點(diǎn)program,結(jié)果如下[圖片]
。。呃 圖片看不到,重新上傳下吧

0
回復(fù)
@fjfhjmh
ARM和單片機(jī)的區(qū)別 1、軟件方面 這應(yīng)該是最大的區(qū)別了。引入了操作系統(tǒng)。為什么引入操作系統(tǒng)?有什么好處嘛? 1)方便。主要體現(xiàn)在后期的開發(fā),即在操作系統(tǒng)上直接開發(fā)應(yīng)用程序。不像單片機(jī)一樣一切都要重新寫。前期的操作系統(tǒng)移植工作,還是要專業(yè)人士來做。 2)安全。這是LINUX的一個(gè)特點(diǎn)。LINUX的內(nèi)核與用戶空間的內(nèi)存管理分開,不會(huì)因?yàn)橛脩舻膯蝹€(gè)程序錯(cuò)誤而引起系統(tǒng)死掉。這在單片機(jī)的軟件開發(fā)中沒見到過。 3)高效。引入進(jìn)程的管理調(diào)度系統(tǒng),使系統(tǒng)運(yùn)行更加高效。在傳統(tǒng)的單片機(jī)開發(fā)中大多是基于中斷的前后臺(tái)技術(shù),對(duì)多任務(wù)的管理有局限性。 2、硬件方面 現(xiàn)在的8位單片機(jī)技術(shù)硬件發(fā)展的也非常得快,也出現(xiàn)了許多功能非常強(qiáng)大的單片機(jī)。但是與32ARM相比還是有些差距吧。 ARM芯片大多把SDRAM,LCD等控制器集成到片子當(dāng)中。在8位機(jī),大多要進(jìn)行外擴(kuò)。 總的來說,單片機(jī)是個(gè)微控制器,ARM顯然已經(jīng)是個(gè)微處理器了。 引入嵌入式操作系統(tǒng)之后,可以實(shí)現(xiàn)許多單片機(jī)系統(tǒng)不能完成的功能。比如:嵌入式web服務(wù)器,java虛擬機(jī)等。也就是說,有很多免費(fèi)的資源可以利用,上述兩種服務(wù)就是例子。如果在單片機(jī)上開發(fā)這些功能可以想象其中的難度。
0
回復(fù)