AVR 328pb触摸功能基本介绍和使用

AVR 328pb触摸功能基本介绍和使用


📝ATMEGA328PB-AU外设中带外围触摸控制器(PTC)电容式触摸按钮、滑块和轮子24个自帽通道和144个互帽通道。(ATMEGA328P没有的)

在这里插入图片描述

✅PTC-外围触摸控制器

  • 🍃低功耗、高灵敏度、环保坚固的电容式触摸按钮、滑块和轮子
  • 🍃支持从省电睡眠模式唤醒触摸
  • 🍃支持互电容和自电容传感
    • 🌾互电容模式下的144个按钮
    • 🌾自电容模式下的24个按钮
    • 🌾混合匹配互电容和自电容传感器每个电极一个引脚
  • 🌿无外部元件负载补偿电荷传感
    • 🍂寄生电容补偿和增益可调,灵敏度高
    • 🍂传感器的自动校准和重新校准
  • 🌿单次电荷测量
  • 🌿硬件噪声滤波和噪声信号去同步,实现高传导抗扰度.
  • 🌿可选通道更改延迟允许根据需要选择新通道上的建立时间采集
  • 🌿通过acquisition-complete中断降低CPU利用率.

PTC方框图

  • 🌿PTC框图互电容(PTC Block Diagram Mutual-Capacitance)
    在这里插入图片描述
  • 🌿PTC框图自电容.(PTC Block Diagram Self-Capacitance)
    在这里插入图片描述
  • 🌿互电容传感器布置
    在这里插入图片描述
  • 🌿自电容传感器布置
    在这里插入图片描述

📘PTC软件配置

📑为了访问PTC,用户必须使用Atmel Start QTouch®配置器来配置QTouch Library固件并将其与应用软件链接QTouch Library可用于在单个界面上以多种组合方式实现按钮、滑块和滚轮.

在这里插入图片描述

  • 🍁Atmel Studio 7.0触摸功能外设配置界面:
    在这里插入图片描述
    在这里插入图片描述

  • 🔱触摸参数:
    在这里插入图片描述

  • 🔑通过Atmel Start QTouch配置的代码如下:

#include <atmel_start.h>
#include "touch.h"
extern volatile uint8_t measurement_done_touch;int main(void)
{uint8_t key_status0 = 0;uint8_t key_status1 = 0;/* Initializes MCU, drivers and middleware */atmel_start_init();/* Enable interrupts */cpu_irq_enable();/** If any of the two self-capacitance buttons is touched, the LED is turned ON* When touch is released, the LED is turned OFF*/while (1) {/* Does acquisition and post-processing */touch_process();if (measurement_done_touch == 1) {measurement_done_touch = 0;key_status0 = get_sensor_state(0) & 0x80;key_status1 = get_sensor_state(1) & 0x80;if ((0u != key_status0) || (0u != key_status1))LED_set_level(true);elseLED_set_level(false);}}
}

⛳注意事项

✨在具体使用触摸功能进行测试过程中发现,如果启用了串口打印调试信息,会发现触摸相应后,如果打印调试信息会出现乱码,目前解决的办法就是,在需要通过串口打印调试信息的时候,开启串口,在不需要打印串口调试信息的时候,关闭串口功能。

  • 🔨解决串口输出乱码代码如下:
#include <atmel_start.h>
#include "touch.h"
#include <stdio.h>extern volatile uint8_t measurement_done_touch;int main(void)
{uint8_t key_status0 = 0;uint8_t key_status1 = 0;uint8_t key_status2 = 0;uint8_t key_status3 = 0;/* Initializes MCU, drivers and middleware */atmel_start_init();/* Enable interrupts */cpu_irq_enable();//USART_disable();/** If any of the two self-capacitance buttons is touched, the LED is turned ON* When touch is released, the LED is turned OFF*/while (1) {/* Does acquisition and post-processing */touch_process();if (measurement_done_touch == 1) {measurement_done_touch = 0;key_status0 = get_sensor_state(0) & 0x80;key_status1 = get_sensor_state(1) & 0x80;key_status2 = get_sensor_state(2) & 0x80;key_status3 = get_sensor_state(3) & 0x80;if ((0u != key_status0) || (0u != key_status1) || (0u != key_status2) || (0u != key_status3)){LED_set_level(true);USART_enable_tx();printf("********\r\n");printf("PE2:%d,PE3:%d,PE0:%d,PE1:%d\r\n",key_status0,key_status1,key_status2,key_status3);printf("Touch Press PE0 - PE3\r\n");USART_disable();}else{LED_set_level(false);USART_disable();}}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/456853.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【python】绘制爱心图案

以下是一个简单的Python代码示例&#xff0c;它使用turtle模块绘制一个代表爱和情人节的心形图案。 首先&#xff0c;请确保计算机上安装了Python和turtle模块。然后&#xff0c;将以下代码保存到一个.py文件中&#xff0c;运行它就可以看到爱心图案的绘制过程。 import turt…

24、数据结构/排序相关练习20240206

一、现有无序序列数组为{23,24,12,5,33,5,34,7}&#xff0c;请使用以下排序实现编程。 函数1&#xff1a;请使用冒泡排序实现升序排序 函数2&#xff1a;请使用简单选择排序实现升序排序 函数3&#xff1a;请使用快速排序实现升序排序 函数4&#xff1a;请使用插入排序实现…

Node.js(五)-跨域(了解)

一 、CORS相关 1. 接口的跨域问题 html: server: 访问结果&#xff1a; 刚才编写的 GET 和 POST接口&#xff0c;存在一个很严重的问题&#xff1a;不支持跨域请求。 解决接口跨域问题的方案主要有两种&#xff1a; ① CORS&#xff08;主流的解决方案&#xff0c;推荐使…

使用STM32 HAL库配置和控制外设接口

使用STM32 HAL库配置和控制外设接口非常简单&#xff0c;以下是一个示例&#xff0c;演示如何使用STM32 HAL库配置和控制USART外设接口。 ✅作者简介&#xff1a;热爱科研的嵌入式开发者&#xff0c;修心和技术同步精进 ❤欢迎关注我的知乎&#xff1a;对error视而不见 代码获取…

数据结构——框架简介

1.数据结构的作用 数据结构是计算机科学中一种重要的概念&#xff0c;它主要用于组织和存储数据以便有效地进行操作。数据结构可以看作是数据的组织方式&#xff0c;通过合理的数据结构设计&#xff0c;可以更高效地执行各种操作&#xff0c;提高程序的性能和可维护性。 以下是…

pytorch 利用Tensorboar记录训练过程loss变化

文章目录 1. LossHistory日志类定义2. LossHistory类的使用2.1 实例化LossHistory2.2 记录每个epoch的loss2.3 训练结束close掉SummaryWriter 3. 利用Tensorboard 可视化3.1 显示可视化效果 参考 利用Tensorboard记录训练过程中每个epoch的训练loss以及验证loss&#xff0c;便于…

JAVA原型模式详解

原型模式 1 原型模式介绍 定义: 原型模式(Prototype Design Pattern)用一个已经创建的实例作为原型&#xff0c;通过复制该原型对象来创建一个和原型对象相同的新对象。 西游记中的孙悟空 拔毛变小猴,孙悟空这种根据自己的形状复制出多个身外化身的技巧,在面向对象软件设计领…

Java实现音乐平台 JAVA+Vue+SpringBoot+MySQL

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示 四、核心代码4.1 查询单首音乐4.2 新增音乐4.3 新增音乐订单4.4 查询音乐订单4.5 新增音乐收藏 五、免责说明 一、摘要 1.1 项目介绍 基于微信小程序JAVAVueSpringBootMySQL的音乐平台&#xff0c;包含了音乐…

后端软件三层架构

一、三层架构简介 三层架构是软件开发中广泛采用的一种经典架构模式&#xff0c;其核心价值在于通过清晰的任务划分来提高代码的可维护性和重用性。具体来说&#xff0c;三层架构主要包括以下三个层次&#xff1a; 持久层&#xff08;DAO层&#xff09;&#xff1a;这一层主要…

【XR806开发板试用】xr806使用tcp socket与手机通信

本文为极术社区XR806开发板活动试用文章。 参考&#xff1a;基于星辰处理器的全志XR806开源鸿蒙开发板上手体验 搭建环境。并成功编译。 项目源码 &#xff1a; https://gitee.com/kingwho/smart-home 在同一个局域网中&#xff0c;手机与xr806连接后&#xff0c;手机 APP 每隔…

背包2讲(2.6)

问题1&#xff1a;装箱问题 题解&#xff1a;这题其实本质上也是01背包&#xff0c;只不过算是变式&#xff0c;要求剩余空间最小值&#xff0c;我们可以转换成最大可以装多少的问题&#xff0c;然后就可以很快的写出题的答案 #include<bits/stdc.h> using namespace st…

c++学习第十六讲---STL常用容器---stack容器,queue容器

一、stack容器&#xff1a; 1.stack基本概念&#xff1a; stack栈容器 stack是一种先进后出的数据结构&#xff0c;它只有一个出口。 栈中只有顶端的元素才能被使用&#xff0c;因此不存在遍历操作。 栈中进数据&#xff1a;入栈 --- push() 栈中出数据&#xff1a;出栈 -…