本站首页 | CAS工程 | 体验ARM | HCS08专栏 | 芯艺淘宝店 | 留言本 | 关于本站

ATtiny88 Boot loader 和 App 的跳转
芯艺老师:
    你好!
请问ATtiny88 怎样实现boot loader 和App 之间的跳转。我的这两部分都用到了timer0 中断 和SPI slave 中断?Boot loader 和App 是应该分开编译还合到一套code 中编译。
1.如果分开编译,是不是只能用一个向量表,怎样跳转?
2.如果合起来编译,怎样把App的功能放到制定地址中?
我现在是在用ICC来编译。
谢谢
芯艺:
boot 和 APP是完全分开的程序,应该是分开编译的,
先将BOOT程序写入器件(BOOT区)内,再通过BOOT程序把APP写入到APP区。
在BOOT内用到了中断话一定要中断向量映射到BOOT区,APP是从0开始的地址处存放的,一般不用改,BOOT程序需要定位到BOOT区,所以在编译时设置BOOT区开始地址才能正确的完成。

作者:Janny 发表于:2010-8-30 12:49:12
modbus rtu
芯艺老师:
    我看了MODBUS RTU程序,有点疑问,在接收中断中每次开启TIMER2,会不会导致每次接收一个字节后都重新定时。但我运行了你的程序,结果是正确的,能解答一下吗?另外定时为什么是4..5ms?
芯艺:
每接收一个字节就清零定时器的计数寄存器,这样只有不接收时才会导致超时发生TIMER2发生中断,4.5ms是MODBUS要求的,表示这么长时间都没有数据接收表明数据包接收完成。

作者:sanbian 发表于:2010-8-25 16:16:06
提个建议
老师在你写的那些代码中,最好是附加上电路图。就是接线那一块。
比方是做ad测试就把那段代码上面画上接线图。简单点也可以。
还有就是你的那套板子多少钱了 。给个批发价  呵呵
芯艺:
实际上在网站上的文章如果没有在CAM8X上做的程序就会有相应的原理图的,如果是在CAM8X上做的试验那是可以参考CAM8X电路原理图的,CAM8X的电路原理图均按功能分成了多个模块,很容易查找到试验中使用的电路部分。关于板子的价格请参考网站上的相关链接,价格只能是这样了,没有更优惠,因为总供没有做多少,优惠了对之前购买的人来讲就不公平了,哈哈。

作者:肖 发表于:2010-8-11 15:54:21
学习你书中的串口通讯,但奇偶校验不懂
avr奇偶校验,始终不懂,网上例子也不多,最好给个 vb 通讯的奇偶校验的例子看看。谢谢你啦!芯片手册也看了,硬件自动加入奇偶校验位,我的上位机如何读出它呢,是自动读的么??我的全是乱码啊
芯艺:
奇偶校验在上位机也是由硬件自动完成的,在VB中打开串口选项中有。我没有做过这样程序,在串口通信应用中我通常的做法是数据包加8位或16位的CRC校验,所以没法给出示例程序。

作者:电动 发表于:2010-8-9 15:58:05
too many arguments to function 'fdevopen'
老师您好,我用的您的AVRGCC这本书里面的代码,在TWI部分,出现以上的错误。不知道是怎么回事
芯艺:
请参考:
http://www.chipart.cn/doc/doc03.pdf

作者:qustxiaolei 发表于:2010-7-10 17:00:02
请老师指点
中石英/陶瓷振荡器(0.9-3.0M)  16K CK + 0 ms       CKSEL=1101 SUT=01
中石英/陶瓷振荡器(0.9-3.0M)  16K CK + 4.1ms      CKSEL=1101 SUT=10
高石英/陶瓷振荡器(3.0-8.0M)    258 CK + 4.1 ms   CKSEL=1110 SUT=00
给解释一下中间258ck+4.1ms是什么意思了??
非常的闹不清楚
                                         谢谢了
芯艺:
258ck是指从掉电或节电模式下的恢复时所有的时钟个数,4.1ms是指复位时额外延时时间。详情请参考数据手册上的时钟选项一节。

作者:陈家 发表于:2010-7-2 10:39:40
请教老师
怎么样定义内存确定的地址
芯艺:
???例如你想编辑 0X200处的RAM那应该是这样的:
uint8_t *p=(uint8_t *)0x200;
*p=1;

作者:渝明 发表于:2010-6-21 14:33:51
出本c语言的书吧
老师您就出本关于avr的c语言的书吧
我先定一本!

作者:小刀 发表于:2010-6-18 14:50:08
感谢老师
谢谢老师无私奉献!
不厌其烦的解答!!
顶!

作者:小刀 发表于:2010-6-18 14:33:15
老师你好 我发现代码打架了。


#include <avr/io.h>
#include <avr/pgmspace.h>
#include <stdio.h>

char g_aString[81];//读取字符串缓冲区

//向UART写一字节
int usart_putchar(char c)
{
  if(c=='\n')
    usart_putchar('\r');
  loop_until_bit_is_set(UCSRA,UDRE);
  UDR=c;
  return 0;
}
//从UART读一字节
int usart_getchar(void)
{
  loop_until_bit_is_set(UCSRA,RXC);
  return UDR;
}
//初始化i/o
void IoInit(void)
{
  //UART初始化
  UCSRB=_BV(RXEN)|_BV(TXEN);/*(1<<RXCIE)|(1<<TXCIE)|*/
  UBRRL=25;  //9600 baud 6MHz:38  4MHz:25  
  
  //i/o流UART连接
  fdevopen(usart_putchar,usart_getchar,0);  
}
//测试主程序
int main(void)
{
  int tmp;
  
  IoInit();
  
  while(1)
  {
    //测试1
    printf("测试1[输入一字符串]:\n");
    scanf("%s",g_aString);
    printf("您的输入为:%s\n",g_aString);

    //测试2:使用FLASH区的字符串
    printf_P(PSTR("测试2[输入数字]:\n"));
    scanf_P(PSTR("%d"),&tmp);
    printf_P(PSTR("您的输入为:%d\n"),tmp);
    
  }
}

芯艺:
请参考
http://www.chipart.cn/doc/doc03.pdf

作者:小刀 发表于:2010-6-18 11:06:43
请老师指点
老师在阅读您的资料时,联系书本上,发现printf(); 
和scanf(); 
迷惑了 
它们具体是怎么操作了 
printf(); 是在哪里输出呢?我在while(1){ printf();scanf();  }
它是在串口呢?还是在显示器了?
 谢谢!

芯艺:
通过串口发送和接收。

作者:小刀 发表于:2010-6-12 8:49:12
PT2262软解码
芯艺老师:

     我按照网上的PT2262解码
怎么解不到码了我的ROSC=4.7M 

芯艺:
是的,这种芯片每个厂家做的都有些区别,请主要参考解码的思路。

作者:梁书三 发表于:2010-6-11 20:46:49
更多留言:[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34]
我要留言

 称呼  *

 邮件   

 QQ号   

 主页   

标题  *
内容(不小于5个字符) *

请输入验证码:*     

Copyright 2006-2009 chipart.cn All Rights Reserved