pwm jelgenerator + bovitesek
- albinolynx
- Tranzisztorgyógyász
- Hozzászólások: 161
- Csatlakozott: 2007. október 28. vasárnap, 6:00
- albinolynx
- Tranzisztorgyógyász
- Hozzászólások: 161
- Csatlakozott: 2007. október 28. vasárnap, 6:00
Tiny2313 lesz majd, de ezzel nem is foglalkoztam...
"ATtiny13.dat"
"portb.1=1", rendben
A negalast es a ketszeres if-then-else-el gondoltam megoldani.
Amit meg kifelejtettem, hogy be kell tenni meg egy szamlalo nullazast a loop ele, hogy ujra tudjon futni a program.
"ATtiny13.dat"
"portb.1=1", rendben
A negalast es a ketszeres if-then-else-el gondoltam megoldani.
Kód: Egész kijelölése
if pind.2 = tarolo then
if portb.1 = 0 then "ha nincs 5V a kimeneti labon"
portb.1 = 1 "kapcsoljon ra 5V-t"
else "kulonben ha 5V van a kimeneti labon"
portb.1 = 0 "kapcsolja le az 5V-t"
end if "elso if-then-else zarasa"
end if "masodik if-then-else zarasa"
loop
Amit meg kifelejtettem, hogy be kell tenni meg egy szamlalo nullazast a loop ele, hogy ujra tudjon futni a program.
- albinolynx
- Tranzisztorgyógyász
- Hozzászólások: 161
- Csatlakozott: 2007. október 28. vasárnap, 6:00
Leirom megegyszer, hogy mit szeretnek:
A szamlalo fuggvenyeben kapcsljon 0-, vagy 5V-ot.
Ugy indul, hogy van a portb.1 labon 5V (portb.1 = 1).
A szamlalo eleri beallitott hatart (elso if-then-else elagazas), akkor megvizsgalja, hogy a portb.1-en 5-, vagy 0V van-e (masodik if-then-else elagazas).
Igazabol a portb.1 erteke teljesen mindegy, mert barmelyik agon fut tovabb a program, a vegeredmenye mindig az lesz, hogy:
ha 5V volt, akkor 0V-ra kapcsolja
ha 0V volt, akkor 5V-ra kapcsolja
Nem tudom igy vilagos-e, hogy mit szeretnek. Lehet nem a legelegansabb megoldas, de szerintem mukodnie kellene.
A szamlalo fuggvenyeben kapcsljon 0-, vagy 5V-ot.
Ugy indul, hogy van a portb.1 labon 5V (portb.1 = 1).
A szamlalo eleri beallitott hatart (elso if-then-else elagazas), akkor megvizsgalja, hogy a portb.1-en 5-, vagy 0V van-e (masodik if-then-else elagazas).
Igazabol a portb.1 erteke teljesen mindegy, mert barmelyik agon fut tovabb a program, a vegeredmenye mindig az lesz, hogy:
ha 5V volt, akkor 0V-ra kapcsolja
ha 0V volt, akkor 5V-ra kapcsolja
Nem tudom igy vilagos-e, hogy mit szeretnek. Lehet nem a legelegansabb megoldas, de szerintem mukodnie kellene.
Port ellenkezőbe kapcsol
Kód: Egész kijelölése
toggle portb.4
- albinolynx
- Tranzisztorgyógyász
- Hozzászólások: 161
- Csatlakozott: 2007. október 28. vasárnap, 6:00
Akkor hasznalom ezt, koszi!
Vacsora kozben bogyoztam, hogy lehet nem volt szerencses a "negalas", mint szohasznalat.
Most a kod...
Kiemelten:
Vacsora kozben bogyoztam, hogy lehet nem volt szerencses a "negalas", mint szohasznalat.
Kód: Egész kijelölése
$regfile = "2313def.dat"
$crystal = 4000000
$baud = 9600
config portb.1=output
config portb.2=output
Config Pind.2=Input
dim a as long, l as long
dim Cntr As Integer
dim tarolo as word
On Int0 Button
Config Int0 = rising
portb.1=1
Enable Interrupts
Enable Int0
input"freki?",a '0-30.000Hz'
input"számláló értéke?", tarolo '0-65.535'
do
for l = 1 to a
nop
next l
toggle portb.2 'ezen a labon van a kimenet....
for l = 1 to a
nop
next l
Locate 1 , 1
Waitms 250
if pind.2 = tarolo then
if portb.1 = 0 then
toggle portb.1
else
toggle portb.1
end if
end if
loop
Button:
Incr Cntr
Return
end
Most a kod...
Kiemelten:
Kód: Egész kijelölése
if pind.2 = tarolo then "ha a számláló egyenlo a "tarolo" ertekevel
if portb.1 = 0 then "megnezi a portb.1 erteket, ha ez 0 (azaz 0V)
toggle portb.1 ""ellenkezobe" kapcsol, azaz 5V lesz"
else "ha viszont 5V van mar rajta"
toggle portb.1 ""ellenkezobe" kapcsol, azaz 0V lesz"
end if "2. felteteles elagazas vege"
end if "1. felteteles elagazas vege"
Azt a 2 feltételes elágazást nézd meg....
ha igaz, csinálok valamit.
ha hamis, akkor is csinálom, ugyanazt
Minek az IF? A Toggle nem tudja mi volt előtte. Amikor kiadod, megnézi a port állapotát és az ellenkezőjére kapcsol.
Kód: Egész kijelölése
if portb.1 = 0 then
toggle portb.1
else
toggle portb.1
end if
ha hamis, akkor is csinálom, ugyanazt
Minek az IF? A Toggle nem tudja mi volt előtte. Amikor kiadod, megnézi a port állapotát és az ellenkezőjére kapcsol.
- albinolynx
- Tranzisztorgyógyász
- Hozzászólások: 161
- Csatlakozott: 2007. október 28. vasárnap, 6:00
Oke, rendben...
A szamlalo nullazashoz mit kell resetelni?
"reset Cntr" ?
Kód: Egész kijelölése
if pind.2 = tarolo then
toggle portb.1
end if
A szamlalo nullazashoz mit kell resetelni?
"reset Cntr" ?
- albinolynx
- Tranzisztorgyógyász
- Hozzászólások: 161
- Csatlakozott: 2007. október 28. vasárnap, 6:00
Azt gondolom, hogy ez lenne a vegleges kod beegetes elott:
16MHz-es kvarc, 38.4kbps, avrcalc masra nekem nem kell, mert vegul is nem timer-rel lett megoldva. Jol gondolom?
16MHz-es kvarc, 38.4kbps, avrcalc masra nekem nem kell, mert vegul is nem timer-rel lett megoldva. Jol gondolom?
Kód: Egész kijelölése
$regfile = "2313def.dat"
$crystal = 16000000
$baud = 38400
config portb.1 = output
config portb.2 = output
Config pind.2 = input
dim a as long, l as long
dim Cntr As Integer
dim tarolo as word
On Int0 Button
Config Int0 = rising
portb.1 = 1
Enable Interrupts
Enable Int0
input"frekvencia?",a '0-30.000Hz'
input"számláló értéke?", tarolo '0-65.535'
do
for l = 1 to a
nop
next l
toggle portb.2 'ezen a labon van a kimenet'
for l = 1 to a
nop
next l
Locate 1 , 1
Waitms 250
if pind.2 = tarolo then
toggle portb.1
cntr = 0
end if
loop
Button:
Incr Cntr
Return
end
38400 bps az sorosporti sebesség. Független bármi mástól.
Én 9600 vagy 57200 bps (115200bps)-t használnék, ezek a gyakoribbak.
Az A értékével játszod be a frekvenciát. Kalibrálnod kell majd úgyis.
For-nop-next helyett lehet hogy For-waitus 1-next kell, ha kis számokat akarsz beírni az A értékere.
Az LCD-re kiírást felejtsd el a ciklusban. A Locate 1,1 ideje: ~5-25 msec.
A waitms 250 1/4 sec-t várakozik.
Mit keres ott az LCD, ha nem is használod????
Tessék a programmagból kidobni a prg-mag elé.
Én 9600 vagy 57200 bps (115200bps)-t használnék, ezek a gyakoribbak.
Az A értékével játszod be a frekvenciát. Kalibrálnod kell majd úgyis.
For-nop-next helyett lehet hogy For-waitus 1-next kell, ha kis számokat akarsz beírni az A értékere.
Az LCD-re kiírást felejtsd el a ciklusban. A Locate 1,1 ideje: ~5-25 msec.
A waitms 250 1/4 sec-t várakozik.
Mit keres ott az LCD, ha nem is használod????
Tessék a programmagból kidobni a prg-mag elé.
- albinolynx
- Tranzisztorgyógyász
- Hozzászólások: 161
- Csatlakozott: 2007. október 28. vasárnap, 6:00
Az elso bekezdest ertem, a masodikat is.
Harmadik bekezdes:
Mehet a kukaba?
Harmadik bekezdes:
Kód: Egész kijelölése
Locate 1 , 1
Waitms 250
- albinolynx
- Tranzisztorgyógyász
- Hozzászólások: 161
- Csatlakozott: 2007. október 28. vasárnap, 6:00