Hi,
bij volgend klein programmatje heb ik wat problemen.
in PIC basic +
Het volgende was de bedoeling .
Bij een duw op de knop "BttSta" moet het lampje "test" aangaan en een teller één omhoog.
Het lampje gaat aan en de teller gaat omhoog tot 1 of 2 soms 3
Als ik de knop ingedrukt hou krijg ik precies toch nog een puls op de uitgang zodat het ledje even uitgaat en de teller een niewe puls krijg dikwijls met de waarde 1
Toen heb ik test vervangen door LCD waar ik een BCD/7seg omvormer opheb, ik moest test uit de inleiding weg halen omdat deze blijkbaar voor het uitgaan van de led zorgde.
Zijn er enige gedachten. Ik dacht toch dat eenmaal het prg vertrokken hij bleef draaien tussen main en het einde en niet reug vanuit het begin.
device = 16f73
xtal = 20
config HS_osc
declare RSOUT_pin PortB.6
symbol test = portC.4 'Is a led
symbol zoom = portC.5 ' is a led
symbol Bttsta = portB.2 'Is startknop
Symbol LCD = PortC
dim stap as byte
dim i as byte
dim tmpinp as bit
LCD = 0
'test = 1
stap = 0
tmpinp = 0
TrisC = %00000000
trisB = %00111110
main:
if BttSTA = 1 then tmpinp = 0: goto main'als knop ingedrukt is
if tmpinp = 1 then goto main 'Prevent repeat
for i = 1 to 10 'ontdenderen
pause 10
next
stap = stap + 1
LCD = stap
tmpinp = 1
serout portB.6,84,[DEC stap, 10,13] '9600baud8N1
delayms 50
goto main
Erik
In order to succeed you must fail, so that you know what not to do the next time.
ik begrijp uit jou verhaal dat als je het knopje indrukt je teller soms 2 of 3 omhoog gaat inplaats van 1? indien ja zou het kunnen door de contact dender van je schakelaar kan je dit niet met een condensatortje opvangen?
als dat het probleem is dan moet je je knopje met een weerstand( 4.7k) tussen de Plus en de poort van je pic, en dan nog 1 condensator (1 Uf - 10 UF) tussen de min en pin van je pic. als laatste nog 1 weerstand (10k a 20k) tussen min en pin van je pic
Neen dit is het probleem niet.
Als ik op de knop duw verschijn er een 1 op mijn display en als ik hem verder ingehouden hou dan na ongeveer ~2 sec wordt de 1 eventjes een 0 en terug een 1.
Als ik meerdere keren duw (kort achter elkaar) dan verschijnt er een 1 dan 2 soms 3 en zelf 4 maar dan is het weer van het begin af aan.
Het is precies alsof de schakeling zichzelf reset om de ~2sec. De resetingang is nochtans rechtstreeks verbonden via een R van 10K aan VDD voor test.
Heb ik voor dit programma een Eprom nodig?
PS Wouter waarom zet je nog 10K in // met de capaciteit.
Confusion
There are only 10 types of people in the world - those who understand binary, and those who don't
- Gebruik je wel een pulldown weerstand (een weerstand van 10-20k tussen de ingangspin en massa)?
- Staat de Watchdog-timer uit?
Overigens hoef je voor contactdender niet bang te zijn, dat heb je software matig al opgelost met de wacht routine.
Push up weerstand van 47K naar Vdd.
Die watchdog-timer is nergens in mijn software te bespeuren tenzij mischien in de 16F73.inc-file.
Volgens de help is deze default op off.
Kan het zijn dat deze timer een volldeige reset geeft?
Probleem opgelost
Door het feit dat ik durfde "config HS_osc" in te tippelen waren al de andere defaultinstelling overschreven en in mijn geval stond daarmee de Watchdog-timer op on met een getal van 128 or zoiets wat hem een reste forceerde om de 2.3 sec.
Dus naast de kristal instellingen moest ik al de andere instellingen her-specifiëren.
Ik had wel al geprobeerd de Watchdog uit te schakelen in een volgende regel Dus
Device = 16F73
Xtal = 20
Config HS_osc
Config WDT_off
maar blijkbaar overschreef de tweede config de eerste en dus
Device = 16F73
Xtal = 20
Config HS_osc, WDT_off
gaat beter.
Ik wil hiermee wel iedereen bedanken die me door deze eerste kennismaking van de Microprocessors heen heeft geholpen.
En dat ik door mijn problemen bij deze geslaagde forum terecht ben gekomen. Jullie horen nog wel van me.