Raptor
发表于 2007-5-8 13:15
<div class="quote"><b>以下是引用<i>ujff0574</i>在2007-05-08 08:49:12的发言:</b><br />倒 你们有使用过PIC吗?要知道从上电开始 到读取数据需要多少时间吗??不要单单知道PIC是单周期指令就以为时间很短,不可以这样理解的 等你做了就知道了</div><p>PIC的EEPROM使用不需要初始化,也就是说上电完成后可立即使用。 </p><p>就算不使用EEPROM,上电复位以及整个软件初始化的时间也是省不掉的,似乎算不到EEPROM头上吧? </p><p>老兄能否详细解释一下为了使用EEPROM,到底还要在哪些地方耗费时间?</p>
ujff0574
发表于 2007-5-8 13:55
<p>你要了解一下在此地方应用 MCU所要建立起来的稳定工作时间是需要多少,当然在正常工作状态下是足够的,毕竟时间都是以uS计算,但是你说的状态有2个原因</p><p>1:MCU开掉电后开始计算,从上电到稳定工作估计需要100MS时间这其中还不包括一些以外的情况</p><p>2:在这样的工作电压下面,使用4MHZ的频率会有点难度,一般使用内部RC,OSC源一般设定几百K的频率,所以在处理上会更慢</p>
Raptor
发表于 2007-5-8 14:12
<div class="quote"><b>以下是引用<i>ujff0574</i>在2007-05-08 13:55:07的发言:</b><br /><p>你要了解一下在此地方应用 MCU所要建立起来的稳定工作时间是需要多少,当然在正常工作状态下是足够的,毕竟时间都是以uS计算,但是你说的状态有2个原因</p><p>1:MCU开掉电后开始计算,从上电到稳定工作估计需要100MS时间这其中还不包括一些以外的情况</p><p>2:在这样的工作电压下面,使用4MHZ的频率会有点难度,一般使用内部RC,OSC源一般设定几百K的频率,所以在处理上会更慢</p></div><p>老兄的思维方式似乎有些奇怪!你说的这两个原因似乎都算不到EEPROM头上啊。 </p><p>莫非不使用EEPROM,MCU上电就不需要0.1秒的复位时间,又或者不使用内部EEPROM,就能够让MCU上更高的频率?</p><p>所以我认为用了EEPROM之后增加的启动时间,也就是那5个指令周期而已,是谈不上“大大增加”的。</p><p>另外,你关于工作频率的叙述似乎与我看到的资料不一样:PIC内部集成的是4M振荡器,如果不外接元件的话,是没办法工作在其它频率的。当然,如果外接RC电路,可以获得其它的工作频率,但无疑会增大电路的体积。这一点,还请老兄再确认一下。 </p><p>至于工作电压不足以支撑4M频率的问题,采用DC电路为MCU供电应该可以解决。 </p><p>其实你也说了“正常工作状态下是足够的”,有这句话就足够了,从0.1秒延长到0.15秒确实是“大大增加启动时间”,但一般用户是不会有意见的,咱们都是做工程的,够用就行,是不?</p>
ujff0574
发表于 2007-5-8 14:20
可能你还是不理解我的意思,加不加EEPROM 并不是会增加很多时间,而是想说的是,加EEPROM和不加EEPROM的工作方式就不一样,这样所带来的启动时间就大大的不一样 而且在频繁的开关切换过程中使用EEPROM的工作模式会出现软件的BUG 当然这些个问题都是发生在使用过程中的,在原理上面发觉不出来的,当然你所说的工作频率问题我也是参考到了工作模式 你要知道工作在4M和0.4M的 MCU的工作电流大大不一样 (这就是具体的细节问题我不方便说明,毕竟和公司的东西有关了)
Raptor
发表于 2007-5-8 14:41
<p>频率越高肯定功耗越大,没办法的。</p><p>用了EEPROM后bug增加问题,软件越复杂,BUG就越多,这是肯定的了,大伙们都要面对,呵呵。</p><p>我目前能想到的一个问题是如果在写EEPROM的时候掉电,则EEPROM的内容可能异常,这个采取一些校验措施就可以搞定了,复杂一点可以用CRC,简单一点可以用累加和,校验当然需要时间,我想老兄说的工作方式的改变可能是指的这个吧。</p><p>其实,FF3使用的就是PIC,而且用了内部的EEPROM,从使用反馈来看,由此带来的各种问题应该是可以解决的。</p>
ujff0574
发表于 2007-5-8 15:10
但是目前为止我发现论坛里的手电 在调整亮度上面存在一些一直性的问题 目前还没得到比较的解决。
ujff0574
发表于 2007-5-8 15:10
但是目前为止我发现论坛里的手电 在调整亮度上面存在一些一直性的问题 目前还没得到比较的解决。
ldch
发表于 2007-5-8 15:50
<p><font size="5">其实我觉得PIC的工作电流不是很大问题,正常工作最大也无非几个毫安而已。写EEPROM所花费的时间对人手的操作速度而言完全可以忽略。IC自身在上电复位后需要一个固定的周期,这个时间也很短,不是主要问题。我的程序思路是:开机后检查标志位的数值,然后根据数值决定输出状态,如果数值超过范围,则固定写入某个特定值。这样,不管是正常写入出错还是意外掉电出错,只要EEPROM里面存的数值乱了,下次开机又会写回来。除非所使用的地址单元彻底报废。可能意外掉电损坏得更快,但是PIC资料上说IC内部有完善的保护机制,所以何时损坏还不能确定。就算损坏了,一个PIC12F675不过4块钱,对烧友来说不值一提。况且资料公开,自己都可以轻松更换或者修复。EEPROM寿命不算长,所以频繁写入、读出最终也会损坏,但是这个时间相对每天操作几十次甚至几百次的发烧友来说仍然不短,更不用说平时只是偶尔一用的普通用户。</font></p><p><font size="5">上面之所以说PIC的功耗不是特别大问题,是因为电路状态的切换是发生在上电之后,关闭电源开关后电路于电池彻底断开,不存在漏电流,不像需要待机的电路,要考虑待机电流。</font></p><p><font size="5">我用PIC没有改变默认的内置RC振荡频率,这个频率额定值就是4M,从PIC的特性参数里面可以知道,电源电压在2~5.5V这个范围内变化,内置RC频率最低也要超过3.9M,这里不是时钟,没必要考虑精确。所以,电源电压的起伏对反应速度的影响不大。</font></p><p><font size="5">从上面大家的讨论可以看出,有不少是高手,比如raptor,思路清晰,论点明确,希望有空可以交流交流,共同学习提高。ujff应该也是这个行业的专家,但是谈论到具体问题是总是拿些不太相关东西,比如特性曲线,要不是我质疑一下,弄个无关的曲线来搪塞,未免不够诚意。如果确实因为企业秘密无法讨论,那还不如不说。当然,还是感谢您提出了些指标,这些指标对于我们业余爱好者来说也许一时难以企及,但是可以作为一个标杆,指引我们将来的努力方向。免得搞出点小成就后就沾沾自喜,不知道天高地厚。</font></p><p><font size="5">另外,从第二个论坛手电IC的特性曲线中看到,1V电压时输出电流也只有300mA(3.3V输出电压,5V输出时更低,1.8V对LED没意义)而已,输出能力还是不理想。但其可以兼容锂电范围电压的特性还是非常期待突破的,我希望可以尽早找到这样的元件。</font></p><p><font size="5">本来这个程序想委托专门搞单片机开发的同学写,但是人家工作忙,又不是我们这样的手电发烧友,有些想法在交流过程中总是难以找到共鸣。所以还是恒下心自己学习自己写,靠谁都不行,只能靠自己弄。大厂不会把他们认为满意的程序公开,我自己写的不怕,反正不是什么高级东西,拿出来让懂行的评评,我也好知道哪里做得不好。</font></p><p><font size="5">不管怎么说,谢谢所有回帖和支持的朋友!我会继续努力的!</font></p>
ujff0574
发表于 2007-5-8 16:12
你应该看看JET的调整亮度的方式,可能会对你上面的说法有所改变。其实还有很多东西需要去选择,并不是直接写个简单的程序就说是可以使用的。毕竟工业化的产品是需要经过大批量生产验证的。当然有点可以告诉你 MCU的功耗直接关系到记忆效果的好坏,已经说到这点 那你明白了吗??
ujff0574
发表于 2007-5-8 16:12
你应该看看JET的调整亮度的方式,可能会对你上面的说法有所改变。其实还有很多东西需要去选择,并不是直接写个简单的程序就说是可以使用的。毕竟工业化的产品是需要经过大批量生产验证的。当然有点可以告诉你 MCU的功耗直接关系到记忆效果的好坏,已经说到这点 那你明白了吗??
ujff0574
发表于 2007-5-8 16:15
<p>LOW INPUT VOLTAGE SYNCHRONOUS BOOST CONVERTER<br />WITH 1.3-A SWITCHES<br />· Power Save Mode for Improved Efficiency at<br />· More than 90% Efficiency at Low Output Power<br />– 600 mA Output Current at 3.3 V · Forced fixed Frequency Operation possible<br />(VIN ³ 1.2 V) · Load Disconnect During Shutdown<br />– 600 mA Output Current at 5 V (VIN ³ 3 V) · Overtemperature Protection<br />· Automatic Transition between Boost Mode · Small 3 mm x 3 mm QFN-10 Package<br />and Down Conversion Mode<br />· Device Quiescent Current less than 55 mA<br />· Startup into Full Load at 0.5 V Input Voltage · All Single-Cell, Two-Cell and Three-Cell<br />Alkaline, NiCd or NiMH or Single-Cell Li<br />· Operating Input Voltage Range from Battery Powered Products<br />0.3 V to 5.5 V · Fuel Cell And Solar Cell Powered Products<br />· Programmable Undervoltage Lockout · Portable Audio Players<br />Threshold · PDAs<br />· Output Short Circuit Protection Under all · Cellular Phones<br />Operating Conditions · Personal Medical Products<br />· Fixed and Adjustable Output Voltage Options · White LED's</p><p>在放点资料吧,看这个就明白了吧 </p>
若水
发表于 2007-5-8 17:51
<div class="quote"><b>以下是引用<i>ujff0574</i>在2007-05-08 08:49:12的发言:</b><br />倒 你们有使用过PIC吗?要知道从上电开始 到读取数据需要多少时间吗??不要单单知道PIC是单周期指令就以为时间很短,不可以这样理解的 等你做了就知道了</div><p></p>没有,用的51……
若水
发表于 2007-5-8 17:54
真长,慢慢学。
xiewg
发表于 2007-5-8 18:03
<p>搞定。。</p>[此帖子已经被作者于1178767035编辑过]
xiewg
发表于 2007-5-8 18:05
<p>晕,怎么成这样了。。。</p>
ldch
发表于 2007-5-8 20:23
<p><a href="http://focus.ti.com.cn/cn/lit/ds/symlink/tps61202.pdf">http://focus.ti.com.cn/cn/lit/ds/symlink/tps61202.pdf</a></p><p><font size="5">论坛咋整的?</font></p><p><font size="5">不就是TI的芯片吗,网上有资料,有兴趣的研究研究</font></p>
ldch
发表于 2007-5-8 23:31
第五页怎么搞得?进不去了
ldch
发表于 2007-5-8 23:31
第五页怎么搞得?进不去了
ldch
发表于 2007-5-8 23:41
试验程序略修改了一下
<p>希望翻过第五页,可以继续讨论下去</p><p>#include "P12F675.INC"</p><p>EEADDRA EQU 20H<br />EEADDRB EQU 21H<br />TEMP EQU 22H<br />EEREADA EQU 23H<br />EEREADB EQU 24H<br />DELY1 EQU 25H<br />DELY2 EQU 26H<br />DELY3 EQU 27H<br />TEMP1 EQU 28H</p><p> ORG 0x0000</p><p>STAR<br /> BCF STATUS,RP0 ;体选择BANK0<br /> MOVLW 01H<br /> MOVWF EEADDRA ;初始化A地址<br /> MOVLW 02H<br /> MOVWF EEADDRB ;初始化B地址</p><p> CLRF GPIO ;清GPIO寄存器<br /> </p><p> MOVLW 07H<br /> MOVWF CMCON ;关闭比较器19H</p><p> BSF STATUS,RP0 ;体选择BANK1<br /> BCF INTCON,GIE ;禁止中断<br /> CLRF ANSEL ;清9FH模拟选择寄存器</p><p> MOVLW 08H<br /> MOVWF TRISIO ;除GPIO3外,其他管脚都是输出</p><p> CALL DELAY1<br /> CALL DELAY1</p><p> CALL EEREAD_A<br /> CALL EEREAD_B</p><p> MOVF EEREADB,W<br /> XORLW 01H<br /> BTFSS STATUS,Z<br /> GOTO A3<br /> GOTO AA<br /> <br />A3<br /> BCF STATUS,RP0<br /> INCF EEREADA<br /> MOVF EEREADA,W<br /> XORLW 04H<br /> BTFSS STATUS,Z<br /> GOTO WRA<br /> <br />A_1<br /> MOVLW 01H<br /> MOVWF EEREADA</p><p>WRA<br /> MOVF EEREADA,W<br /> MOVWF TEMP<br /> CALL WREEA<br /> <br />AA<br /> BCF STATUS,RP0<br /> MOVF EEREADA,W<br /> XORLW 01H<br /> BTFSS STATUS,Z<br /> GOTO AA2<br /> MOVLW 0FFH<br /> MOVWF GPIO<br /> MOVWF TEMP1</p><p>FINISH<br /> BCF STATUS,RP0<br /> MOVLW 00H<br /> MOVWF TEMP<br /> CALL WREEB</p><p> BCF STATUS,RP0<br /> MOVF EEREADA,W<br /> MOVWF TEMP<br /> CALL WREEA</p><p> CALL DELAY</p><p> BCF STATUS,RP0<br /> MOVLW 01H<br /> MOVWF TEMP<br /> CALL WREEB</p><p> BSF STATUS,RP0<br /> MOVLW 08H<br /> MOVWF TRISIO<br /> BCF STATUS,RP0<br /> BCF GPIO,02H<br /> CALL DELAY1<br /> BCF STATUS,RP0<br /> BSF GPIO,02H</p><p>LOOP<br /> GOTO LOOP<br /> <br />AA2<br /> BCF STATUS,RP0<br /> MOVF EEREADA,W<br /> XORLW 02H<br /> BTFSS STATUS,Z<br /> GOTO AA3<br /> MOVLW 0FEH<br /> MOVWF GPIO<br /> MOVWF TEMP1<br /> GOTO FINISH</p><p>AA3<br /> BCF STATUS,RP0<br /> MOVF EEREADA,W<br /> XORLW 03H<br /> BTFSS STATUS,Z<br /> GOTO AA1<br /> MOVLW 0FDH<br /> MOVWF GPIO<br /> MOVWF TEMP1<br /> GOTO FINISH</p><p>AA1<br /> MOVLW 01H<br /> MOVWF EEREADA<br /> GOTO WRA<br /> <br /> </p><p>EEREAD_A<br /> BCF STATUS,RP0<br /> MOVF EEADDRA,W<br /> BSF STATUS,RP0<br /> MOVWF EEADR<br /> BSF EECON1,RD<br /> NOP<br /> MOVF EEDATA,W<br /> BCF STATUS,RP0<br /> MOVWF EEREADA<br /> RETURN</p><p>EEREAD_B<br /> BCF STATUS,RP0<br /> MOVF EEADDRB,W<br /> BSF STATUS,RP0<br /> MOVWF EEADR<br /> BSF EECON1,RD<br /> NOP<br /> MOVF EEDATA,W<br /> BCF STATUS,RP0<br /> MOVWF EEREADB<br /> RETURN<br /> <br />WREEA ;写A,TEMP传送写入数据<br /> BCF STATUS,RP0 ;取BANK0<br /> MOVF EEADDRA,W ;取A地址<br /> BSF STATUS,RP0 ;取BANK1<br /> MOVWF EEADR ;A地址进入EEADR<br /> BCF STATUS,RP0 ;取BANK0<br /> MOVF TEMP,W ;取写入数据<br /> BSF STATUS,RP0 ;取BANK1<br /> MOVWF EEDATA ;待写数据进入EEDATA<br /> BSF EECON1,WREN<br /> BCF INTCON,GIE<br /> MOVLW 55H<br /> MOVWF EECON2<br /> MOVLW 0AAH<br /> MOVWF EECON2<br /> BSF EECON1,WR<br /> NOP<br /> NOP<br /> RETURN</p><p>WREEB ;写B,TEMP传送写入数据<br /> BCF STATUS,RP0 ;取BANK0<br /> MOVF EEADDRB,W ;取B地址<br /> BSF STATUS,RP0 ;取BANK1<br /> MOVWF EEADR ;B地址进入EEADR<br /> BCF STATUS,RP0 ;取BANK0<br /> MOVF TEMP,W ;取写入数据<br /> BSF STATUS,RP0 ;取BANK1<br /> MOVWF EEDATA ;待写数据进入EEDATA<br /> BSF EECON1,WREN<br /> BCF INTCON,GIE<br /> MOVLW 55H<br /> MOVWF EECON2<br /> MOVLW 0AAH<br /> MOVWF EECON2<br /> BSF EECON1,WR<br /> NOP<br /> NOP<br /> RETURN</p><p>DELAY<br /> MOVLW 10H ;外循环常数<br /> MOVWF DELY1 ;外循环寄存器<br />LOP0 MOVLW 0FFH ;中循环常数<br /> MOVWF DELY2 ;中循环寄存器<br />LOP1 MOVLW 0EEH ;内循环常数<br /> MOVWF DELY3 ;内循环寄存器<br />LOP2 DECFSZ DELY3 ;内循环寄存器递减<br /> GOTO LOP2 ;继续内循环<br /> DECFSZ DELY2 ;中循环寄存器递减<br /> GOTO LOP1 ;继续中循环<br /> DECFSZ DELY1 ;外循环寄存器递减<br /> GOTO LOP0 ;继续外循环<br /> RETURN</p><p>DELAY1 MOVLW 9FH ;外循环常数<br /> MOVWF DELY1 ;外循环寄存器<br />LOOP0 MOVLW 0FFH ;中循环常数<br /> MOVWF DELY2 ;中循环寄存器<br />LOOP1 DECFSZ DELY2 ;中循环寄存器递减<br /> GOTO LOOP1 ;继续中循环<br /> DECFSZ DELY1 ;外循环寄存器递减<br /> GOTO LOOP0 ;继续外循环<br /> RETURN</p><p>END</p>
shj117
发表于 2007-5-9 08:23
<p><font style="background-color:#f3f3f3"> 我觉得那位大侠也是有诚意的,不能用“搪塞”、“不如不说”、“没诚意”之类的来形容,论坛吗,大家都有发言的权利,慢慢来,别着急,相信你一定会很快弄好它。不象俺,手电不是主业,也非副业,纯粹玩玩而已。前阵子玩耳塞随声听,后玩手电,现在又想学摄影,有个兴趣,生活得有意义一点,仅此而已。</font> </p><p><font style="background-color:#f3f3f3"> 和你去年的帖子上的一些“交往”,看出你善于玩阴的,不是和善之辈 。现在羽翼渐丰。劝你一句∶你毕竟不是一般的手电爱好者,和气生财吗。</font></p>