极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 17379|回复: 13

谁帮我看看这个595三片级联的逻辑分析仪时序是否有问题啊?

[复制链接]
发表于 2012-12-3 23:29:32 | 显示全部楼层 |阅读模式
本帖最后由 长长牙齿 于 2012-12-6 23:58 编辑

话说我用3片595级联,驱动24粒led,然后逐行送入24点阵字模,这样挥舞起来,就可以看到在空中人工扫描的汉字了;
这个是背景;

其中用到latch和shiftout,日前进了一台usbee ax pro的逻辑分析仪,测试了data、clock、latch 的时序,发现点问题

先看图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

 楼主| 发表于 2012-12-3 23:30:13 | 显示全部楼层
本帖最后由 长长牙齿 于 2012-12-3 23:33 编辑

白色线条是数据,红色是latch,橙色是clock;

核心语句如下:
  for ( int row = 0; row < 72; row++){
    digitalWrite(latchPin, LOW);
    shiftOut(dataPin, clockPin, LSBFIRST, ~ilu[row*3+2] );  // 3rd 595 in hi position
    shiftOut(dataPin, clockPin, LSBFIRST, ~ilu[row*3+1] );  // 2ed 595 in mid position
    shiftOut(dataPin, clockPin, LSBFIRST, ~ilu[row*3] );  
    delay(2);


怎么会是这种情况呢,难道在前的digitalWrite发的时序,反倒跑到shiftOut的后面去了???
你要说digitalWrite效率低,慢,我把此语句更改为 PORTB = 0x0,时序图完全一样啊????

谁能解释这个问题呢???
   
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-12-3 23:36:02 | 显示全部楼层
PS:今天分析仪到手,高兴啊。。。。这个小东西,把很多看不见摸不着的东西都能抓到了,价钱比个逻辑笔贵不了几个钱,买对了!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-12-3 23:56:29 | 显示全部楼层
夜深人静了,自己顶。
回复 支持 反对

使用道具 举报

发表于 2012-12-4 09:10:14 | 显示全部楼层
长长牙齿 发表于 2012-12-3 23:30
白色线条是数据,红色是latch,橙色是clock;

核心语句如下:

分析仪看着很爽!万用表用户表示羡慕{:3_47:}

隐约记得官方的ShiftOut库好像有BUG
解决方法
1. 可以参考下官方的ShiftOut教程(好像是两片级联)
2. 那个delay(2)是干什么的?
3. 最后面不需要 digitalWrite(latchPin, HIGH);?
4. 参考下我那个的代码吧(不过是两片级联)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-12-4 11:34:23 | 显示全部楼层
幻生幻灭 发表于 2012-12-4 09:10
分析仪看着很爽!万用表用户表示羡慕

隐约记得官方的ShiftOut库好像有BUG

你重写了shiftout?好吧,有时间我用你的代码测下时序,呵呵
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-12-4 11:36:11 | 显示全部楼层
有digitalWrite(latchPin, HIGH);代码贴上来时搞掉了;呵呵;
delay(2)是计算了视觉暂留和挥舞的速度调出来的,和写数据倒是无关;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-12-4 11:38:31 | 显示全部楼层
我用的就是官网的电路搭建,他也是这么写的代码啊。。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-12-4 12:39:23 | 显示全部楼层
官网代码如下:

  1. //**************************************************************//
  2. //  Name    : shiftOutCode, Hello World                                
  3. //  Author  : Carlyn Maw,Tom Igoe, David A. Mellis
  4. //  Date    : 25 Oct, 2006   
  5. //  Modified: 23 Mar 2010                                 
  6. //  Version : 2.0                                             
  7. //  Notes   : Code for using a 74HC595 Shift Register           //
  8. //          : to count from 0 to 255                           
  9. //****************************************************************

  10. //Pin connected to ST_CP of 74HC595
  11. int latchPin = 8;
  12. //Pin connected to SH_CP of 74HC595
  13. int clockPin = 12;
  14. ////Pin connected to DS of 74HC595
  15. int dataPin = 11;



  16. void setup() {
  17.   //set pins to output so you can control the shift register
  18.   pinMode(latchPin, OUTPUT);
  19.   pinMode(clockPin, OUTPUT);
  20.   pinMode(dataPin, OUTPUT);
  21. }

  22. void loop() {
  23.   // count from 0 to 255 and display the number
  24.   // on the LEDs
  25.   for (int numberToDisplay = 0; numberToDisplay < 256; numberToDisplay++) {
  26.     // take the latchPin low so
  27.     // the LEDs don't change while you're sending in bits:
  28.     digitalWrite(latchPin, LOW);
  29.     // shift out the bits:
  30.     shiftOut(dataPin, clockPin, MSBFIRST, numberToDisplay);  

  31.     //take the latch pin high so the LEDs will light up:
  32.     digitalWrite(latchPin, HIGH);
  33.     // pause before next value:
  34.     delay(500);
  35.   }
  36. }
复制代码
回复 支持 反对

使用道具 举报

发表于 2012-12-5 10:24:39 | 显示全部楼层
别是底层库文件的BUG。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-12-5 14:42:38 | 显示全部楼层
这是官网的原理图

回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-12-5 14:44:52 | 显示全部楼层
这个是连线图,我就是按照这个搭建的。

回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-12-6 23:58:11 | 显示全部楼层
搞了两天,终于明白了不是软件的问题。官网电路搭建中,为了让latch在其他信号准备好的情况下才拉低起效,人为的在latchpin上面加了1μF的电容,正是这个电容,起到了延时的效果。

所以代码才可以毫不犹豫的在shiftout后直接发digitalwrite(latchPin,HIGH)的指令 (595的latchPin是在上升沿起效的),而不用delay一些时间。

经常看到软件换取硬件的简化,这个案例也算是硬件简化软件的一个特别的情况吧。

而且从抓下来的逻辑图看,shiftout的效率还是非常高的,应该足以实现不闪烁的PWM
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-12-6 23:59:45 | 显示全部楼层
回头发一个拿掉1μF电容的逻辑图大家看看,生动的体现了电容的延时作用。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-5-5 07:32 , Processed in 0.040728 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表