找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 754|回复: 9
打印 上一主题 下一主题
收起左侧

改编个MEGA1280单片机板子的BootLoader程序

[复制链接]
跳转到指定楼层
楼主
以前玩C51单片机,近来收了两个avr的板子(MEGA1280和MEGA2560),想从BootLoader入手,看了本坛的 AVR之BOOTLOADER技术详解发现了两个语法错误:
//每秒向PC机发送一个控制字符"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;
    }
}


或许是其他选项没设置好,编译仍然有错误,求高手帮忙修改一下。
要求:最好就用ICCAVR,提供完整源代码和配置说明至少保证MEGA1280或2560一个能使用,测试用以下软件:


AVRUBD_ 1280.rar (491.43 KB, 下载次数: 2)

1280配置用如下:


2560配置用如下:

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:90212 发表于 2024-5-13 13:14 | 只看该作者
未能改编成功,请高手私信我
回复

使用道具 举报

板凳
ID:879348 发表于 2024-5-13 15:15 | 只看该作者
你是编译错误还是功能没有对呢,你说编译错误但是你自己已经发现了,还有其他错误吗?没有上传错误提示
回复

使用道具 举报

地板
ID:123289 发表于 2024-5-14 21:52 | 只看该作者
我是这样做的:
1、发送方:上电时。以自己的波特率一直不停地发送55H(AAH也行,目的发出0、1等距脉冲,让对方同步,知道当前的波特率),直到对方回一个标记(例如你说的"C")。
2、规定时间内无返回认为,无设备连接。收到标记,则握手成功。
3、接收方:监察串行输入脚有无输入脉冲,如果能够多次得到4个均匀间隔的脉冲,则认为对方对自己进行同步,计算它的间隔时间,从而得到通讯的波特率,并以此波特率加返回一个接收握手标记(例如你说的"C")。
4、如果引脚上没有脉冲输入,或不是均匀脉冲,则结束监察。
接下来双方接可以正常通讯了。你想如何就如何。
实际应用时,随时监察的,不细述了。
回复

使用道具 举报

5#
ID:90212 发表于 2024-5-14 22:16 | 只看该作者
wufa1986 发表于 2024-5-13 15:15
你是编译错误还是功能没有对呢,你说编译错误但是你自己已经发现了,还有其他错误吗?没有上传错误提示

这个里面相当多的坑,除了提到的两个多余的双引号,转义字符 '\' 全被搞成 '/'。现在编译没有错误了不知道还需要怎么设置才能刷进MEGA1280,只玩过keil,对ICCAVR不熟。请指点:代码修改如下: mega.rar (56.88 KB, 下载次数: 2)

无需积分下载
回复

使用道具 举报

6#
ID:90212 发表于 2024-5-14 22:37 | 只看该作者
当把#include <iom128v.h>改为 #include <iom1280v.h>后,报OCR0、TCCR0、TIFR未定义
回复

使用道具 举报

7#
ID:90212 发表于 2024-5-14 22:38 | 只看该作者
yzwzfyz 发表于 2024-5-14 21:52
我是这样做的:
1、发送方:上电时。以自己的波特率一直不停地发送55H(AAH也行,目的发出0、1等距脉冲 ...

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

使用道具 举报

8#
ID:176854 发表于 2024-5-15 08:53 | 只看该作者
OCR0 改为 OCR0A
TIFR  改为 TIFR0
TCCR = 0x0F 改为 TCCR0A = 0x20;TCCR0B = 0x07;
回复

使用道具 举报

9#
ID:90212 发表于 2024-5-15 13:40 | 只看该作者
jjjjjjir 发表于 2024-5-15 08:53
OCR0 改为 OCR0A
TIFR  改为 TIFR0
TCCR = 0x0F 改为 TCCR0A = 0x20;TCCR0B = 0x07;

安装您的指点,编译错误都消除了,选项的配置是这样设置吗?


回复

使用道具 举报

10#
ID:90212 发表于 2024-5-16 00:23 | 只看该作者
下载烧写进去能够从串口发送出来正确的数据,但是定时器设置有问题,很快就跳出了等待。把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出来。



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表