Hallo
Heb me suf lopen zoeken maar kan het niet vinden.
Hoe krijg ik een pic 16f628a in low power mode
met mikrobasic pro?
Graag info hierover.
Had je al op hun forum gezocht?
http://www.mikroe.com/forum/viewtopic.php?f=6&t=1311&view=prev…
ja had ik al gezien.
Had de code ook al gesimuleert maar daar doet hij het niet.
Of zal het alleen werken als ik de code in een pic programeer?
EdwinNadorp
Koop hier uw kristallen bol - in 2008 ga ik m'n projecten afmaken, echt waar ....... nouja in 2009 dan ..... ehh 2010 ....
Nou dat is wat ik kan vinden bij mikrobasic.
Op hun forum geven ze aan om sleep in je code te gebruiken voor low power.
EdwinNadorp
Koop hier uw kristallen bol - in 2008 ga ik m'n projecten afmaken, echt waar ....... nouja in 2009 dan ..... ehh 2010 ....
je beseft dat je uC dan stopt met werken en wacht op een externe interrupt om weer verder te gaan ...
Als je hem op een lagere spanning wil laten werken, schoef je spanning terug tot 2v en je heb 'low powermode'.
Hou wel rekening met je ttl signalen, indien je die gebruikt.
ja, zal even uit leggen wat ik wil.
om minder spannig te gebruiken wil ik naar low power.
voeding baterijen.
Via externe interupt port rb4-7 (pic16f628a) zou he weer moeten ontwaken (wake-up).
EdwinNadorp
Koop hier uw kristallen bol - in 2008 ga ik m'n projecten afmaken, echt waar ....... nouja in 2009 dan ..... ehh 2010 ....
Gesimuleert met real pic simulator.
laat de pic eerst 2 keer om en om 2 led's branden
en dan zou hij in sleep moeten gaan.
Maar de led's blijven maar knipperen.
EdwinNadorp
Koop hier uw kristallen bol - in 2008 ga ik m'n projecten afmaken, echt waar ....... nouja in 2009 dan ..... ehh 2010 ....
ik ken je code niet maar voor de hand ligt natuurlijk dat je sleep in een while blijft hangen.
Een interrupt zou je while test kunnen aanpassen zodat je uC weer zijn ding gaat doen totdat hij weer in de sleep lus komt.
Je simulatie zou dat dan ook moeten doen, kan je meteen je externe interrupt testen.
dus
runflag = 1
while runflag
sleep ' of wat is de microbasic sleep command
wend
Dat had ik nog niet geprobeert, ga ik straks effe testen.
laat het even weten dan.
Heb de code aan gepast het lijkt te werken in simulatie!
Als de pic in sleep zou moeten zijn blijft er wel een led branden.
is dit normaal?
Ik dacht als de pic in sleep is hij ook alle poorten zou sluiten.
[Bericht gewijzigd door Henry S. op (56%)]
Als ik wat google, vind ik dat je er een tijd achter moet brengen, ik denk in seconden. Misschien dat je nu verder kan? En anders moet je eens in het écht proberen, dus niet in simulatie?
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
De poorten van een PIC blijven bij een SLEEP gewoon in de toestand waarin ze zijn. Als je ze uit wilt hebben, is het aan de programmeur zelf om dat te doen. (Is ook het meest logisch)
Dan ga ik van middag het even in het echt proberen.
Neem aan dat je het ook kan meten dat de pic in low power is.
Zou iemand mij kunnen vertellen hoe ik dat het beste kan meten (multimeter)
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Op µA/mA zetten tussen de Vcc aansluiting en zien of de waardes kloppen met de datasheet.
Wel eventuele belastingen aan outputs meetellen.
En ook als eventueel peripherals zoals watchdog, a/d converter, BOR zijn ingeschakeld, die gebruiken extra...
Frits Kieftenbelt
Ohm sweet Ohm | www.picbasic.nl
Hoewel Proton PICBasic wat afwijkt van MikroBasic zou je ook nog wat kunnen hebben aan de informatie die staat op www.picbasic.nl/interrupt_on_change.htm
helaas door omstandigheden nog niet aan toe gekomen
Moet eerstkomende week c.q weken zoveel mogenlijk plat liggen.
Ja hoor het werkt.
Alleen niet zoals ik gedacht had.
Nadat ik de schakelaar die de pic weer moet ontwaken.
via vss had lopen in plaats van vdd deed hij precies wat hij moet doen.(snap dit alleen nog niet)
volgens de code zou rb4 input moeten zijn toch ?
program b
dim dump as byte
sub procedure blink
porta = %00000001
delay_ms(500)
porta = %00000010
delay_ms(500)
end sub
sub procedure Interrupt
if intcon.rbif = 1 then
dump = portb
delay_ms(200)
INTCON.rbif = 0
end if
end sub
main:
trisa = 0
trisb = %11110000
OPTION_REG.7 = 0
INTCON.GIE= 0
INTCON.RBIE= 1
blink
while true
porta = %10000000
delay_ms(100)
dump = portb
INTCON.rbif = 0
PORTB = 0
delay_ms(100)
asm
SLEEP
end asm
delay_ms(100)
blink
wend
goto main
end.Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
De code werkt perfect verder.
pic gaat in low power, en ontwaakt weer na druk op knop.
Heb het nog nagemeten met multi meter.
Sommige PICs ondersteunen wake-up on pin change. Daar komt inderdaad geen interrupt bij kijken.
Daar is INTCON.RBIF toch voor.
ik weet er niet zoveel van !!!
Maar kreeg het vermoeden dat
door pin change de INTCON.GIE van 0 naar 1 verandert.
Daardoor zou je voor dat je weer naar sleep gaat de INTCON.GIE eerst weer op 0 moeten zetten.
Als het niet goed is moet je het zeggen hoor!!!
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
INTCON.GIE = Global Interrupt Enable.
Die moet je dus aanzetten en verder afblijven!
(Je moet alleen de betreffende flag resetten, in dit geval dus RBIF)

