AVR(ATMEGA128\16)SPI通信

发布者:丝路老君最新更新时间:2016-10-19 来源: eefocus关键字:AVR  ATMEGA128  SPI通信 手机看文章 扫描二维码
随时随地手机看文章
 AVR(ATMEGA12816)SPI通信有图 - 校 - bbmingxiao 的博客

以下是主机部份

#include
#include
#define uchar unsigned char
#define uint unsigned int

#include "delay.h"
#include "lcd.h"

void port_init(void);
//SPI initialize
// clock rate: 1843199hz
void spi_init(void)
{
 SPCR = 0x74; //setup SPI
 SPSR = 0x00; //setup SPI
  DDRB=0X07;
  PORTB|=0X08;
}

//call this routine to initialize all peripherals
void init_devices(void)
{
 //stop errant interrupts until set up
 CLI(); //disable all interrupts

 port_init();
 spi_init();

 SEI(); //re-enable interrupts
}

uchar SPI_Transmit(char cData)
{
/* 启动数据传输 */
SPDR = cData;
/* 等待传输结束 */
while(!(SPSR & (1< return SPDR;
}

uchar SPI_Receive(void)
{
/* 等待接收结束 */
while(!(SPSR & (1< ;
/* 返回数据 */
return SPDR;
}

void main()
{  
   unsigned char pa,i;
    init_devices();
 LCD1602_initial();
 LCD1602_sendbyte(iDat,1+0x30 );
  // while(1)
 //{
 for(i=0;i<2;i++)
 {
     LCD1602_gotoXY(1, 2);
     //SPI_Transmit(0x01); 
  //pa=SPI_Receive();
  LCD1602_sendbyte(iDat,SPI_Transmit(0x01)+0x30 );
  }//delayms(1000);
 //}
}

 

以下是从机部份

#include
#include
#define uchar unsigned char
#define uint unsigned int

#include "delay.h"
#include "lcd.h"

void port_init(void);
//SPI initialize
// clock rate: 1843199hz
void spi_init(void)
{
 SPCR = 0x64; //setup SPI
 SPSR = 0x00; //setup SPI
  DDRB=0X08;
 PORTB|=0X07;
}

//call this routine to initialize all peripherals
void init_devices(void)
{
 CLI(); //disable all interrupts

 port_init();
 spi_init();

 SEI(); //re-enable interrupts
}

void SPI_Transmit(char cData)
{
/* 启动数据传输 */
SPDR = cData;
/* 等待传输结束 */
while(!(SPSR & (1< }

uchar SPI_Receive(void)
{
/* 等待接收结束 */
while(!(SPSR & (1< /* 返回数据 */
return SPDR;
}

void main()
{  unsigned char pp,i;
    init_devices();
 LCD1602_initial();
 LCD1602_sendbyte(iDat,2+0x30 );
 //while(1)
 //{
   for(i=0;i<2;i++)
   {
     LCD1602_gotoXY(1, 2);
  pp=SPI_Receive(); 
  SPI_Transmit(0x03);
  LCD1602_sendbyte(iDat,pp+0x30 );
   } 
  //delayms(1001);
 //}
}
}

用于测量三个脉冲的时间差·~~~

原理是分别读取每个脉冲来时定时器内的计算值

uint rise_time1,rise_time2,rise_time3;
uchar rise_flag;
uchar over_flow;
uint piancha1,piancha2;
uchar table1[5];
uchar table2[5];
#pragma interrupt_handler timer0_ovf_isr:17
void timer0_ovf_isr(void)
{
   over_flow++;
}


#pragma interrupt_handler timer1_capt_isr:12
void timer1_capt_isr(void)
{  
   static uchar cishu;
   cishu++;
   if(cishu==1)
   rise_time1=ICR1;
   
   else if(cishu==2)
   rise_time2=ICR1;
   
   else if(cishu==3)
  { rise_time3=ICR1;  rise_flag=1;}
 //timer 1 input capture event, read (int)value in ICR1 using;
 // value=ICR1L;            //Read low byte first (important)
 // value|=(int)ICR1H << 8; //Read high byte and shift into top byte
}

void main()
{
   uchar i;
   TCCR1B=0X42;
   TIMSK=0X24;
   rise_flag=0;
   LCD1602_initial();
   LCD1602_gotoXY(1,2);
   LCD1602_sendbyte(iDat,'a');
     SEI();
   TIMSK|=BIT(4);
   while(1)
   {
      if(rise_flag==1)
     {
    piancha1=(rise_time2-rise_time1);
    piancha2=(rise_time3-rise_time2);
    table1[0]=piancha1/10000;
    table1[1]=piancha1%10000/1000;
    table1[2]=piancha1%1000/100;
    table1[3]=piancha1%100/10;
    table1[4]=piancha1%10;
    table2[0]=piancha2/10000;
    table2[1]=piancha2%10000/1000;
    table2[2]=piancha2%1000/100;
    table2[3]=piancha2%100/10;
    table2[4]=piancha2%10;
     LCD1602_gotoXY(2,1);
    for(i=0;i<4;i++)
    {
    LCD1602_sendbyte(iDat,table1[i]+0x30);
    }
    for(i=0;i<4;i++)
    {
    LCD1602_sendbyte(iDat,table2[i]+0x30);
    }
  }
   }
}

关键字:AVR  ATMEGA128  SPI通信 引用地址:AVR(ATMEGA128\16)SPI通信

上一篇:AVR(ATMEGA128)输入捕捉功能
下一篇:简单寻光小车(含多路AD采样)

推荐阅读最新更新时间:2024-03-16 15:16

2016年博世实现在华销售额915亿元人民币
eeworld网消息,上海——全球领先的技术与服务供应商博世集团今日在上海宣布,2016年在华业绩喜人,销售额高达915亿元人民币,同比增长19%。“一直以来,中国市场都是博世集团在亚太地区乃至全球的重要增长驱动力之一。中国贡献了博世亚太市场60%的销售额,以及全球销售额的17%,依旧是博世除德国以外的最大单一市场。”博世集团董事会成员、亚太区业务负责人泰瑞来表示,“稳健的业绩为互联战略的推进夯实了基础。未来,我们将对本土市场持续投资,不断推进互联战略在华落地。” 博世集团各业务板块表现稳健 在过去一年中,博世汽车与智能交通技术业务在华增速远超汽车市场平均水平,成为博世业绩增长的主要驱动力之一。与此同时,消费品业务实现健康
[半导体设计/制造]
IT巨头加速本土化 英特尔16亿美元升级成都
成都再迎国际巨头投资。12月3日,英特尔 宣布了一项针对中国的投资计划。他们要在未来15年内对成都工厂投资16亿美元,并首次将一些更高端的测试和生产技术引入中国。这也是英特尔自从2003年落户成都以来的最大单笔投资。而就在5个月前,另一家国际IT巨头IBM 与川企创建联合研发中心,投资达300亿之巨。 这是自2010年联想、戴尔 、富士康等电子信息巨头西迁成都后,四川迎来的又一波国际IT巨头投资浪潮。业界人士认为,国际IT巨头要守住中国市场,势必将更多技术引入中国本土化。 英特尔“高端测试技术”布局成都 2016年量产 对于16亿美元投资成都,英特尔公司执行副总裁、技术与制造事业部总经理比尔·郝特的评价是:“这次
[手机便携]
IEK:2016十大ICT议题 物联网为一切基础
    工研院IEK提出今年度ICT产业的十大关键议题,并表示今年ICT产业的主轴将是“Big Mesh! 多元载具,群雄崛起”。在科技世代的转移下,将带来主流载具的变化与演进,形成多元载具、多元市场型态,并进而影响相关产业链与技术革新。其中,物联网仍将会是ICT产业的基础,并朝向智慧机器世代发展。 工研院IEK 主任苏孟宗在今天提出 2016 十大ICT产业关键议题,指出2016年ICT产业的主轴将是“Big Mesh! 多元载具,群雄崛起”。 IEK指出,随着世代的演进,所需要的各种关键技术需求也将会大爆发,包括感测与辨识,机器学习,网际安全,网路功能虚拟化等,这些技术也推动了各种创新载具的出现,例如AR/VR、无人车
[手机便携]
基于AVR单片机的服装压力检测系统设计
O 引言 服装是人们生活的一个重要组成部分,它的设计除了款式、花色、光泽等外观因素之外,舒适性也是服装功能性的一个重要组成部分。所谓服装舒适性是指人体着装后,服装具有满足人体要求并排除任何不舒适因素的性能。服装压可分为两种:由服装自身重量形成的垂直压和由服装紧裹身体产生的束缚压。 传统服装压力舒适度测试方法主要有:流体压力法、电阻法、石膏法。其中,使用流体水银压力计或水压机来测量服装压力的方法简单直接,但精度较低,尤其动态测量相当困难;电阻测量方法是将电阻应变片传感器插入衣服内,由于服装压力而使应变片变形导致电阻值的变化,从而将压力变化转换为变化的电压信号,通过测量该变化的电压值得出服装压力测试结果。该方法测试精度高,
[单片机]
iOS 16锁屏渲染图解密:手电筒快捷键终于能改了
北京时间6月7日凌晨一点,苹果将举行主题为“码上就位”的WWDC22大会。   本次发布会苹果有望带来新一代iOS 16、iPadOS 16、macOS 13、tvOS 16以及watchOS 9几套操作系统。   今日,推特博主@aaple_lab晒出了一张iOS 16锁片界面渲染图,从图片来看,底部两个快捷方式可以自定义功能,包括低电量模式、相机、天气、健康、手电筒、电量等。   相信很多使用iPhone手机的用户,对锁屏界面手电筒的快捷键都有过不少吐槽,由于无法更改快捷键,经常会发生因为误触导致闪光灯常亮的问题,这也就有了部分网友“裤兜发光”的神评。   值得一提的是,从渲染图中三组不同风格的时钟、日期来看,应该与
[手机便携]
AVR学习型空调红外遥控器代码
/***************************************/ /* Target : avr单片机 ATmega8l */ /* Crystal: 3.6864Mhz */ /* 2007.8.20 */ /* 外国人写的学习型空调红外遥控器的源程序*/ /* AT24C512里存储2个键的时间数据, */ /* 学习和发射时都通过串口输出 */ /* 按键学习和串口学习都可以 /*带多键盘通讯接口 /***************************************/ //IRD-1V20 模块地址写EEPR
[单片机]
2016-2025年中国机器视觉市场规模及预测
人人皆可使用的节卡码垛工艺包正式发布2022高工锂电智能制造峰会议程,请查收!         随着技术不断走向成熟,对于物体、增强分析、监控容差和准确的组件测量等能力要求也逐渐提升,越来越多的制造企业开始采用系统来实现生产过程中检查、测量和自动识别等功能的优化。   从全球市场来看,GGII数据显示,2021年全球机器视觉市场规模约为804亿元,同比2020年增长12.15%,预计至2025年该市场规模将超过1200亿元。2022年至2025年复合增长率约为12%。     2021年,物流仓储、行业的蓬勃发展拉动了相关企业的扩产需求,视觉检测产品需求增长明显,GGII数据显示,2021年中国机器视觉市场规
[机器人]
SPI实现dsPlC与ISD语音芯片的通信
摘要 介绍dsPIc数字信号控制器以厦ISD4002语音芯片的功能特点;特别介绍dsPIC的SPl库函数的功能及使用,并给出一种简单的语音录放电路。具有低成本、易使用等特点,有较高的实用价值。 关键词 dsPIC dsPlC30F6014 ISD4002 语音芯片 在很多应用场合中,需要用到语音录放功能,如复读机、电话自动应答装置等。本文介绍一种简单实用的dsPIc数字信号控制器,用来完成语音录放功能。由于dsPIC强大的数字信号处理功能,可以提供后续的复杂处理等,具有良好的易扩展性。 1 dsPlC系列的简单介绍 dsPIC系列是Microchip公司推出的新型16位高性能数字信号控制器。它结合了单片机的控制优点及数字
[工业控制]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved