Hallo,
In JAL wilde ik een programma schrijven voor mijn pic10f200. Hierbij wil ik uiteindelijk 2 uitgangen hoog kunnen maken en een input om zo spaarlampen te kunnen dimmen.
Het rare is dat pin A2 (pootje nummer 3 van de pic) wil niet hoog worden wanneer ik mijn programma in de pic heb gezet.
Het rare is dat ik hem ook getest heb met de pic10F Simulator IDE. Hierbij wordt pin A2 wel hoog.
Ik heb al een condensator tussen de VPP en VDD gezet. Ook heb ik een andere pic geprobeerd. Ook deze doet niet wat ik wil.
De volgende JAL code heb ik gebruikt:
[code=JAL]
pragma target clock 4_000_000
-- Test om alle uitgangen hoog en weer laag te maken
include 10f200
include delay
var bit led1 is pin_A0
var bit led2 is pin_A1
var bit led3 is pin_A2
pin_A0_direction = output
pin_A1_direction = output
pin_A2_direction = output
forever loop
led1 = on
led2 = on
led3 = on
delay_100ms(1)
led1 = off
led2 = off
led3 = off
end loop
[/code]
Dit is de uitslag van het simulatieprogramma.
Als programmer gebruik ik de wisp628 met XWisp die geen foutmeldingen geeft.
Alleen pootje 3 (A2) wil niet hoog worden (getest met een led en mijn multimeter aan het pootje zelf...)
Heel ervaren ben ik niet. Hiervoor heb ik enkele simpele projecten gedaan uit het boek 50 projecten voor beginners.
Alvast bedankt voor het meedenken.
Bedankt voor de snelle reactie in de pic10f200.jal wordt deze GP2 inderdaad gebruikt als clock....
Ik ga eens even kijken of ik dat op kan lossen.
Heb nu de regel
enable_digital_io() toegevoegd.
En snap nu al weer beter hoe ik de datasheet moet lezen
.
Bedankt..
[Bericht gewijzigd door zoutepopcorn op (31%)]
Bedankt voor de tip. Weet nu alweer een stuk meer.
Dit is mijn code geworden om een lamp te dimmen. Hij maakt gebruik van twee uitgangen en kan in vier standen worden gezet. Hij moet 15 minuten opwarmen.
Code in JAL (gebruik gemaakt van Jallib):
-- Dim lampen V 2.0
include 10f200
pragma target clock 4_000_000
pragma target WDT disabled -- no watchdog
pragma target MCLR external -- reset externally
enable_digital_io()
var bit schakelaar_is_uit is pin_A0 -- de pin wordt laag als de schakelaar aan is
var bit dim_lamp
var bit output1 is pin_A1
var bit output2 is pin_A2
pin_A0_direction = input
pin_A1_direction = output
pin_A2_direction = output
procedure wacht_seconden(byte in seconden) is
for seconden loop
_usec_delay( 1_000_000 )
end loop
end procedure
procedure debounce_schakelaar() is
var byte c = 0
for 255 loop -- totale tijd loop zou ong 1/2 sec moeten zijn.
if !schakelaar_is_uit then
c = c + 1
end if
_usec_delay( 100 ) -- wacht twee duizendste
end loop
dim_lamp = c > 50 -- Geen flauw idee wat hier uit komt. Maar als die 1/5 van de tijd (dus ) laag is moet het
end procedure
procedure set_output() is
if(output1) then -- 1 X
if(output2) then
output2 = low -- 1 1 -> 1 0
else
output1 = low -- 1 0 -> 0 1
output2 = high
end if
else -- 0 X
if (output2) then
output2 = low -- 0 1 -> 0 0
else
output1 = high -- 0 0 -> 1 1
output2 = high
end if
end if
end procedure
-- HIER BEGINT HET PROGRAMMA TE LOPEN
output1 = high
output2 = high
for 15 loop -- wacht 15 minuten voordat de lamp mag dimmen...
wacht_seconden(60)
end loop
output1 = high
output2 = low
forever loop
if !schakelaar_is_uit then
debounce_schakelaar()
if(dim_lamp) then
set_output()
wacht_seconden(1)
end if
end if
end loop