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 ... 8, 9, 10 ... 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
dkone
Član
Član



Pridružen-a: Sre 07 Mar 2007 18:53
Prispevkov: 2104
Aktiv.: 10.10
Kraj: Krško

PrispevekObjavljeno: Čet Jun 12, 2008 9:12 pm    Naslov sporočila:   Odgovori s citatom

Pobesneli je napisal/a:
Kje bi dobil jaz fajl attiny2313.dat?


Vsak bascom AVR jo ima. Poglej v izvorni mapi bascoma.

_________________
Denis
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
program_er
Član
Član



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

PrispevekObjavljeno: Čet Jul 10, 2008 12:10 am    Naslov sporočila:   Odgovori s citatom

Imam težavo. Rad bi nastavil mojo mego8 na zunanji kvarčni kristal, pa mi ne uspe. Ko sem to hotel narediti na megi16, sem jo s tem zaklenil oz. uničil.
Uporabljam AVRUSB programator (v Bascomu-AVR STK500 extended)

Ko odprem okno za programiranje, mi se poleg ostalega prikaže tudi to:


Ko priključim ATmega8 in pri vsem kliknem Read, mi potem kaže to:


V datasheetu od mege pa piše med drugim to:


Kot se vidi pri 1. sliki, sta pri Fuse bits dva prostorčka oz. kvadratka. Zanima me, kateri kvadratek so CKSEL 3...0 biti. Prvi ali drugi? Če je eden CKSEL, iz česa je potem sestavljen drugi?

_________________
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
program_er
Član
Član



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

PrispevekObjavljeno: Pon Jul 14, 2008 10:25 am    Naslov sporočila:   Odgovori s citatom

Dobil sem eno idejo. Po RS232 protokolu komuniciramo z računalnikom zgolj po 2 žicah (in GND), Rx in Tx.

Včeraj pa sem "oskubil" en USB kabel in pomislil, zakaj pa ne gre isto komuniciranje preko USB? Preko USB-ja namreč napajam mojo Experimentalno ploščico, ker je točno prava napetost. In zakaj nebi mogel na Rx in Tx mege8 povezati še Rx in Tx priključkov USB-ja (ki mi zdaj bingljajo vstran) in megi v programu reči, kot da komuniciram serijsko (Print ukaz)?

Ali je to možno? Obstajajo kaki gonilniki za računalnik, da bi sprejel podatke preko USB?

_________________
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
jurem
Član
Član



Pridružen-a: Tor 02 Dec 2003 15:53
Prispevkov: 408
Aktiv.: 1.83
Kraj: Ljubljana

PrispevekObjavljeno: Pon Jul 14, 2008 10:56 am    Naslov sporočila:   Odgovori s citatom

program_er je napisal/a:

Obstajajo kaki gonilniki za računalnik, da bi sprejel podatke preko USB?


Seveda, uporabi tale adapter, naloži FTDI driverje s spleta in si zmagal.

Lp
Jure
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.: 11.08
Kraj: Maribor (Pohorje)

PrispevekObjavljeno: Pon Jul 14, 2008 12:19 pm    Naslov sporočila:   Odgovori s citatom

Aja, sem mislil kar tako narediti, direkno (ali pa z MAX232), kot pri serijski komunikaciji. Bom probal pa pišem, kako se bo računalnik odzval.
_________________
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
program_er
Član
Član



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

PrispevekObjavljeno: Pon Jul 14, 2008 1:23 pm    Naslov sporočila:   Odgovori s citatom

Heh, sem že naredil. Na RXD mege8 sem priključil Data+ (zelen kabel) na TXD mege8 pa Data- (bel kabel). Računalnik je zaznal nekaj ampak je napisal USB Naprava ni prepoznavna. V Device Managerju je prikazana pod drugo, z vprašajem. samo driverje bi mogo naložit (Update driver), ker ko zdaj stisnem Driver details napiše da driverjev sploh nima, kar je logično. Laughing Wink
_________________
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
program_er
Član
Član



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

PrispevekObjavljeno: Tor Jul 29, 2008 12:22 am    Naslov sporočila:   Odgovori s citatom

Dobil sem 1-wire termometre in sem naletel na težavo.

Matram se s tem programom. Sem nekaj nakracal skupaj:
Koda:

'                              BOJAN POTOČNIK
'*******************************************************************************
'--------------- MERITEV TEMPERATURE Z DS18B20+ IN IZPIS NA LCD ----------------
'*******************************************************************************

'******************************* Mikrokontroler ********************************
$regfile = "m8def.dat"
$crystal = 1000000

'************************************* LCD *************************************
Config Lcd = 16 * 2

Config Lcdpin = Pin , Db7 = Portb.6 , Db6 = Portb.7 , Db5 = Portd.5 , Db4 = Portd.6 , E = Portd.7 , Rs = Portb.0
Cursor Off
Config Portb.0 = Output
Config Portb.1 = Output
Osvetlitev Alias Portb.1

Deflcdchar 0 , 226 , 229 , 226 , 224 , 224 , 224 , 224 , 224       ' replace ? with number (0-7)

Cls

'*******************************************************************************
Dim T1 As Byte , T2 As Byte , T3 As Byte , Temp As Integer , Temp2 As Single , , Temp3 As String * 10

'*******************************************************************************
Config 1wire = Portb.2

'*******************************************************************************

'//////////////////// UVOD:
Osvetlitev = 1
Cls
'/////////////////////////////// GLAVNI PROGRAM ////////////////////////////////
Do
 T1 = 0
 T2 = 0
 T3 = 0
 Temp = 0

1wreset
 1wwrite &HCC
 1wwrite &H44
  Wait 1
 1wwrite &HCC
 1wwrite &HBE
  T1 = 1wread()
  T2 = 1wread()
1wreset

If Err > 0 Then
 Locate 1 , 1
 Lcd "NAPAKA"
End If

Temp = Makeint(t1 , T2)

Gosub Prikaz

Loop

Prikaz:
Locate 1 , 1
Lcd "Temperatura je:"
Locate 2 , 1
Lcd Temp ; Chr(0) ; "C"
Return

End

Ko program nložim v mojo mego8 in zaženem, mi vedno pokaže -1 °C.

Kaj mogoče ve kdo kaj je narobe, kako lahko to popravim?

Pa še to me zanima. To je 1-wire z nastavljivo natančnostjo, Ampak kako nastavljam naančnost. Nastavil bi na najvišjo možno natančnost.

EDIT: Z ločljivostjo sem uredil. Termometer je že orginalno avtomatsko nastavljen na 12-bitno resolucijo. To zahteva 750ms dolgo merjenje in omogoča natančnost do 0.0625°C. Jaz pa bi zaenkrat imel samo do natančnosti 0,1, tako da mi moral to nekako programsko urediti.

EDIT 2: Mogoče pa bi bilo še boljše 11-bitna ločljivost. Čas merjenja je bistveno krajši, le 375ms. Ločljivost pa je kljub temu meni čisto dovolj, 0,125°C. Glede na to, da jaz rabim samo 0,1°C ločljivosti, bi bilo to boljše, bi se hitreje osveževalo.

Prosim za odgovore in rešitve. Hvala!

_________________
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
program_er
Član
Član



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

PrispevekObjavljeno: Tor Jul 29, 2008 7:07 pm    Naslov sporočila:   Odgovori s citatom

A zgleda da ni rešitve? Laughing
_________________
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
Highlag
Član
Član



Pridružen-a: Pet 23 Jan 2004 20:42
Prispevkov: 4034
Aktiv.: 18.11
Kraj: Črnuče

PrispevekObjavljeno: Tor Jul 29, 2008 9:47 pm    Naslov sporočila:   Odgovori s citatom

Pa dejansko imaš Ds1820, ki podpira tako visoko resolucijo?
_________________
If at first you don't succeed, destroy all evidence that you tried.
Nazaj na vrh
Odsoten 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.08
Kraj: Maribor (Pohorje)

PrispevekObjavljeno: Tor Jul 29, 2008 10:12 pm    Naslov sporočila:   Odgovori s citatom

Highlag je napisal/a:
Pa dejansko imaš Ds1820, ki podpira tako visoko resolucijo?


Ja, imam čip DS18B20+, ki ima nastavljivo natančnost.

V priponki nejgov datasheet.



info DS18B20 termometer 1w.pdf
 Opis:
1-wire digitalni termometer DS18B20

Download
 Ime datoteke:  info DS18B20 termometer 1w.pdf
 Velikost datoteke:  183.97 KB
 Downloadano:  17 krat


_________________
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
program_er
Član
Član



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

PrispevekObjavljeno: Tor Jul 29, 2008 10:30 pm    Naslov sporočila:   Odgovori s citatom

Saj vesel bi bil že, če bi se vsaj spreminjal rezultat, ko zagrejem (primem z prsti) ali ohladim čip.

Ker zdaj stoji vedno pri miru. Rolling Eyes Confused

Vem da vas je že veliko to delalo in sigurno ima nekdo rešitev. Hvala!

_________________
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
aly
Član
Član



Pridružen-a: Tor 28 Sep 2004 14:51
Prispevkov: 9407
Aktiv.: 42.23
Kraj: Kranj - struževo

PrispevekObjavljeno: Sre Jul 30, 2008 11:26 am    Naslov sporočila:   Odgovori s citatom

rezultat -1 pomeni da se čip ne odzove = prebere FFFFh.
Bascoma ne poznam.
Točen seznam ukazov kako zadevo spraviti v življenje imaš v datasheetu.
Prebrati moraš cel scratchpad in iz njega izluščiti podatke za temperaturo.

Pri 1-wire je zelo pomemben timing. Če imaš časovne vrednosti narobe nastavljene, ne bo delalo nič.

In še vizualen komentar glede USB in RS232 direktne povezave: d'oh! :bonk:
Uporabi FTDI232 ali vmesnik iz trgovine.

_________________
I'm going to stand outside, so if anyone asks, I'm outstanding Smile
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran MSN Messenger - naslov
program_er
Član
Član



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

PrispevekObjavljeno: Sre Jul 30, 2008 1:01 pm    Naslov sporočila:   Odgovori s citatom

aly je napisal/a:

Pri 1-wire je zelo pomemben timing. Če imaš časovne vrednosti narobe nastavljene, ne bo delalo nič.

Ja kako pa naj v bascomu nastavim časovne vrednosti? Imam samo ukaz Config 1wire = Port.pin

aly je napisal/a:
In še vizualen komentar glede USB in RS232 direktne povezave: d'oh! :bonk:


To je bil hec. Samo iz radovednosti sem malo poizkušal.

_________________
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
iskra
Član
Član



Pridružen-a: Tor 14 Okt 2003 10:13
Prispevkov: 791
Aktiv.: 3.55
Kraj: Lokev ,Boa , KOPER

PrispevekObjavljeno: Sre Jul 30, 2008 1:16 pm    Naslov sporočila:   Odgovori s citatom

Delujoč program:
1.8 MERILNA SONDA DS1820
Za merjenje temperature skrbi senzor DS1820 proizvajalca Dallas Semiconductor.
Deluje po unikatnem 1-wire protokolu, ki rabi samo eno linijo za komunikacijo.
Senzor DS1820 ne potrebuje nobenih zunanjih komponent, lahko se napaja
neposredno iz podatkovne linije (prek pull-up upora 4,7KE. Merilno območje
senzorja je od -55 pa tja do 125°C. Temperatura je prebrana kot 9-bitna digitalna
vrednost. Vsaka komponenta posebej ima sebi lastno serijsko številko. Zaradi te
lastnosti lahko na isti port mikrokontrolerja brez težav priključimo več
temperaturnih senzorjev. V mojem primeru sem uporabil samo enega, tako da ta
lastnost ni bila uporabljena. Bi prišla prav, če bi uporabil več senzorjev.
Vsaka izmed 1-wire komponent ima vpisan unikaten 64-bitni naslov
naslednjega formata:
8-bitna CRC koda 48- bitna serijska številka 8-bitna koda družine vezij



Program za čitanje adrese DS-a
Koda:
'///////////////////////////////////////////////////////////////////////////////
$regfile = "m8def.dat"
$crystal = 4000000
'$crystal = 11000000

    $hwstack = 32                                           ' default use 32 for the hardware stack
$swstack = 10                                               'default use 10 for the SW stack
$framesize = 40                                             'default use 40 for the frame space

Config 1wire = Portc.5
Dim Ar(8) As Byte , A As Byte , I As Byte
   Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portb.5 , Rs = Portb.3
Config Lcd = 16 * 2
'$sim
Cursor Off Noblink
Cls
Do
Reset Portc.6
Wait 1
1wreset                                                     'reset the device
1wwrite &H33                                                'read ROM command
For I = 1 To 8
Ar(i) = 1wread()                                            'place into array
Next
For I = 1 To 8
Lowerline
Lcd I
Lowerline
Locate 2 , 2
Lcd ":"
Lcd Ar(i);
Wait 5
Cls
Next
Loop
End

To moramo prvo napraviti saj drugače ne bomo mogli meriti temperature.
Še primer programa , kako izmerimo temperaturo z dvema DS na isti liniji in z znanimi adresami čipa. (kasneje bom še natančno razložil matematiko in vsak korak programiranja.)
Koda:
   '///////////////////////////////////////////////////////////////////////////////
'DS1820 Thermo - merjenje temperature z dvema senzorjema
' Za Šolo Programiranja pri OZS .
'
'///////////////////////////////////////////////////////////////////////////////
$regfile = "m8def.dat"
$crystal = 4000000
'$crystal = 4000000

'Dim Ar(8) As Byte , A As Byte ,                             'I As Byte
   Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portb.5 , Rs = Portb.3
Config Lcd = 16 * 2
'$sim

Declare Sub Read1820
Declare Sub Temperature
Declare Sub Temp1
Declare Sub Temp2
Dim T2 As Integer , T4 As Integer
Dim Bd(9) As Byte
Dim I As Byte , Tmp As Byte
Dim T As Integer , T1 As Integer , Tn As Byte
Dim Tz As Byte
Dim Ar(8) As Byte
T = 0
Config 1wire = Portc.5
Cursor Off Noblink
Cls
Reset Portc
Locate 1 , 1 : Lcd "DS1820 "
Locate 2 , 1 : Lcd " Temp"
Wait 2
Do
Temp1
Temperature
Locate 1 , 1 : Lcd "N"
Tn = T4
Lcd T                                                       'vpis celega dela
Lcd Chr(46)                                                 'vpis pike
Lcd T1                                                      'vpis decimalnega
Lcd Chr(223)                                                'vpis stopinj
Lcd "C"
If Err = 1 Then                                             'ce ni senzorja
Locate 1 , 3 : Lcd "-- "                                    'je na LCDju "-- "
End If                                                      'izpis praznega prostora
Temp2
Temperature
Locate 2 , 1 : Lcd "Z"
Tz = T4
Lcd T
Lcd Chr(46)
Lcd T1
Lcd Chr(223)
Lcd "C"
If Err = 1 Then                                             'ce ni senzorja
Locate 2 , 3 : Lcd "-- "                                    'je na LCDju "-- "
End If
                                                                   'Prizgi diodo
If T <= 2 Then                                              'Ob vrednosti prizgi LED
Reset Portd.5
Wait 1
Elseif T > 2 Then
Set Portd.5
Wait 1
End If
Loop
End
Rem ///////
                                                                     ' read address 1
Sub Temp1                                                   'branje adrese 1
For I = 0 To 8
Ar(i + 1) = Lookup(i , Dta1)
Next
End Sub
Rem /////////////////////////
                                                            ' read address 2
Sub Temp2                                                   'branje adrese 2
For I = 0 To 7
Ar(i + 1 ) = Lookup(i , Dta2)
Next
End Sub
Dta1:
Data 16 , 80 , 46 , 140 , 0 , 8 , 0 , 50                    'naslov 1 Dallasa
Dta2:
Data 16 , 168 , 26 , 140 , 0 , 8 , 0 , 122                  'naslov 2 Dallasa
'///////////////////////////////////////////////////////////////////////////////
Sub Temperature                                             'merjenje temperature
1wreset
1wwrite &H55
1wwrite Ar(1) , 8                                           '1Wire ukaz
1wwrite &H44
Wait 1
Read1820                                                    'read 9 bytes
End Sub
Sub Read1820                                                'bere senzor 'T za 0.1 C
1wreset                                                     'reset
1wwrite &H55                                                '1Wire ukaz
1wwrite Ar(1) , 8
1wwrite &HBE
Bd(1) = 1wread(9)
1wreset
Tmp = Bd(1) And 1                                           '0.1C natancnost
If Tmp = 1 Then
Decr Bd(1)
End If
T = Makeint(bd(1) , Bd(2))
T4 = T / 2                                                  'T4 lahko uporabimo, ce zelimo temp. kot celo stevilo
T = T * 50 : T = T - 25 : T1 = Bd(8) - Bd(7) : T1 = T1 * 100       'za to matematiko je potrebno pogledati datashet
T1 = T1 / Bd(8) : T = T + T1 : T = T / 10                   'tam je formula in opis vseh podatkov ki jih beremo
T1 = T
T = T / 10                                                  ' bom kasneje še razložil vsako vrstico posebej
T2 = T * 10
T1 = T1 - T2
T1 = Abs(t1)
End Sub                                                     ' to je primer branja temperature iz več DS-ov , s tem , da moramo prvo prebrati njihove naslove
' gornji program.

Nastavi pa pravilno tvoj LCD.

_________________
L.P. iskra
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.: 11.08
Kraj: Maribor (Pohorje)

PrispevekObjavljeno: Sre Jul 30, 2008 2:22 pm    Naslov sporočila:   Odgovori s citatom

Bom poizkusil tvojo kodo.

Moram pa opozoriti, da uporabljam čip DS 18 B 20 ki ima tovarniško nastavljeno 12-bitno resolucijo in čas merjenja 750ms!

Pomembni podatki o tem v zgornjem datasheetu na strani 8 in na strani 3 pod poglavjem OPERATION—MEASURING TEMPERATURE.

_________________
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
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 ... 8, 9, 10 ... 36, 37, 38  Naslednja
Stran 9 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: 69 dni


Powered by phpBB © 2001, 2005 phpBB Group