|
18f4550 usb interfacing...
[复制链接]
|
|
发表于 7-3-2009 07:39 PM
|
显示全部楼层
我看了这一篇帖子之后。http://cforum3.cari.com.my/viewthread.php?tid=725843
自己加了ADC=10
然后再跟那帖子PIC大大解释的formula.
得到的fraction是value*0.43945
结果得到正常的温度是29左右。不知道做到对不?
我用meter量到lm35的vcc和gnd只有4.5v.
所以用(4.5/1024)/0.01
现在的温度是28celcius 而lcd显示的reading是27.X到29.X之间在跳。之前delay是500ms的。跳很快。我改成1500ms了。
那reading还是会不太稳,不过不会跳太快了。
如果我在lm35周围加热时候。reading会增加,不过会有fluctuate.(比如:28.1, 28.7, 32.1, 29.2, 29.7, 34.5, 33.2.....)
这样正常吗?
还有,我用的crystal是20MHZ的,为什么写program clock要改成48Mhz?
我之前有用mplab弄好了usb interface了,所以把usb插进电脑,电脑就可以detect到我的device,然后可以用vb控制它了。
而现在弄了这个之后,不知道应该如何和之前那个结合起来。。因为那个是用mplab,这个是ccs...
不知道版主有ccs 写 HID或CDC class的example吗?
我看proteus里面的example都只是hex file而已。没有源码。
[ 本帖最后由 冷血趙雲 于 7-3-2009 08:17 PM 编辑 ] |
|
|
|
|
|
|
|
发表于 8-3-2009 08:32 AM
|
显示全部楼层
回复 61# 冷血趙雲 的帖子
对不起, 我漏放了, 那个是从旧code 里copy paste 出来。
这个, 不如你去看datasheet, 然后和大家分享? 你会受益良多。。。
我用meter量到lm35的vcc和gnd只有4.5v.
所以用(4.5/1024)/0.01
如果你的MCU的VCC 是4.5V, 你可以用4.5V, 那么4.5= 1024
你也可以用external Vref, 去AN3, 比如2.5V, 那么你的精确度有可以提高。
还有,我用的crystal是20MHZ的,为什么写program clock要改成48Mhz?
和fuse 的PLL5 有关。 |
|
|
|
|
|
|
|
发表于 8-3-2009 09:12 AM
|
显示全部楼层
原帖由 pic 于 8-3-2009 08:32 AM 发表
对不起, 我漏放了, 那个是从旧code 里copy paste 出来。
这个, 不如你去看datasheet, 然后和大家分享? 你会受益良多。。。
如果你的MCU的VCC 是4.5V, 你可以用4.5V, 那么4.5= 1024
你也可以用 ...
恩。我会去看data sheet了。之后会分享。
为什么用external 的volage reference会比较精准呢?是因为用mcu的4.5会不稳定的意思吗?
现在先出门了!谢谢版主。 |
|
|
|
|
|
|
|
发表于 8-3-2009 12:42 PM
|
显示全部楼层
原帖由 冷血趙雲 于 8-3-2009 09:12 AM 发表
恩。我会去看data sheet了。之后会分享。
为什么用external 的volage reference会比较精准呢?是因为用mcu的4.5会不稳定的意思吗?
现在先出门了!谢谢版主。
关于精确度, 这个waiweng 大大有解释过。
如果你用LM336-2.5 2.5V 的参考电压进ADC 的Vref+
10bit=1024
5V = 4.88mV/ step
2.5V=2.44mV/ step
1.25V=1.22mV / step
LM35 是10mV/ degC
如果是30DegC= 10mV x 30 = 300mV
如果是10bit, 5V reference, 你会得到大概 ADC= 61
如果是10bit, 2.5V reference, 你会得到大概 ADC= 123
如果是10bit, 1.25V reference, 你会得到大概 ADC= 240
所以, 如果你要更精确, 用1.25V 的reference 或更低的参考电压。
至于你说读数会飘动, 试试加电容稳定, 或RC电路, R=1K, C=1uF~10uF
更高级一点的就是, 你可以做Median filter,这是我没有在这里说过的, 有需要才说。 |
|
|
|
|
|
|
|
发表于 8-3-2009 06:43 PM
|
显示全部楼层
原帖由 pic 于 8-3-2009 12:42 PM 发表
关于精确度, 这个waiweng 大大有解释过。
如果你用LM336-2.5 2.5V 的参考电压进ADC 的Vref+
10bit=1024
5V = 4.88mV/ step
2.5V=2.44mV/ step
1.25V=1.22mV / step
LM35 是10mV/ degC
如果是30DegC= 1 ...
我直接在AN0接gnd也得不到0,有1.3和0.9在跳。。不知道什么原因。
你说的rc circuit是high pass filter low pass filter那些吗?
如果用ext vref的话,program也要改哪里呢? |
|
|
|
|
|
|
|
发表于 8-3-2009 07:08 PM
|
显示全部楼层
原帖由 冷血趙雲 于 8-3-2009 06:43 PM 发表
我直接在AN0接gnd也得不到0,有1.3和0.9在跳。。不知道什么原因。
看来你的Gnd 很差, 请直接从MCU的GND 接到AN0, 你一定要拿到0., LM35 不接。
你用Breadboard?
你说的rc circuit是high pass filter low pass filter那些吗?
先不要节外生枝了。。 你的GND 先弄好在看看。
如果用ext vref的话,program也要改哪里呢? - setup_port_a( ALL_ANALOG | VSS_VREF );
复制代码 |
|
|
|
|
|
|
|
发表于 8-3-2009 10:07 PM
|
显示全部楼层
原帖由 pic 于 8-3-2009 07:08 PM 发表
看来你的Gnd 很差, 请直接从MCU的GND 接到AN0, 你一定要拿到0., LM35 不接。
你用Breadboard?
先不要节外生枝了。。 你的GND 先弄好在看看。
setup_port_a( ALL_ANALOG | VSS_VREF );
我用mcu的ground拿到最低才0.4而已,有时候0.0。。。
为什么会这样的呢??
我的lcd和mcu连接时候就会用到breadboard。mcu的circuit已经是在pcb board上面了的。也没有short circuit.
有什么解决方法吗?
不知道什么原因。 |
|
|
|
|
|
|
|
发表于 9-3-2009 10:15 AM
|
显示全部楼层
原帖由 冷血趙雲 于 8-3-2009 10:07 PM 发表
我用mcu的ground拿到最低才0.4而已,有时候0.0。。。
为什么会这样的呢??
怎样量?电表的黑棒接哪里?
电线要短, 或可能你的meter 也不准确。 |
|
|
|
|
|
|
|
发表于 9-3-2009 01:10 PM
|
显示全部楼层
原帖由 pic 于 9-3-2009 10:15 AM 发表
怎样量?电表的黑棒接哪里?
电线要短, 或可能你的meter 也不准确。
我不是用meter量。。
我是说那个LCD 显示的reading....是0.4-0.0 之间。(AN0接GND的时候) |
|
|
|
|
|
|
|
发表于 5-5-2009 09:01 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 7-5-2009 10:43 AM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 7-5-2009 01:38 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 7-5-2009 04:10 PM
|
显示全部楼层
err...我想你误会了。那个 starter kit, 并没有包含 PIC,只是 board 而已,所以 也是没有包含 bootloader 的。而且它也没有 build-in programmer。只是有socket 而已。UIC00A 是要另外买的。 |
|
|
|
|
|
|
|
发表于 7-5-2009 05:46 PM
|
显示全部楼层
原帖由 waiweng83 于 7-5-2009 04:10 PM 发表
err...我想你误会了。那个 starter kit, 并没有包含 PIC,只是 board 而已,所以 也是没有包含 bootloader 的。而且它也没有 build-in programmer。只是有socket 而已。UIC00A 是要另外买的。
所以如果有了started kit,ICSP还是要自己接?
我还是第一次碰PIC,正在学习着。
顺便问下PIC能用多少种programme language?
之前有学过C++,那一种比较容易使用呢?
最近看了下PIC 的assembly language, 真的很难下。
谢谢。 |
|
|
|
|
|
|
|
发表于 7-5-2009 06:08 PM
|
显示全部楼层
原帖由 高明 于 7-5-2009 05:46 PM 发表
所以如果有了started kit,ICSP还是要自己接?
我还是第一次碰PIC,正在学习着。
顺便问下PIC能用多少种programme language?
之前有学过C++,那一种比较容易使用呢?
最近看了下PIC 的assembly language, ...
顺便问下PIC能用多少种programme language?
不懂。 asm, c, basic....可能还有。
之前有学过C++,那一种比较容易使用呢?
看个人。 喜欢asm,就讲asm keng, 好用。
喜欢c的就讲c keng, 好用。
喜欢basic的就讲basic keng, 好用。
喜欢。。。。。。。。
我本身, 用c.
用c写,换mcu的时候program不用换很多。 |
|
|
|
|
|
|
|
发表于 9-5-2009 07:10 PM
|
显示全部楼层
回复 75# fritlizt 的帖子
谢谢您的回复,我现在正犹豫着要学
MPLAB C 18 还是MPLAB assembly language
[ 本帖最后由 高明 于 9-5-2009 07:13 PM 编辑 ] |
|
|
|
|
|
|
|
发表于 22-4-2012 02:09 AM
|
显示全部楼层
我也是用PIC18f4550
请问是不是要先用ICSP programmer把支持USB programming的固件烧录去PIC后
才可以用USB bootloader呢?
USB bootloader就是先用来load HEX code再write program去PIC的对吧?
只是想确定一下我有没有弄错。。。
还有,要去哪里下载让PIC18F4550可以用USB port 来programming的固件和bootloader呢? |
|
|
|
|
|
|
|
发表于 8-6-2012 05:20 PM
|
显示全部楼层
回复 77# FakeSheep
没错。 你需要bootloader.哪里找我就不懂。 我都用programming port的。 |
|
|
|
|
|
|
| |
本周最热论坛帖子
|