找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1795|回復: 9
收起左側(cè)

改編個MEGA1280單片機板子的BootLoader程序

[復制鏈接]
ID:90212 發(fā)表于 2024-5-12 09:17 | 顯示全部樓層 |閱讀模式
以前玩C51單片機,近來收了兩個avr的板子(MEGA1280和MEGA2560),想從BootLoader入手,看了本壇的 AVR之BOOTLOADER技術(shù)詳解 ,發(fā)現(xiàn)了兩個語法錯誤:
//每秒向PC機發(fā)送一個控制字符"C",等待控制字〈soh〉
while(uart_getchar() != XMODEM_SOH) //receive the start of Xmodem
{
    if(TIFR & 0x02) //timer0 over flow
    {
        if(++timercount > 67) //wait about 1 second
        {
            uart_putchar(XMODEM_RECIEVING_WAIT_CHAR); //send a "C"
            timercount = "0"; // timercount=0;
        }
        TIFR = "TIFR" | 0x02; //TIFR=TIFR| 0x02;
    }
}


或許是其他選項沒設(shè)置好,編譯仍然有錯誤,求高手幫忙修改一下。
要求:最好就用ICCAVR,提供完整源代碼和配置說明至少保證MEGA1280或2560一個能使用,測試用以下軟件:
2024-05-12_090751.png

AVRUBD_ 1280.rar (491.43 KB, 下載次數(shù): 2)

1280配置用如下:
Baud_setting.JPG Flash Memory size.jpg Other options.jpg

2560配置用如下:
Baud_setting.JPG Flash Memory size.jpg Other options.jpg
回復

使用道具 舉報

ID:90212 發(fā)表于 2024-5-13 13:14 | 顯示全部樓層
未能改編成功,請高手私信我
回復

使用道具 舉報

ID:879348 發(fā)表于 2024-5-13 15:15 | 顯示全部樓層
你是編譯錯誤還是功能沒有對呢,你說編譯錯誤但是你自己已經(jīng)發(fā)現(xiàn)了,還有其他錯誤嗎?沒有上傳錯誤提示
回復

使用道具 舉報

ID:123289 發(fā)表于 2024-5-14 21:52 | 顯示全部樓層
我是這樣做的:
1、發(fā)送方:上電時。以自己的波特率一直不停地發(fā)送55H(AAH也行,目的發(fā)出0、1等距脈沖,讓對方同步,知道當前的波特率),直到對方回一個標記(例如你說的"C")。
2、規(guī)定時間內(nèi)無返回認為,無設(shè)備連接。收到標記,則握手成功。
3、接收方:監(jiān)察串行輸入腳有無輸入脈沖,如果能夠多次得到4個均勻間隔的脈沖,則認為對方對自己進行同步,計算它的間隔時間,從而得到通訊的波特率,并以此波特率加返回一個接收握手標記(例如你說的"C")。
4、如果引腳上沒有脈沖輸入,或不是均勻脈沖,則結(jié)束監(jiān)察。
接下來雙方接可以正常通訊了。你想如何就如何。
實際應(yīng)用時,隨時監(jiān)察的,不細述了。
回復

使用道具 舉報

ID:90212 發(fā)表于 2024-5-14 22:16 | 顯示全部樓層
wufa1986 發(fā)表于 2024-5-13 15:15
你是編譯錯誤還是功能沒有對呢,你說編譯錯誤但是你自己已經(jīng)發(fā)現(xiàn)了,還有其他錯誤嗎?沒有上傳錯誤提示

這個里面相當多的坑,除了提到的兩個多余的雙引號,轉(zhuǎn)義字符 '\' 全被搞成 '/',F(xiàn)在編譯沒有錯誤了不知道還需要怎么設(shè)置才能刷進MEGA1280,只玩過keil,對ICCAVR不熟。請指點:代碼修改如下: mega.rar (56.88 KB, 下載次數(shù): 2)

無需積分下載
回復

使用道具 舉報

ID:90212 發(fā)表于 2024-5-14 22:37 | 顯示全部樓層
當把#include <iom128v.h>改為 #include <iom1280v.h>后,報OCR0、TCCR0、TIFR未定義
回復

使用道具 舉報

ID:90212 發(fā)表于 2024-5-14 22:38 | 顯示全部樓層
yzwzfyz 發(fā)表于 2024-5-14 21:52
我是這樣做的:
1、發(fā)送方:上電時。以自己的波特率一直不停地發(fā)送55H(AAH也行,目的發(fā)出0、1等距脈沖 ...

能否幫我改成MEGA1280可用的,成功了50如何?
回復

使用道具 舉報

ID:176854 發(fā)表于 2024-5-15 08:53 | 顯示全部樓層
OCR0 改為 OCR0A
TIFR  改為 TIFR0
TCCR = 0x0F 改為 TCCR0A = 0x20;TCCR0B = 0x07;
回復

使用道具 舉報

ID:90212 發(fā)表于 2024-5-15 13:40 | 顯示全部樓層
jjjjjjir 發(fā)表于 2024-5-15 08:53
OCR0 改為 OCR0A
TIFR  改為 TIFR0
TCCR = 0x0F 改為 TCCR0A = 0x20;TCCR0B = 0x07;

安裝您的指點,編譯錯誤都消除了,選項的配置是這樣設(shè)置嗎?

mega1280

mega1280


回復

使用道具 舉報

ID:90212 發(fā)表于 2024-5-16 00:23 | 顯示全部樓層
下載燒寫進去能夠從串口發(fā)送出來正確的數(shù)據(jù),但是定時器設(shè)置有問題,很快就跳出了等待。把quit()替換為打印“A”,記錄如下:
  1. <blockquote>//初始化M128的T/C0,15ms自動重載
復制代碼

[00:22:14.229]收←◆AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
[00:22:16.166]收←◆AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
[00:22:18.104]收←◆AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
[00:22:20.039]收←◆AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
[00:22:21.976]收←◆AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
[00:22:23.910]收←◆AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
[00:22:25.835]收←◆AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
[00:22:27.772]收←◆AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
[00:22:29.708]收←◆AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

平均隔2s 打印55個A出來。



回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表