www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

utripanje ledice - začetnik

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja AVR-jev
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
Vajdo
Član
Član



Pridružen-a: Čet 23 Sep 2004 23:06
Prispevkov: 1088
Aktiv.: 4.59
Kraj: Ribnica

PrispevekObjavljeno: Čet Mar 26, 2009 1:19 am    Naslov sporočila:  utripanje ledice - začetnik Odgovori s citatom

Naredil sem si program, po katerem, naj bi utripala ledica na izhodu. Problem se pojavi ker mi zadeva naredi utrip 1 in utrip 2, nato pa se zadeva ustavi. Ledica bi morala utripati nekako tako. bip bip bip bipbipbipbip (3x po sekundo z sekundnimi presledki in pa 3x po pol sekunde z pol sekundnimi presledki. Kaj delam narobe?

Koda:
$regfile = "2313def.dat"
$crystal = 1000000




Config Pinb.4 = Input                                       'Definicija vhodov/izhodov
Config Pinb.3 = Output





'Glavna zanka
Do
     If Pinb.4 = 1 Then                                     'preverjanje vhoda
     Waitms 50
     If Pinb.4 = 1 Then

     Wait 1                                                 'utrip 1
     Set Pinb.3
     Wait 1
     Reset Pinb.3

     Wait 1                                                 'utrip 2
     Set Pinb.3
     Wait 1
     Reset Pinb.3

     Wait 1
     Set Pinb.3                                             'utrip 3
     Wait 1
     Reset Pinb.3

     Wait 1
     Set Pinb.3                                             'utrip 4
     Waitms 250
     Waitms 250
     Reset Pinb.3

     Waitms 250
     Waitms 250
     Set Pinb.3                                             'utrip 5
     Waitms 250
     Waitms 250
     Reset Pinb.3

     Waitms 250
     Waitms 250
     Set Pinb.3                                             'utrip 6
     Waitms 250
     Waitms 250
     Reset Pinb.3

     End If
  End If

Loop

_________________
Lep pozdrav, Primož
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo MSN Messenger - naslov
poule
Član
Član



Pridružen-a: Čet 11 Jan 2007 19:53
Prispevkov: 813
Aktiv.: 3.62
Kraj: Ljubljana

PrispevekObjavljeno: Čet Mar 26, 2009 8:17 am    Naslov sporočila:   Odgovori s citatom

A brez tistih treh vrstic preverjanj vhoda ti utripanje deluje?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
program_er
Član
Član



Pridružen-a: Sob 08 Mar 2008 13:47
Prispevkov: 2173
Aktiv.: 10.33
Kraj: Maribor (Pohorje)

PrispevekObjavljeno: Čet Mar 26, 2009 5:34 pm    Naslov sporočila:   Odgovori s citatom

Prva napaka:
Koda:
Config Pinb.4 = Input                                       'Definicija vhodov/izhodov
Config Pinb.3 = Output


Če je nek port vhod, potem ga v programu definiramo in uporabljamo kot PINx.y, naprimer Config PINB.1 = Input, If PINB.1 = 0. Na port, definiran kot PIN, ti ne moreš pisati (PINB.1 = 1), ker je vhod in ne izhod.

Če je nek port izhod, potem ga v programu definiramo in uporabljamo kot PORTx.y, naprimer Config PORTB.2 = Output, PORTB.2 = 1. Portu, ki je definiran kot PORT, ne moreš brati stanja (If PORTB.2 = 0), ker je izhod in ne vhod.


Drugič - nasvet:
Vsak Bascom-AVR (novejši od verzije 10, ti imaš verjetno 11.xxxx...) ima v sebi, v prevajalniku "vgrajeno skripto", ki ti Wait ukaze razbije na ustrezno manjše, v obsegu Byta, torej lahko ti:
Waitms 250
Waitms 250

Brez skrbi spremeniš tudi v:
Waitms 500

Sam včasih uporabljam tudi naprimer Waitms 1120, ko potrebujem malo več kot sekundo, pa deluje brez problema. Wink


Tretjič - nasvet:
Bascom ima uporabniku prijazno funkcijo oz. ukaz, to je ukaz Alias. Sicer ni kako vem pomemben, vendar ti olajša pisanje in razumevanje programa. Torej:
Tipka Alias PINB.4
Led Alias PORTB.3
Zdaj lahko v programu namesto PINx.y in PORTx.y uporabljaš kar svoja imena, paziti moraš samo, da nimaš definirane še kake spremenljivke z istim imenom. Wink

Še en nasvet:
Včasih je dobro - vsaj meni je boljše - če imam glavno zanko kratko in večinoma delam v podrutinah. Saj ne, da bi program potem deloval veliko boljše, le bolj pregleden je.

Pripis: V programiranju v Bascom-AVR, moraš na konec programa vedno dodati ukaz END.

In če uporabima vse te moje predloge, bi dobila tako kodo:
Koda:
'Čip:
$regfile = "2313def.dat"
$crystal = 1000000


'Konfiguracija vhodov in izhodov:
Config Pinb.4 = Input                        'Vhod               
Config Portb.3 = Output                    'Izhod


'Aliasi
Tipka Alias Pinb.4
Led Alias Portb.3

'Glavni program:
Led = 0           'Ugasnema LED, če slučajno gori.
PORTB.4 = 1      'Tipko naslovina s portom in jo tako probama malo nagniti na 1, če slučajno pade na 0. ;)
Do
 If Tipka = 0 Then                                     'Preverjanje vhoda - -tipko veži med Pinb.4 in GND, ne med pin in VCC, je boljše.
  Waitms 25                                              '15-30 je čisto dovolj
   If Tipka = 0 Then
    Gosub Utripanje                                    'Gremo v podrutino Utripanje
   End If
 End If   
Loop

Utripanje:                                                  'Podrutina utripanje
 Wait 1
 Led = 1                                                    'Utrip 1
 Wait 1
 Led = 0

 Wait 1
 Led = 1                                                    'Utrip 2
 Wait 1
 Led = 0

 Wait 1
 Led = 1                                                     'Utrip 3
 Wait 1
 Led = 0
 
 Wait 1
 Led = 1                                                     'Utrip 4
 Waitms 500
 Led = 0

 Waitms 500
 Led = 1                                                     'Utrip 5
 Waitms 500
 Led = 0

 Waitms 500
 Led = 1                                                     'Utrip 6
 Waitms 500
 Led = 0
Return                                                        'Vrneva se tja, od koder sva prišla (v glavno zanko)

End


Kodo probaj in povej, če kaj ne bo delovalo. To sem spisal na pamet brez Bascoma, zato je lahko kaka napakica. Če bo še kaj narobe, povej, rad pomagam. Lahko me dodaš tudi na MSN, če bojo še kaka nerazumevanja.

_________________
Upanje ni del naše projektne strategije.
Member of Trisat - 1. Slovenian satellite running new fault tolerant aerospace processor.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo MSN Messenger - naslov
Vajdo
Član
Član



Pridružen-a: Čet 23 Sep 2004 23:06
Prispevkov: 1088
Aktiv.: 4.59
Kraj: Ribnica

PrispevekObjavljeno: Čet Mar 26, 2009 8:47 pm    Naslov sporočila:   Odgovori s citatom

Applause Applause že sprobavam. No, kakšna takšna razlaga mi je manjkala. No ja, vsak začetek je težak. Zato pa obstaja elektronik.si. Hvala.
_________________
Lep pozdrav, Primož
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo MSN Messenger - naslov
program_er
Član
Član



Pridružen-a: Sob 08 Mar 2008 13:47
Prispevkov: 2173
Aktiv.: 10.33
Kraj: Maribor (Pohorje)

PrispevekObjavljeno: Čet Mar 26, 2009 9:31 pm    Naslov sporočila:   Odgovori s citatom

Vajdo je napisal/a:
No ja, vsak začetek je težak. Zato pa obstaja elektronik.si. Hvala.


No, na dobri poti si. tudi jaz sem tako začel in z vprašanji polnil teme o programiraju (saj jih še zdaj Wink ) Very Happy Brez vse pomoči tega foruma ti nebi mogel napisati skoraj nič od zgoraj. Razz

Drugače pa obstaja že nekaj tem, v katerih je bilo obdelano programiranje:
Štetje s tipko
Ena glavnih tem o programiranju (veliko o ADCju in LCDju)

Ko boš dobro naštudiral tipke, vhode in izhode ter spremenljivke, se spusti še na RS232 komuniciranje in LCD. Ko še boš to bolj ali manj obvladal, se spravi na timerje (nekaj, kar meni ne gre v glavo) ter kakšne PWM modulacije, potem kake grafične prikazovalnike...

Če pa ti bilo kaj ni jasno, samo reči. Wink

_________________
Upanje ni del naše projektne strategije.
Member of Trisat - 1. Slovenian satellite running new fault tolerant aerospace processor.


Nazadnje urejal/a program_er Pet Mar 27, 2009 11:18 am; skupaj popravljeno 1 krat
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo MSN Messenger - naslov
Vajdo
Član
Član



Pridružen-a: Čet 23 Sep 2004 23:06
Prispevkov: 1088
Aktiv.: 4.59
Kraj: Ribnica

PrispevekObjavljeno: Pet Mar 27, 2009 12:34 am    Naslov sporočila:   Odgovori s citatom

No evo zadeva špila, vzporedno sem dodal da se prižiga še semafor in ventil, ter kontra ventil. V programu sem moral spremeniti Config Portb.3 = Output v pinb.3, ker mi je javljal napako. Seveda mi je nekaj stvari razložil tudi bolha95. Hvala tudi njemu. Lcd-je pa že malo poznam, saj sem se prvo z njimi igral. No ja, poznam ji toliko, da lahko sam sebi pošljem vabilo na sbeer Laughing
_________________
Lep pozdrav, Primož
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo MSN Messenger - naslov
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja AVR-jev Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 493 dni


Powered by phpBB © 2001, 2005 phpBB Group