|
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
strobos Član
Pridružen-a: Sre 24 Sep 2003 12:19 Prispevkov: 726 Aktiv.: 3.26 Kraj: Brežice
|
Objavljeno: Pon Jan 03, 2011 10:27 pm Naslov sporočila: |
|
|
Tam se nahajata hardwerska pina za I2C (Portb.7 in Portb.5). Ampak ti imaš tam definiran LCD. Če ti s to definicijo dela, potem ti verjetno I2C dela softwersko.
Lp
|
|
Nazaj na vrh |
|
|
protoncek Član
Pridružen-a: Sre 31 Jan 2007 9:41 Prispevkov: 9573 Aktiv.: 45.67 Kraj: Mengeš
|
Objavljeno: Pon Jan 03, 2011 10:34 pm Naslov sporočila: |
|
|
Ja, tam imam LCD, to je res. Samo LCD bi lahko prestavil drugam, pa moram v bascomu še vedno imeti tisti dve vrstici za definiranje kje sta SDA in SCL. Mogoče če bi pisal v asemblerju, se ta dva pina smatrata za i2c porte.
|
|
Nazaj na vrh |
|
|
strobos Član
Pridružen-a: Sre 24 Sep 2003 12:19 Prispevkov: 726 Aktiv.: 3.26 Kraj: Brežice
|
Objavljeno: Pon Jan 03, 2011 10:37 pm Naslov sporočila: |
|
|
Seveda vrstici za definiranje teh dveh signalov morata biti. Važno je le, ali boš imel hardwerski I2C ali softwerski. Poglej v simulatorju, če ti softwerski I2C uporablja kak timer.
Lp
|
|
Nazaj na vrh |
|
|
protoncek Član
Pridružen-a: Sre 31 Jan 2007 9:41 Prispevkov: 9573 Aktiv.: 45.67 Kraj: Mengeš
|
Objavljeno: Pon Jan 03, 2011 10:55 pm Naslov sporočila: |
|
|
aha, torej lahko sklepam da v primeru softwarskega I2C procesor bolj trdo dela, kar pomeni da bi mu v primeru časovne stiske lahko škripalo drugje v izvedbi programa...
Če uporablja timer----uh ne znam pogledati.. noob pač...
|
|
Nazaj na vrh |
|
|
strobos Član
Pridružen-a: Sre 24 Sep 2003 12:19 Prispevkov: 726 Aktiv.: 3.26 Kraj: Brežice
|
Objavljeno: Pon Jan 03, 2011 11:01 pm Naslov sporočila: |
|
|
Pogledaš če se spreminjajo vrednosti registrov (TCCR....ali nekaj takega - timer control registri).
Lp
|
|
Nazaj na vrh |
|
|
protoncek Član
Pridružen-a: Sre 31 Jan 2007 9:41 Prispevkov: 9573 Aktiv.: 45.67 Kraj: Mengeš
|
Objavljeno: Pon Jan 03, 2011 11:06 pm Naslov sporočila: |
|
|
aha...ne, spreminjata se samo SPL in SREG. TCCR ostajajo nule.
|
|
Nazaj na vrh |
|
|
TECHNIC Član
Pridružen-a: Tor 31 Okt 2006 11:18 Prispevkov: 582 Aktiv.: 2.74 Kraj: Senovo
|
Objavljeno: Sob Jan 08, 2011 7:35 pm Naslov sporočila: |
|
|
Končno uspel preizkusiti Vilkovo kodo za soft-start motorja. Po parih popravkih (napaka bascoma?) deluje odlično, res odlično.
Če se v programu pojavi Pulseout, port, pin, 0 (torej zakasnitev 0), se celotna for zanka ponovi s stanjem pina v eni vrednosti. Torej je prvič delovalo nekako tako - vklop motorja za 5 ms, 5ms pwm 0-100%, 5ms izklop motorja.
Hvala še enkrat Vilko!
|
|
Nazaj na vrh |
|
|
vilko Član
Pridružen-a: Pet 13 Feb 2004 10:26 Prispevkov: 3351 Aktiv.: 15.04 Kraj: Dragomer
|
Objavljeno: Sob Jan 08, 2011 9:58 pm Naslov sporočila: |
|
|
Rad slišim, da naredim kaj dobrega. Hvala.
|
|
Nazaj na vrh |
|
|
rok Član
Pridružen-a: Pet 13 Mar 2009 16:31 Prispevkov: 365 Aktiv.: 1.99 Kraj: Dravograd
|
Objavljeno: Sob Jul 09, 2011 12:30 am Naslov sporočila: |
|
|
Pozdrav!
Kak mesec nazaj sem začel s programiranjem v Bascom-u (predvsem lučke on-off),
ter vse mogoče druge enostavne zadeve. Ker je vedno bolj vroče in pri hiši ni nekega prenosnega termometra sem si zadal nalogo izdelati svojega. Uporabil sem 3 7-seg displejčke, tinny2313 ter DS1820.
Koda za multipleks mi lepo deluje, tudi del kode za branje temperature iz termometra. Zataknilo se mi je pri pretvorbi (oz. že pri branju iz termometra) saj ne znam/nevem kako prebrati temeperaturo,
ter jo razstaviti na posamezne števke (primer 23.4 stopinj-> števke 2,3,4). Kako bi lahko to izvedel?
Sedanja rutina mi ne odgovarja (sem še zelo zelen začetnik). V priponki je shema dosedanjega sistema. Prilagam tudi do sedaj spisano kodo.
Sedanja koda mi na displejčkih prikaže samo 00.0 Kje ga lomim?
Lep pozdrav,
Rok
PS: Sem pogledal primere po internetu in help-u pa si je ne znam razložiti.
Displejčki so CA ne CC ko je podano v shemi. Se prav lepo prižigajo
Koda: |
$regfile "attiny2313.dat"
Config Portd = Output
Config Portb = Output
Dim A As Byte
Dim B As Byte
Dim C As Byte
Dim D As Byte
Dim E As Byte
Dim F As Byte
Dim T1 As Byte
Dim T2 As Byte
Dim T3 As Byte
Dim T As Integer
T = 0
Config 1wire = Portb.0
A = 0
Do
For B = 0 To 9
Pinb.1 = 0
Portd = Lookup(a , Prikaz)
Waitms 20
Pinb.1 = 1
Pinb.2 = 0
Portd = Lookup(a , Prikaz)
Waitms 20
Pinb.2 = 1
Pinb.3 = 0
Portd = Lookup(a , Prikaz)
Waitms 20
Pinb.3 = 1
A = A + 1
If A > 9 Then
A = 0
End If
Next
Pinb.1 = 1
Portd = 0
Waitms 500
Portd = 255
Pinb.1 = 0
Do
1wreset
1wwrite &HCC
1wwrite &H44
Waitms 750
1wreset
1wwrite &HCC
1wwrite &HBE
T = 1wread(2)
1wreset
T = T / 2
T1 = T / 10
For E = 0 To 5
For D = 0 To 170
Pinb.1 = 0
Portd = Lookup(t1 , Prikaz)
Waitus 850
Pinb.1 = 1
Pinb.2 = 0
Portd = Lookup(c , Prikaz)
Waitus 850
Pinb.2 = 1
Pinb.3 = 0
Portd = Lookup( , Prikaz)
Waitus 850
Pinb.3 = 1
Portd = 255
Next
Next
Loop |
Opis: |
|
Download |
Ime datoteke: |
Termometer.pdf |
Velikost datoteke: |
21.82 KB |
Downloadano: |
6 krat |
_________________ I live in a world where vacuum tube is king!! |
|
Nazaj na vrh |
|
|
Silvo Moderator
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14555 Aktiv.: 65.33 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Sob Jul 09, 2011 1:14 am Naslov sporočila: |
|
|
Za bascom ti sicer ne znam pomagat. Lahko ti dam edino nasvet glede 1Wire protokola.
Sam protokol zahteva v določenih trenutkih točne timinge (pri branju 1 oz 0, resetu...) V teh trenutkih se NE SMEJO izvajati nobene prekinitve sicer bo prišlo do napak. Celotno branje, konvezrija pa traje ranga nekaj deset ms. V koliko ti tvoje programsko orodje dopušča prekintive ob pravih trenutkih, da boš lahko vršil multipleksiranje potem ok. (nekoč mi je nekdo rekel, da to v bascomu ne gre) Sicer ti bo ob branju senzorja prihajalo do neprijetnega utripanja displeja.
_________________ lp
Silvo |
|
Nazaj na vrh |
|
|
rok Član
Pridružen-a: Pet 13 Mar 2009 16:31 Prispevkov: 365 Aktiv.: 1.99 Kraj: Dravograd
|
Objavljeno: Sob Jul 09, 2011 1:39 am Naslov sporočila: |
|
|
Pozdrav!
Silvo, najlepsa hvala za to informacijo. Jaz imam to reseno tako, da mi vse obstoji.
Po vsakem multipleksu displejcke ugasnem, nato pa vsakih 850 ciklov ponovim branje temperature. Na minipin plosci je zadeva delovala super, a vseeno nisem znal izracunati in prikazati deserinko stopinje. Ravnam se pa po prirocniku Bascom Avr za vse.
Lep pozdrac,
Rok
_________________ I live in a world where vacuum tube is king!! |
|
Nazaj na vrh |
|
|
vilko Član
Pridružen-a: Pet 13 Feb 2004 10:26 Prispevkov: 3351 Aktiv.: 15.04 Kraj: Dragomer
|
Objavljeno: Sob Jul 09, 2011 7:01 am Naslov sporočila: |
|
|
rok je napisal/a: |
Pozdrav!
Kak mesec nazaj sem začel s programiranjem v Bascom-u
|
Že kar nekaj časa programiram v Bascomu. In če dovoliš, ti toplo priporočam, da v vsakem programu 'žrtvuješ' en pin za pisanje raznih informacij na PC-Brayev terminal emulator. Programer enostavno mora imeti orodje, da vidi, kaj se dogaja v mikroprocesorju, ki ga programira. In ekran PC-a je dobro orodje v ta namen.
Če te zanima, ti bom po elektronski pošti poslal primer in navodila, kako to narediti.
Izdelati si moraš TTL-RS232 adapter, na ttl vhod priklopiš pin, na RS232 pa PC.
Brez tega orodja dandanes ne programiram več...
Pozdrav
|
|
Nazaj na vrh |
|
|
protoncek Član
Pridružen-a: Sre 31 Jan 2007 9:41 Prispevkov: 9573 Aktiv.: 45.67 Kraj: Mengeš
|
Objavljeno: Sob Jul 09, 2011 8:56 am Naslov sporočila: |
|
|
Jaz bi poskusil tsko, da bi prebrano temperaturo pretvoril v string (str) potem pa lahko bereš posamezne segmente tega stringa - prvi in drugi bosta temperatura, tretji decimalna pika, četrti pa decimalka temperature. Imaš pa na voljo tudi npr. FRAC, ki ti vrne decimalno vrednost neke spremenljivke, medteko ti ukaz int vrne samo celi del.
|
|
Nazaj na vrh |
|
|
rok Član
Pridružen-a: Pet 13 Mar 2009 16:31 Prispevkov: 365 Aktiv.: 1.99 Kraj: Dravograd
|
Objavljeno: Sob Jul 09, 2011 1:14 pm Naslov sporočila: |
|
|
Pozdrav!
Poskušal sem pretvoriti integer v string a mi ni uspelo. Najprej izmerim T (temperatura), nato to pretvorim v string T1. Iz tega nato kličem posamezne pozicije in jih vpisujem v spremenljivke D1-D3.
Te nato uporabim za prikaz vrednosti na posameznem displayu. Ko zadevo poženem, se mi vedno izpiše le 00.0
Kje bi lahko bil problem?
Koda: |
$regfile "attiny2313.dat"
Config Portd = Output
Config Portb = Output
Dim T1 As String * 4
Dim T2 As Byte
Dim T3 As Byte
Dim T As Integer
Dim A1 As Byte
Dim A2 As Byte
Dim A3 As Byte
Dim D1 As Byte
Dim D2 As Byte
Dim D3 As Byte
A1 = 1
A2 = 2
A3 = 3
T = 23.4
Config 1wire = Portb.0
A = 0
Do
T1 = "T"
T1 = Str(t)
1wreset
1wwrite &HCC
1wwrite &H44
Wait 1
1wreset
1wwrite &HCC
1wwrite &HBE
T = 1wread(2)
1wreset
D1 = Instr(t1 , A1)
D2 = Instr(t1 , A2)
D3 = Instr(t1 , A3)
For E = 0 To 5
For D = 0 To 170
Pinb.1 = 0
Portd = Lookup(d1 , Prikaz)
Waitus 850
Pinb.1 = 1
Pinb.2 = 0
Portd = Lookup(d2 , Prikaz)
Waitus 850
Pinb.2 = 1
Pinb.3 = 0
Portd = Lookup(d3 , Prikaz)
Waitus 850
Pinb.3 = 1
Portd = 255
Next
Next
Loop
|
Prav tako nisem prepričan če pravilno ustvarjam string iz T.
Ali lahko prosim nekoga, da mi namigne del kode za konverzijo integerja v string, ter kako se pravilno berejo posamezne pozicije stringa?
Hvala za odgovore!
Vilko, hvala za ta koristen nasvet in hkrati bi vas prosil za načrte za rs232 vmesnik. (vam pošljem ZS).
Lep pozdrav,
Rok
_________________ I live in a world where vacuum tube is king!! |
|
Nazaj na vrh |
|
|
Silvo Moderator
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14555 Aktiv.: 65.33 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Sob Jul 09, 2011 1:45 pm Naslov sporočila: |
|
|
Sam vmesnik ni kaka umetnost. Poglej tega proteusovega. Pri meni je v rabi od nastanka tistega članka. (l. 2005) Če nimaš na razpolago serijskega porta potem je najbolje narediti tak USB vmesik z FT232 ali MPC2200
_________________ lp
Silvo |
|
Nazaj na vrh |
|
|
|
|
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: 70 dni
Powered by phpBB © 2001, 2005 phpBB Group
|