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 ... 33, 34, 35, 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
RGorazd
Član
Član



Pridružen-a: Čet 20 Maj 2004 15:57
Prispevkov: 1712
Aktiv.: 7.71
Kraj: Ig

PrispevekObjavljeno: Pet Maj 22, 2015 4:45 pm    Naslov sporočila:   Odgovori s citatom

Andro82 je napisal/a:

Druga težava:

Merjenje temperature s petimi senzorji DS18b20. Zaradi konverzije je potrebna sekunda zakasnitve. S tipkami nastavljam željeno temperaturo problem pa je, ker tipka zaradi potrebne zakasnitve sedaj ni več dovolj odzivna.


Hvala za pomoč!


LP, Andrej


Uporabi timer, konfiguriraj ga tako, da ti na 1 s proži prekinitev, ki ti bo periodično klicala vsak DS posebej (spiši svojo subrutino). Ko imaš prebran rezultat, ga izpišeš na LCD, v glavni zanki pa preverjaj tipke, tako ne bo več zadeva neodzivna. Lahko pa narediš obratno. Vsak signal, ki gre iz tipke proti uC, veži še na INT0/INT1 pin. Ko se zgodi zunanja prekinitev, poglej katera tipka jo je sprožila in izvedi del programa, ki je vezan na dotično tipko.

_________________
.
._. _ _ ._. _.__. _|
[ (_](_)[ (_] /_(_]
._|
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
mato1111
Član
Član



Pridružen-a: Pet 28 Dec 2012 14:42
Prispevkov: 611
Aktiv.: 4.46
Kraj: Vrhnika

PrispevekObjavljeno: Pon Maj 25, 2015 8:29 pm    Naslov sporočila:   Odgovori s citatom

zdravo poizkušam naslednje pa mi zmeraj meče napako:
Koda:

Dim A As Byte
Dim B As Byte
Dim C As String * 10
C = "111255abcd"
A = Left(C , 3) 'Rad bi dobil vrednost 111
B = Mid(C,4,6) 'Rad bi dobil vrednost 255


Rad bi uporabil pri komunikaciji z PC, da bi iz prejetega stringa dobil številke.
(Upam da se da narediti brez dodatnih spremenljivk ali pa z minimalnim številom, ker imam že skoraj pol SRAM Mr. Green )
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mucek
Član
Član



Pridružen-a: Tor 01 Avg 2006 10:47
Prispevkov: 5327
Aktiv.: 24.78
Kraj: Domzale

PrispevekObjavljeno: Pon Maj 25, 2015 9:07 pm    Naslov sporočila:   Odgovori s citatom

Tudi spremenljivki A in B morata biti deklarirani kot stringa. Left (in druge komande za stringe) lahko uporabljaš le na stringih. Če pa potem hočeš dobiti ven vrednost, pa uporabiš Val:

Koda:

Dim A As String*5
Dim B As String*5
Dim C As String * 10
Dim A_val as word

C = "111255abcd"
A = Left(C , 3) 'Rad bi dobil vrednost 111
B = Mid(C,4,6) 'Rad bi dobil vrednost 255

A_val = val(A)   'Tu pretvoriš string A v vrednost A_val


Če pa je SRAM problem, potem pa skušaj komunikacijo zoptimizirati: namesto, da pošiljaš "111255abcd", bi lahko za vsako vrednost poslal samo en byte (ASCI(111) namesto treh znakov 1)

LP, g

_________________
...lahko pa se tudi motim ...


Nazadnje urejal/a mucek Pon Maj 25, 2015 9:09 pm; skupaj popravljeno 1 krat
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.83
Kraj: Mengeš

PrispevekObjavljeno: Pon Maj 25, 2015 9:09 pm    Naslov sporočila:   Odgovori s citatom

Itak da ti javi napako. rezultat ukaza LEFT ali RIGHT je string (preberi HELP!). Mislim, da brez dodatne spremenljivke ne bo šlo:

Koda:

Dim A As Byte
Dim B As Byte
Dim C As String * 10
Dim C as string * 3

C = "111255abcd"
D = Left(C , 3)
A = Val(D)
D = Mid(C,4,6)
B = Val(D)
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
mato1111
Član
Član



Pridružen-a: Pet 28 Dec 2012 14:42
Prispevkov: 611
Aktiv.: 4.46
Kraj: Vrhnika

PrispevekObjavljeno: Ned Jun 07, 2015 7:22 pm    Naslov sporočila:   Odgovori s citatom

To pretvarjanje string->byte se mi ne obnese najbolje.
Koda:

Dim Uart As String * 20
Dim Stringtobyte As String * 4
Dim Izh1set As Byte
Dim Time1 As Word

Uart = "201100"

Do

Stringtobyte = Mid(uart , 3)
Izh1set = Val(stringtobyte)
Stringtobyte = Mid(uart , 4 , 7)
Time1 = Val(stringtobyte)

Print "/izh1set" ; Izh1set ; "/time1" ; Time1

Wait 1
Loop

Iz stringa uart(201100) bi moral razčleniti 20(tega ne rabim), 1(to vrednost bi morala dobiti spremenljivka stringtobyte), 100(to vrednost bi morala dobiti spremenljivka time1)
Vendar se mi na uart izpiše tole:
Koda:
/izh1set76/time1100
Ni mi jasno kje je spremenljivka izh1set dobila vrednost 76? Brick wall
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.83
Kraj: Mengeš

PrispevekObjavljeno: Ned Jun 07, 2015 7:29 pm    Naslov sporočila:   Odgovori s citatom

hm... v stavku
Stringtobyte = Mid(uart , 3)
ti po moje manjka ena številka...

v drugem pa si kompilerju rekel tole:
stringtobyte naj bo del spremenljivke UART, prvi zank naj bo četrti, potem vzemi sedem znakov od tam.

PAZI! Prva številka je prvi string, ki ga hočeš, druga pa NI zadnji string, ampak je ŠTEVILO znakov, ki jih hočeš zajeti. Torej bolj takole:

Stringtobyte = Mid(uart , 3,4) : prvi znak je tretji (to je enica), potem vzemi štiri znake od tam.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
mato1111
Član
Član



Pridružen-a: Pet 28 Dec 2012 14:42
Prispevkov: 611
Aktiv.: 4.46
Kraj: Vrhnika

PrispevekObjavljeno: Ned Jun 07, 2015 7:38 pm    Naslov sporočila:   Odgovori s citatom

Jaz bi samo rad iz stringa uart razbral tretji znak v stringu (ki bo zmeraj številka od 0-9) in ga pretvoril v byte.

Ali drugače: Uart="123456" jaz pa bi rad iz tega stringa razbral številko 3 in jo pretvoril v byte

PS:Moral bi narediti takole
Koda:
Stringtobyte = Mid(uart , 3 , 1)
Izh1set = Val(stringtobyte)
Mr. Green Zmeraj mi nagaja kakšna malenkost Brick wall
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.83
Kraj: Mengeš

PrispevekObjavljeno: Ned Jun 07, 2015 7:46 pm    Naslov sporočila:   Odgovori s citatom

Natanko tako, ja.
Vedno moraš pazljivo prebrat help za nek ukaz, če ne razumeš pa vpisati demo program zanj (je praktično vedno zraven) in preizkusit. Če ukaza ne razumeš ali ga razumeš narobe, je pa hudič, ja...
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
mato1111
Član
Član



Pridružen-a: Pet 28 Dec 2012 14:42
Prispevkov: 611
Aktiv.: 4.46
Kraj: Vrhnika

PrispevekObjavljeno: Pet Jun 19, 2015 8:44 pm    Naslov sporočila:   Odgovori s citatom

Že nekaj časa razmišljam kako, bi naredil, da če tiščim tipko recimo 2 sekundi naredi program1 če pa tiščim 4 sekunde pa naredi program2 brez da bi izvršil program1.
Nič pametnega mi ne pade na pamet Eh?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
BorisK
Član
Član



Pridružen-a: Sre 02 Apr 2008 23:43
Prispevkov: 239
Aktiv.: 1.23
Kraj: Ljubljana

PrispevekObjavljeno: Pet Jun 19, 2015 11:24 pm    Naslov sporočila:   Odgovori s citatom

mato1111 je napisal/a:
Že nekaj časa razmišljam kako, bi naredil, da če tiščim tipko recimo 2 sekundi naredi program1 če pa tiščim 4 sekunde pa naredi program2 brez da bi izvršil program1.
Nič pametnega mi ne pade na pamet Eh?


Tole imaš predlog algoritma, naprej boš pa že sam. Smile



algoritem.JPG
 Opis:
 Velikost datoteke:  38.76 KB
 Pogledana:  18 krat

algoritem.JPG


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



Pridružen-a: Ned 24 Sep 2006 0:13
Prispevkov: 1423
Aktiv.: 6.67
Kraj: Rogaška Sl.

PrispevekObjavljeno: Sre Avg 19, 2015 11:16 pm    Naslov sporočila:   Odgovori s citatom

Zdravo

Zanima me kako prepričati bascom, da bo sprejel zunanjo referenčno napetost na AD pretvorniku pri (attiny 26).

PA.3 (AREF) deklariram kot vhod ?

Potem pa bo potrebno verjetno nastaviti preko registra ADMUX ?

Hvala za pomoč.

Lp.

_________________
--
"Če bi volitve kaj pomagale, bi jih prepovedali." (Mark Twain)
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
mato1111
Član
Član



Pridružen-a: Pet 28 Dec 2012 14:42
Prispevkov: 611
Aktiv.: 4.46
Kraj: Vrhnika

PrispevekObjavljeno: Sre Avg 19, 2015 11:23 pm    Naslov sporočila:   Odgovori s citatom

Koda:
 Config Adc = Single , Prescaler = Auto , Reference = Avcc


Jaz imam tako pri atmega8
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Profesor Einstein
Član
Član



Pridružen-a: Ned 24 Sep 2006 0:13
Prispevkov: 1423
Aktiv.: 6.67
Kraj: Rogaška Sl.

PrispevekObjavljeno: Čet Avg 20, 2015 12:03 am    Naslov sporočila:   Odgovori s citatom

Hvala za odgovor.

Že deluje...

Lp.

_________________
--
"Če bi volitve kaj pomagale, bi jih prepovedali." (Mark Twain)
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
mato1111
Član
Član



Pridružen-a: Pet 28 Dec 2012 14:42
Prispevkov: 611
Aktiv.: 4.46
Kraj: Vrhnika

PrispevekObjavljeno: Čet Avg 20, 2015 8:17 pm    Naslov sporočila:   Odgovori s citatom

Imam vprašanje glede programa za tipkovnico 3x4. Za osnovo sem vzel program iz primera AN #144 - CodeLock AVR
Rad bi naredil, da ko vtipkam 4 številke in pritisnem # da si program zapomne kombinacijo oz jo shrani v spremenljivko "code". Sproti se na LCD izpisuje vrednost spremenljivke "code" ko tipkam številko napr: 1234 ko pa pritisnem # in bi moralo napisati "geslo sprejeto" in vrednost spremenljivke "code" napr: 1234 pa izpiše 0.

Koda:

$regfile = "m16def.dat"
$crystal = 8000000
$baud = 9600
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , Rs = Portb.3 , E = Portb.2
Config Lcd = 16 * 2

Dim Keyread As Byte
Dim Key As Byte
Dim Code As Word
Dim Mycode As Word
Dim Code1 As Word
Dim Digits As Byte

Ddrd = 255
Portd = 0


Config Kbd = Portc , Debounce = 40

Cls
Cursor Off Noblink

Begin:
    Code = 0
    Digits = 0
    Point = 0

Scan:
    Cls
    Lcd "VNESI KODO"
Do
    Keyread = Getkbd()
        If Keyread <> 16 Then Gosub Gotkey
            Waitms 100

Loop





Gotkey:
    Ddrb = 255
    Waitms 200

    Key = Lookup(keyread , Dta)

    If Key <> 11 Then                                       'CE NI #
      If Key <> 15 Then                                     'CE NI *
      If Digits < 4 Then                                    'ce je manj kot 4 znaki
         Incr Digits
         Point = Digits + 6
         Code = Code * 10
         Code = Code + Key
         Cls
         Locate 2 , 1
         Lcd Code
      End If
      End If
    End If

    If Key = 11 And Digits = 4 Then                         'CE JE pritisnena # in 4 znaki potem POTRDI PIN
    Code = Code1
    Cls
    Upperline
    Lcd "KODA SPREJETA"
    Lowerline
    Lcd Code
    Wait 3
    Goto Begin
    End If

    If Key = 15 And Digits <= 4 Then                        'CE JE pritisnjena * IZBRISI VNESENO
    Lowerline
    Lcd "               "
    Code = 0
    Digits = 0
    Point = 0
    Goto Scan
    End If

Return

Dta:
Data 1 , 4 , 7 , 15
Data 2 , 5 , 8 , 0
Data 3 , 6 , 9 , 11
Data 65 , 66 , 67 , 68


Nazadnje urejal/a mato1111 Čet Avg 20, 2015 9:18 pm; skupaj popravljeno 1 krat
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Vlado
Član
Član



Pridružen-a: Sre 03 Mar 2004 21:35
Prispevkov: 561
Aktiv.: 2.53
Kraj: Ljubljana

PrispevekObjavljeno: Čet Avg 20, 2015 9:12 pm    Naslov sporočila:   Odgovori s citatom

Mato,
kodo ne moreš potrditi in shraniti z isto tipko (#).
Za shranjevanje kode uporabi *, za potrditev kode pa uporabi #.
Prav tako shranjeno kodo shrani v eeprom, na začetku programa jo preberi,
drugače boš po vsakem izklopu izgubil shranjeno kodo - kode če jih bo več.
Ko sem delal tipkovnico, sem imel eno kodo ki je služila za dodajanje in brisanje kod.
Taki kodi ponavadi rečejo master, ali pa servisna koda.
Tako kot imaš ti narejeno bi vsak lahko prišel vpisal štiri mestno kodo jo potrdil in uporabil tvojo tipkovnico.
LP
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 ... 33, 34, 35, 36, 37, 38  Naslednja
Stran 34 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: 48 dni


Powered by phpBB © 2001, 2005 phpBB Group