pwm jelgenerator + bovitesek

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Avatar
albinolynx
Tranzisztorgyógyász
Hozzászólások: 161
Csatlakozott: 2007. október 28. vasárnap, 6:00
Tartózkodási hely: Veszprem
Kapcsolat:

HozzászólásSzerző: albinolynx » 2008. szeptember 5. péntek, 8:30

Portb.1-nel csak a "255" helyett kell "1"?

Cntr nem valtoztat semmit, csak tarol. Amint eleri a beirt erteket, a portb.1 labat negalja.

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9970
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2008. szeptember 5. péntek, 9:09

A cntrl lábnegálást nem látom a programban.....

A portb.1=0/Portb.1=1 kell legyen. A 255reelvileg hibával fordul.


Más: A chip ami készül 90S2313 vagy ATTiny2313?
A deklaráció szerint 90S2313.....

Avatar
albinolynx
Tranzisztorgyógyász
Hozzászólások: 161
Csatlakozott: 2007. október 28. vasárnap, 6:00
Tartózkodási hely: Veszprem
Kapcsolat:

HozzászólásSzerző: albinolynx » 2008. szeptember 5. péntek, 9:22

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.

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.

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9970
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2008. szeptember 6. szombat, 8:31

Ez a Cnt-s rész még nem világos.... :(

Az órajelbeállításra vigyázz!. A T2313-ban a biztosítékbiteknél a DivClk8-DISABLE-re rakandó!

Avatar
albinolynx
Tranzisztorgyógyász
Hozzászólások: 161
Csatlakozott: 2007. október 28. vasárnap, 6:00
Tartózkodási hely: Veszprem
Kapcsolat:

HozzászólásSzerző: albinolynx » 2008. szeptember 6. szombat, 16:36

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.

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9970
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2008. szeptember 6. szombat, 17:41

Port ellenkezőbe kapcsol

Kód: Egész kijelölése

  toggle portb.4

Avatar
albinolynx
Tranzisztorgyógyász
Hozzászólások: 161
Csatlakozott: 2007. október 28. vasárnap, 6:00
Tartózkodási hely: Veszprem
Kapcsolat:

HozzászólásSzerző: albinolynx » 2008. szeptember 6. szombat, 18:08

Akkor hasznalom ezt, koszi!


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"

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9970
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2008. szeptember 6. szombat, 20:35

Azt a 2 feltételes elágazást nézd meg....

Kód: Egész kijelölése

 if portb.1 = 0 then
   toggle portb.1
   else
   toggle portb.1
 end if


ha igaz, csinálok valamit.
ha hamis, akkor is csinálom, ugyanazt :P

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.

Avatar
albinolynx
Tranzisztorgyógyász
Hozzászólások: 161
Csatlakozott: 2007. október 28. vasárnap, 6:00
Tartózkodási hely: Veszprem
Kapcsolat:

HozzászólásSzerző: albinolynx » 2008. szeptember 6. szombat, 20:58

Oke, rendben... :lol:

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" ?

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9970
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2008. szeptember 6. szombat, 21:05

cntr=0

Avatar
albinolynx
Tranzisztorgyógyász
Hozzászólások: 161
Csatlakozott: 2007. október 28. vasárnap, 6:00
Tartózkodási hely: Veszprem
Kapcsolat:

HozzászólásSzerző: albinolynx » 2008. szeptember 8. hétfő, 21:08

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?

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

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9970
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2008. szeptember 8. hétfő, 22:26

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é.

Avatar
albinolynx
Tranzisztorgyógyász
Hozzászólások: 161
Csatlakozott: 2007. október 28. vasárnap, 6:00
Tartózkodási hely: Veszprem
Kapcsolat:

HozzászólásSzerző: albinolynx » 2008. szeptember 8. hétfő, 22:37

Az elso bekezdest ertem, a masodikat is.

Harmadik bekezdes:

Kód: Egész kijelölése

Locate 1 , 1

  Waitms 250


Mehet a kukaba?

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9970
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2008. szeptember 8. hétfő, 22:38

Igen. LCD-t nem használsz. Akkor minek?

Avatar
albinolynx
Tranzisztorgyógyász
Hozzászólások: 161
Csatlakozott: 2007. október 28. vasárnap, 6:00
Tartózkodási hely: Veszprem
Kapcsolat:

HozzászólásSzerző: albinolynx » 2008. szeptember 8. hétfő, 22:43

Rendben, akkor ertem. Megzavart a "dobjam ki a programmag ele".

Kozben benyomtam bascomba, compile utan:

"error 31 - invalid datatype"

39-es sorra mutat:

"If Pind.2 = Tarolo Then"

Nem jo a tarolo igy leirva?


Vissza: “Bascom-AVR nyelvű programozás (AVR programozásának lehetőségei)”

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 1 vendég