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

news2024/9/23 7:17:51

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);
			else
				LED_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.coloradmin.cn/o/1436687.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

图形界面基础

X Window System 什么是 X Window System&#xff1f; 最初是1984年麻省理工学院的研究&#xff0c;之后变成UNIX、类UNIX、以及OpenVMS等操作系统所一致适用的标准化软体工具套件及显示架构的运作协定。X Window系统透过软体工具及架构协定来建立操作系统所用的图形用户界面&a…

Flink SQL Client 安装各类 Connector、Format 组件的方法汇总(持续更新中....)

博主历时三年精心创作的《大数据平台架构与原型实现&#xff1a;数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行&#xff0c;点击《重磅推荐&#xff1a;建大数据平台太难了&#xff01;给我发个工程原型吧&#xff01;》了解图书详情&#xff0c;…

Redis-布隆过滤器解决穿透详解

本文已收录于专栏 《中间件合集》 目录 背景介绍概念说明原理说明解决穿透安装使用安装过程Redis为普通安装的配置方式Redis为Docker镜像安装的配置方式 具体使用控制台操作命令说明Spring Boot集成布隆过滤器 总结提升 背景介绍 布隆过滤器可以帮助我们解决Redis缓存雪崩的问题…

算法笔记刷题日记——3.简单入门模拟 3.2 查找元素

刷题日记 3.2 查找元素 B1041 B1004 B1028 B1032 A1011 A1006 A1036 错题记录 B1028 人口普查 某城镇进行人口普查&#xff0c;得到了全体居民的生日。现请你写个程序&#xff0c;找出镇上最年长和最年轻的人。 这里确保每个输入的日期都是合法的&#xff0c;但不一定是合理的…

Javascript入门学(基础)

软件篇 JS基础语法第一天 1.javascript介绍 1.1 js是什么 是什么 是一种运行在客户端&#xff08;浏览器&#xff09;的编程语言&#xff0c;实现人机交互效果&#xff0c;而html和css是标记性语言&#xff0c;并非编程语言有什么用 js的组成 htmlcssjs实现按钮点击功能 …

使用mmrotate对自定义数据集进行检测

这里写自定义目录标题 安装虚拟环境创建与准备安装mmrotate 自定义数据集标注数据与格式转换数据集划分与大图像切片 训练与测试修改配置文件执行训练进行测试鸣谢 安装 mmrotate是一个自带工作目录的python工具箱&#xff0c;个人觉得&#xff0c;在不熟悉的情况下&#xff0…

node.js后端+小程序前端+mongoDB(增删改查)

前言 今天我对比了以下node.js的express与python的fastAPI&#xff0c;我决定我还是出一期关于node.jsmangoDB小程序的小案例吧。 不是python的fastAPI不好用&#xff0c;因为fastAPI是python较新的技术&#xff0c;我不敢果断发出教学文章&#xff08;这件事情还是留着给pyt…

Leetcode—59. 螺旋矩阵 II【中等】

2024每日刷题&#xff08;113&#xff09; Leetcode—59. 螺旋矩阵 II 实现代码 class Solution { public:vector<vector<int>> generateMatrix(int n) {vector<vector<int>> ans(n, vector<int>(n));int num 0;int c1 0, c2 n - 1;int r1 …

探索C语言结构体:编程中的利器与艺术

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;C语言学习 贝蒂的主页&#xff1a;Betty‘s blog 1. 常量与变量 1. 什么是结构体 在C语言中本身就自带了一些数据类型&#x…

Verilog刷题笔记21

题目&#xff1a; A priority encoder is a combinational circuit that, when given an input bit vector, outputs the position of the first 1 bit in the vector. For example, a 8-bit priority encoder given the input 8’b10010000 would output 3’d4, because bit[4…

假期算法提升(带你彻底掌握滑动窗口)

呀哈喽&#xff0c;我是结衣。 今天我们要学习的是一种新的算法&#xff0c;也是一种双指针。不过他拥有一个全新的名字”滑动窗口“。 文章目录 1.长度最小的子数组&#xff08;medium&#xff09;思路解题方法Code 2.无重复字符的最长子串&#xff08;medium&#xff09;思路…

【WebSocket】微信小程序原生组件使用SocketTask 调用星火认知大模型

直接上代码 微信开发者工具-调试器-终端-新建终端 进行依赖安装 npm install base-64 npm install crypto-js 然后顶部工具栏依次点击 工具-构建npm // index.js const defaultAvatarUrl https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQ…

[ECE] P2.3Determine t_P_LH and t_P_HL from the oscilloscope

The terms t_P_LH and t_P_HL​​ refer to the propagation delays associated with the low-to-high and high-to-low transitions in a digital signal. These delays are essential in digital systems and are measured with respect to the voltage levels. (Low-to-High…

挑战杯 python+深度学习+opencv实现植物识别算法系统

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于深度学习的植物识别算法研究与实现 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;4分工作量&#xff1a;4分创新点&#xff1a;4分 &#x1f9ff; 更多…

js数组和字符串之间的转换方式以及数组的一些方法

一、数组和字符串之间的转换方式 1&#xff09;将字符串切割成字符串数组—stringObject.split(separator, howmany) seperator-----字符串、正则表达式&#xff0c;必需 howmany------指定返回的数组的最大长度&#xff0c;可省略&#xff0c;省略后全量返回 源代码 var str&q…

node-red通过指令方式读取DL/T645-2007通信协议数据

node-red通过指令方式读取DL/T645-2007通信协议数据 一、DL/T645-2007通信协议介绍1.1 DL/T645通信链路1.2 DL/T645-2007数据格式1.3 CS校验码生成算法1.4 返回数据解析1.5 返回数据处理 二、node-red实现 参考链接&#xff1a; DLT645-2007电表协议解析DL/T645-2007通信协议应…

TDengine用户权限管理

Background 官方文档关于用户管理没有很详细的介绍&#xff0c;只有零碎的几条&#xff0c;这里记录下方便后面使用。官方文档&#xff1a;https://docs.taosdata.com/taos-sql/show/#show-users 1、查看用户 show users;super 1&#xff0c;表示超级用户权限 0&#xff0c;表…

Retinexformer论文精读笔记

Retinexformer论文精读笔记 论文为2023年ICCV的Retinexformer: One-stage Retinex-based Transformer for Low-light Image Enhancement。论文链接&#xff1a;browse.arxiv.org/pdf/2303.06705.pdf&#xff0c;代码链接&#xff1a;caiyuanhao1998/Retinexformer: “Retinexfo…

每日OJ题_算法_模拟④_力扣38. 外观数列

目录 力扣38. 外观数列 解析代码 力扣38. 外观数列 38. 外观数列 难度 中等 给定一个正整数 n &#xff0c;输出外观数列的第 n 项。 「外观数列」是一个整数序列&#xff0c;从数字 1 开始&#xff0c;序列中的每一项都是对前一项的描述。 你可以将其视作是由递归公式定…

全面理解jvm

jvm是什么&#xff1f; java虚拟机 为什么要学jvm&#xff1f; 解决性能调优&#xff0c;优化内存空间&#xff0c;防止服务崩掉的问题。同时是java的工作环境, 一些基于java开发的语言Scale &#xff0c; Jpython都可以运行在java虚拟机上。 jvm的工作原理&#xff1a; 类加…