首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ATMega 2560上的TWI在无限循环中等待

ATMega 2560上的TWI在无限循环中等待
EN

Stack Overflow用户
提问于 2017-11-16 03:29:54
回答 1查看 258关注 0票数 0

如果我想要初始化从TWI主机到总线的连接,我会得到一些愚蠢的错误。启动条件将为send,但处理器在无限循环中等待,开始将从属地址发送到总线。

我还分析了总线上的信号,其中一个结果是时钟正在运行,但总线上将没有数据发送。

处理器等待在带有标记箭头的队列中。

我们使用下面的代码来启动和初始化总线...

代码语言:javascript
运行
复制
    void i2c_master_init() {
        TWBR = (uint8_t)TWBR_val;
    }

    void i2c_master_stop() {
        TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTO);
    }

    uint8_t i2c_master_start(uint8_t address) {

        TWCR = 0;
        TWCR |= (1<<TWSTA);
        TWCR |= (1<<TWEN);
        TWCR |= (1<<TWINT);
        while( !(TWCR & (1<<TWINT)) );   <--

        [...]

    }

目前我不知道,代码出了什么问题。还是我做错了什么。有谁可以帮我?

在期待中感谢你。

EN

回答 1

Stack Overflow用户

发布于 2017-12-01 21:07:09

在我的工作台上没有硬件的情况下,我最好的猜测是,您应该通过TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN)一次将所有标志设置为TWI控制注册表。同时,您可以在3个单独的操作(多个时钟周期)中逐个设置它们,而数据手册隐含地说明必须将标志设置在一起,另请参阅数据手册示例。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47315749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档