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 

Programiranje v bascom avr
Pojdi na stran Prejšnja  1, 2, 3 ... 17, 18, 19 ... 36, 37, 38  Naslednja
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Bascom sekcija
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
stursc
Član
Član



Pridružen-a: Tor 08 Jun 2004 14:29
Prispevkov: 323
Aktiv.: 1.45

PrispevekObjavljeno: Tor Nov 10, 2009 1:26 pm    Naslov sporočila:   Odgovori s citatom

@RudiP
To je poznana rešitev

@Program_err
Tabele so prava rešitev. Problem je iskati pravo tabelo. Namreč, če napisem 200 tabel, nebi rad pisal 200X LOOKUP(i, tabela), ampak (če je sploh mogoče)
1 X LOOKUP(i , x). To mi še ni uspelo.
Ta rešitev bi me rešila pisanja in "prihranka" v čipu.

Če ima še kdo kako idejo, prosim

Hvala


LP, stursc
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
rudiP
Član
Član



Pridružen-a: Tor 07 Avg 2007 15:30
Prispevkov: 1234
Aktiv.: 6.06
Kraj: KOPER

PrispevekObjavljeno: Sre Nov 11, 2009 9:14 am    Naslov sporočila:   Odgovori s citatom

Tu je rešitev malo drugače z indexi na bite. Primer deluje in je napisan samo za
prikaz in upam da bo tebi in še marsikomu prišel prav.

Koda:


$regfile = "8515def.dat"
$baud = 19200
$crystal = 11059200
$hwstack = 64
$swstack = 64
$framesize = 64


Config Lcd = 16 * 2
Config Lcdpin = Pin , Db7 = Portb.7 , Db6 = Portb.6 , Db5 = Portb.5 , Db4 = Portb.4 , E = Portb.2 , Rs = Portb.1
Cursor Off


Cls
Lcd "Test PORT in PIN"
'Wait 1


'------------------------------------------------------------------------------
'deklaracija subrutin
Declare Sub Prikazi
Declare Sub Xx(byval Ix As Byte)
Declare Sub Gor
Declare Sub Dol
'------------------------------------------------------------------------------

Config Porta = Output
Config Portc = Output
Config Portd = Input

Dim I As Byte
Dim Pa As Byte
Dim Pc As Byte

'*** deklaracija tipk
Tipka1 Alias Pind.0
Tipka2 Alias Pind.1


'*** deklaracija pinov
Rele1 Alias Porta.0
Rele2 Alias Porta.1
Rele3 Alias Porta.2
Rele4 Alias Porta.3
Rele5 Alias Porta.4
Rele6 Alias Porta.5
Rele7 Alias Porta.6
Rele8 Alias Porta.7

Rele9 Alias Portc.7
Rele10 Alias Portc.6
Rele11 Alias Portc.5
Rele12 Alias Portc.4
Rele13 Alias Portc.3
Rele14 Alias Portc.2
Rele15 Alias Portc.1
Rele16 Alias Portc.0


Porta = 0                               'Izklopiš vse releje na portu A
Portc = 0                               'Izklopiš vse releje na portu C

I = 0

Do

 'Zaradi simulacije sem zakomentiral spodnje vrstice

 ' Debounce Tipka1 , 0 , Gor , Sub
   Gor
'  Debounce Tipka2 , 0 , Dol , Sub
'  Dol
  Call Xx(i)
  Call Prikazi

Loop

'-------------------------------------------------------------------------------

Sub Gor:

 Incr I
 If I > 16 Then I = 1

End Sub
'-------------------------------------------------------------------------------
Sub Dol:

 Decr I
 If I < 1 Then I = 16

End Sub
'-------------------------------------------------------------------------------
Sub Xx(ix As Byte)
    Decr Ix
    If Ix > 8 Then
       Ix = Ix - 8
       Porta = 0
       If Pc.ix = 0 Then Set Pc.ix Else Reset Pc.ix
       Portc = Pc
      Else
       Portc = 0
       If Pa.ix = 0 Then Set Pa.ix Else Reset Pa.ix
       Porta = Pa
    End If
End Sub

'-------------------------------------------------------------------------------
Sub Prikazi:
   Cls
   Lcd Bin(pa)
   Locate 2 , 1
   Lcd Bin(pc)
End Sub
'-------------------------------------------------------------------------------
end



_________________
Lep pozdrav iz Kopra Rudi
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
linel
Član
Član



Pridružen-a: Čet 06 Mar 2008 21:14
Prispevkov: 178
Aktiv.: 0.91
Kraj: prekmurje

PrispevekObjavljeno: Čet Dec 03, 2009 8:42 pm    Naslov sporočila:  Programiranje v bascom avr Odgovori s citatom

pozdravljeni!

mene pa zanima kako pri se pri adc skalira, vhodna napetost 0 - 5V, referenčna napetost 5V resolucija AD 10 bitna....zdaj pa želimo merilno območje ( prikaz na lcd) od 0 - 180*C ... zanima me kako je treba definirati izračun v programu da dobimo takšen prikaz.. lahko prosim gdo napiše enačbe?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
eddie
Član
Član



Pridružen-a: Sre 10 Dec 2003 21:02
Prispevkov: 706
Aktiv.: 3.17
Kraj: Severna primorska

PrispevekObjavljeno: Čet Dec 03, 2009 10:17 pm    Naslov sporočila:   Odgovori s citatom

y=k*x+n Question

Lp
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
protoncek
Član
Član



Pridružen-a: Sre 31 Jan 2007 9:41
Prispevkov: 9573
Aktiv.: 45.63
Kraj: Mengeš

PrispevekObjavljeno: Čet Dec 03, 2009 10:55 pm    Naslov sporočila:   Odgovori s citatom

če to ne znaš, potem močno dvomim da ti bo uspelo napisati program...10 bitov je 2 na 10, kar znese 1024 različnih vrednosti. Torej bo 0 stopinj 0 in 180 stopinj 1024. Če bo na ADC torej 512, to pomeni temperaturo 90 stopinj...čista osnovnošolska matematika...

AJA...da ne rečem da boš moral temperaturni senzor imeti tak, da bo pri nič stopinj dajal 0 voltov in pri 180 stopinj 5 voltov...
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
program_er
Član
Član



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

PrispevekObjavljeno: Čet Dec 03, 2009 11:00 pm    Naslov sporočila:   Odgovori s citatom

protoncek je napisal/a:
če to ne znaš, potem močno dvomim da ti bo uspelo napisati program...10 bitov je 2 na 10, kar znese 1024 različnih vrednosti. Torej bo 0 stopinj 0 in 180 stopinj 1024. Če bo na ADC torej 512, to pomeni temperaturo 90 stopinj...čista osnovnošolska matematika...


Z linel-om sva to že predelala. Problem je v sami kodi.

ADC = 0 - 1023

0 = 0
1023 = 180

1023 / 180 = 5,6833
1023 / 5,6833 = 180,0010557

Torej 1 stopinja ima razpon 5,6833 ADC vrednosti.

Torej bi moral biti osnutek kode v stilu tega:
...
Adc_vrednost = Getadc(0)

Vrednost = Adc_vrednost / 5,6833
...

to bi bilo potrebno še zaokrožiti na cele številke in potem prikazati na LCDju. Ampak vedno javi neko napako! Zato on prosi za del delujoče kode.

Torej teorijo sva že predelala, problem je koda v praksi.

Hvala v imenu obeh.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo MSN Messenger - naslov
protoncek
Član
Član



Pridružen-a: Sre 31 Jan 2007 9:41
Prispevkov: 9573
Aktiv.: 45.63
Kraj: Mengeš

PrispevekObjavljeno: Čet Dec 03, 2009 11:09 pm    Naslov sporočila:   Odgovori s citatom

Hja, takole je to težko. Napako...katero? Lahko je spremenljivka narobe definirana, lahko je ....marsikaj...
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
program_er
Član
Član



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

PrispevekObjavljeno: Čet Dec 03, 2009 11:21 pm    Naslov sporočila:   Odgovori s citatom

Jernej, prilepi kodo Wink
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo MSN Messenger - naslov
linel
Član
Član



Pridružen-a: Čet 06 Mar 2008 21:14
Prispevkov: 178
Aktiv.: 0.91
Kraj: prekmurje

PrispevekObjavljeno: Čet Dec 03, 2009 11:45 pm    Naslov sporočila:  Programiranje v bascom avr Odgovori s citatom

v bistvu narašča od vrednosti 0 - 64% pote pa skoči na 0 in spet narašča do 36%, moralo bi pa normalno od 0 - 100%

Dim Adc_vrednost As Word , Adc_vrednost2 As Single , Vrednost As Single , Izpis As String * 5

Start Adc
Do
Adc_vrednost = Getadc(0)
Adc_vrednost2 = Adc_vrednost

Adc_vrednost = Adc_vrednost * 100
Vrednost = Adc_vrednost / 1023

Izpis = Fusing(vrednost , "#.#")
Locate 1 , 1
Lcd "ADC: " ; izpis ; "%" ; " "

Waitms 10
Loop
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
protoncek
Član
Član



Pridružen-a: Sre 31 Jan 2007 9:41
Prispevkov: 9573
Aktiv.: 45.63
Kraj: Mengeš

PrispevekObjavljeno: Čet Dec 03, 2009 11:56 pm    Naslov sporočila:   Odgovori s citatom

Takole na hitro bi rekel da je od stavka:

Adc_vrednost2=Adc_vrednost

napaka, ker od tam naprej računaš z adc in ne z adc2. Adc je definirana kot word, kar pomeni anjvečjo vrednost 65535. Ko to preseže, gre spet na nulo, zato tako obnašanje. ČE word spremenljivki recimo rečeš da naj bo 65000 plus 10000, potem to ni 75000 ampak 75000-65535=9465, ker preskoči in začne spet od nule. Računaj z ADC2, ki je single in mora delati, saj zato si jo definiral. Najprej si ji dodelil enako vrednost, potem je pa nikjer ne uporabljaš...
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
program_er
Član
Član



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

PrispevekObjavljeno: Pet Dec 04, 2009 6:43 am    Naslov sporočila:   Odgovori s citatom

@protoncek, hvala za opombo, najbrž bo zdaj delalo. Ko sva debatirala preko Skypa sva ravno zato uvedla Single spremenljivko Adc_vrednost2, nato pa sva izgleda pozabila spremeniti nadaljni program d'oh!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo MSN Messenger - naslov
linel
Član
Član



Pridružen-a: Čet 06 Mar 2008 21:14
Prispevkov: 178
Aktiv.: 0.91
Kraj: prekmurje

PrispevekObjavljeno: Pet Dec 04, 2009 7:32 am    Naslov sporočila:  Programiranje v bascom avr Odgovori s citatom

koda je zdaj taka, in stvar dela, hvala za opombo:)


Dim Adc_vrednost As Word , Adc_vrednost2 As Single , Vrednost As Single , Izpis As String * 5

Start Adc
Do
Adc_vrednost = Getadc(0)
Adc_vrednost2 = Adc_vrednost

Adc_vrednost2 = Adc_vrednost * 100
Vrednost = Adc_vrednost2 / 1023

Izpis = Fusing(vrednost , "#.#")
Locate 1 , 1
Lcd "ADC: " ; Izpis ; "%" ; " "

Waitms 10
Loop
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Samo87
Član
Član



Pridružen-a: Pet 25 Jan 2008 2:14
Prispevkov: 462
Aktiv.: 2.34
Kraj: Kamnik

PrispevekObjavljeno: Pet Dec 04, 2009 10:36 am    Naslov sporočila:   Odgovori s citatom

Koda:

Adc_vrednost2 = Adc_vrednost
Adc_vrednost2 = Adc_vrednost * 100

Kaj pa je tukaj "fora" prvega stavka pred drugim?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
protoncek
Član
Član



Pridružen-a: Sre 31 Jan 2007 9:41
Prispevkov: 9573
Aktiv.: 45.63
Kraj: Mengeš

PrispevekObjavljeno: Pet Dec 04, 2009 12:04 pm    Naslov sporočila:  Re: Programiranje v bascom avr Odgovori s citatom

linel je napisal/a:
koda je zdaj taka, in stvar dela, hvala za opombo:)

Ni kaj...samo kot je že Samo rekel, tisti stavek je brez potrebe tam...tudi z njim dela, samo brez veze je...
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
linel
Član
Član



Pridružen-a: Čet 06 Mar 2008 21:14
Prispevkov: 178
Aktiv.: 0.91
Kraj: prekmurje

PrispevekObjavljeno: Pet Dec 25, 2009 7:47 pm    Naslov sporočila:  Programiranje v bascom avr Odgovori s citatom

zanima me,kako se naredi, da se dogodek izvrši če npr gledamo dva pogoja

if pina.0 and pina.1 = 1 then
portc = 1

vendar v bascomu nisem zasledil ukaza and, kako vi naredite v tem primeru?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Bascom sekcija Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Pojdi na stran Prejšnja  1, 2, 3 ... 17, 18, 19 ... 36, 37, 38  Naslednja
Stran 18 od 38

 
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: 75 dni


Powered by phpBB © 2001, 2005 phpBB Group