-
61. Data: 2013-07-29 13:02:30
Temat: Re: atmega i lcd + pamiec
Od: Sylwester Łazar <i...@a...pl>
> Trzeba by ograniczyć paletę kolorów do 16 bitów.
Też by można. Zdaje się, że wewnętrznie to jest i tak 6-bitów na kolor,
czyli 18 bpp.
Jednak miło by było trzymać standard 24bpp na wypadek polepszenia się w 2020
roku jakości wyświetlaczy LCD.
Ja myślałem, że typ procesora np. 32-bitowy oznacza szerokość szyny danych.
Zdaję sobie sprawę, że pewnie niektórzy producenci mają na myśli coś, co
oznaczają jako wewnętrzna szyna danych.
Po co mi wewnętrzna szyna danych 32-bitowa, jak z trudnością da się wysłać
16-bitową daną na zewnątrz i to jeszcze nie z fmax?
Muszę przyznać, że standard 8-bitowy i 16-bitowy był znacznie prostrzy w
realizacji szybkich rozwiązań.
W szczególności przy tym projekcie, zastanawiałem się,
czy nie dać 3 mikrokontrolerów 8-bitowych pracujących @10MHz REAL PORT
SPEED.
np. PIC18F1320
lub dwóch 16-bitowych @40MHz np.dsPIC33.
Mogłyby być też nawet 2 różnych firm, we wiadomym celu.
Jak zająłem się tymi pseudo 32-bitowymi, to często brakuje mi takich
rozwiązań,
które były realizowane sprzętowo w 8-bitowych.
Ktoś tu pisał, że nie potrzeba, bo RISC to może jakiś mikrokod zrobić i tak
b ędzie szybko.
No dobrze, ale te 8,16-bitowe to też RISC i nie musza mieć mikrokodu, a
pracują z tą samą prędkością.
--
-- .
pozdrawiam
Sylwester Łazar
http://www.alpro.pl Systemy elektroniczne.
http://www.rimu.pl -oprogramowanie do edycji schematów
i projektowania PCB.
-
62. Data: 2013-08-01 14:55:26
Temat: Re: atmega i lcd + pamiec
Od: wchpikus <w...@w...wp.pl>
Ok, udalo sie zalatwic drugi i dziala.
Pytanie teraz czy da sie zrobic tak, ze wrzucam obrazek do flash lub ram
atmegi a potem skopiowac do zewmetrznego eepromu?
Ii potem zmiana w sofcie ze zrodlo znajduje sie na eepromie.
Czy moze zaladowac bezposrednio do eeprom (nie mam programatora
niestety) i odczytywac?
-
63. Data: 2013-08-01 15:10:10
Temat: Re: atmega i lcd + pamiec
Od: wchpikus <w...@w...wp.pl>
W dniu 2013-08-01 15:12, Sylwester Łazar pisze:
>> Ok, udalo sie zalatwic drugi i dziala.
> Fajnie.
> Mam pytanie: czy poprzedni wyświetlacz był faktycznie zepsuty,
> czy okazało się, że coś innego jest przyczyną niepowodzenia?
Uszkodzony, nic nie zmienialem w konfiguracji, podlaczony nowy ruszyl z
reki:)
>
>> Pytanie teraz czy da sie zrobic tak, ze wrzucam obrazek do flash lub ram
>> atmegi a potem skopiowac do zewmetrznego eepromu?
> Już ktoś pisał: oczywiście, że tak.
No to musze przekopac historie internetu:)
>
>> Ii potem zmiana w sofcie ze zrodlo znajduje sie na eepromie.
>> Czy moze zaladowac bezposrednio do eeprom (nie mam programatora
>> niestety) i odczytywac?
> Można bezpośrednio za pomocą kabla LPT, ale trzeba podłączyć przewody i
> znaleźć program.
> S.
>
Pamiec po ic2, dokladnie taka:
http://allegro.pl/show_item.php?item=3388853021
-
64. Data: 2013-08-01 15:11:24
Temat: Re: atmega i lcd + pamiec
Od: wchpikus <w...@w...wp.pl>
W dniu 2013-08-01 15:10, wchpikus pisze:
> W dniu 2013-08-01 15:12, Sylwester Łazar pisze:
>>> Ok, udalo sie zalatwic drugi i dziala.
>> Fajnie.
>> Mam pytanie: czy poprzedni wyświetlacz był faktycznie zepsuty,
>> czy okazało się, że coś innego jest przyczyną niepowodzenia?
>
> Uszkodzony, nic nie zmienialem w konfiguracji, podlaczony nowy ruszyl z
> reki:)
Moge przelutowac sterownik, tylko nie moglem znalesc na siecie samego
chipa..
T6963CFG.
Przelutowanie to pikus:)
-
65. Data: 2013-08-01 15:12:35
Temat: Re: atmega i lcd + pamiec
Od: Sylwester Łazar <i...@a...pl>
> Ok, udalo sie zalatwic drugi i dziala.
Fajnie.
Mam pytanie: czy poprzedni wyświetlacz był faktycznie zepsuty,
czy okazało się, że coś innego jest przyczyną niepowodzenia?
> Pytanie teraz czy da sie zrobic tak, ze wrzucam obrazek do flash lub ram
> atmegi a potem skopiowac do zewmetrznego eepromu?
Już ktoś pisał: oczywiście, że tak.
> Ii potem zmiana w sofcie ze zrodlo znajduje sie na eepromie.
> Czy moze zaladowac bezposrednio do eeprom (nie mam programatora
> niestety) i odczytywac?
Można bezpośrednio za pomocą kabla LPT, ale trzeba podłączyć przewody i
znaleźć program.
S.
-
66. Data: 2013-08-08 12:09:53
Temat: Re: atmega i lcd + pamiec
Od: wchpikus <w...@w...wp.pl>
W dniu 2013-08-01 15:11, wchpikus pisze:
> W dniu 2013-08-01 15:10, wchpikus pisze:
>> W dniu 2013-08-01 15:12, Sylwester Łazar pisze:
>>>> Ok, udalo sie zalatwic drugi i dziala.
>>> Fajnie.
>>> Mam pytanie: czy poprzedni wyświetlacz był faktycznie zepsuty,
>>> czy okazało się, że coś innego jest przyczyną niepowodzenia?
>>
>> Uszkodzony, nic nie zmienialem w konfiguracji, podlaczony nowy ruszyl z
>> reki:)
>
> Moge przelutowac sterownik, tylko nie moglem znalesc na siecie samego
> chipa..
> T6963CFG.
> Przelutowanie to pikus:)
>
>
>
>
Ma ktos lub zna jakas prosta obsluge BMP085 w Bascomie?
20k samej obslugi tego czujika...to jakas paranoja:(
-
67. Data: 2013-08-08 12:18:47
Temat: Re: atmega i lcd + pamiec
Od: "Grzegorz Niemirowski" <g...@p...onet.pl>
wchpikus <w...@w...wp.pl> napisał(a):
> Ma ktos lub zna jakas prosta obsluge BMP085 w Bascomie?
> 20k samej obslugi tego czujika...to jakas paranoja:(
Gdzie jest paranoja? Wszystko masz jasno opisane w datasheecie,
zaimplementuj to, co tam piszą. Komunikacja jest po I2C, Bascom na pewno to
obsługuje. Potem zostaje Ci kalibracja, obliczenie temperatury i ciśnienia.
Najpierw opanuj odczyt i zapis rejestrów czujnika po I2C.
--
Grzegorz Niemirowski
http://www.grzegorz.net/
OE PowerTool i Outlook Express: http://www.grzegorz.net/oe/
Uptime: 1 day, 3 hours, 1 minutes and 6 seconds
-
68. Data: 2013-08-08 12:36:29
Temat: Re: atmega i lcd + pamiec
Od: wchpikus <w...@w...wp.pl>
W dniu 2013-08-08 12:18, Grzegorz Niemirowski pisze:
> wchpikus <w...@w...wp.pl> napisał(a):
>> Ma ktos lub zna jakas prosta obsluge BMP085 w Bascomie?
>> 20k samej obslugi tego czujika...to jakas paranoja:(
>
> Gdzie jest paranoja? Wszystko masz jasno opisane w datasheecie,
> zaimplementuj to, co tam piszą. Komunikacja jest po I2C, Bascom na pewno
> to obsługuje. Potem zostaje Ci kalibracja, obliczenie temperatury i
> ciśnienia. Najpierw opanuj odczyt i zapis rejestrów czujnika po I2C.
>
Mam kilka przykladow, ale nie ogarniam za bardzo...
mozesz podac mi jakis prosty przyklad?
mam taki, ale troche za duzo wazy jak dla mnie, tem moge usunac,
wysokosc tez...
Niestety po niemiecku bazgrane:)
'---------------------------------------------------
-----------------------------
'ďđîăđŕěěŕ äë˙ îďđîńŕ äŕň÷čęŕ BMP085
'ń äŕň÷čęŕ ďđčíčěŕĺňń˙ çíŕ÷ĺíčĺ ňĺěďĺđŕňóđű, ŕáńîëţňíîăî äŕâëĺíč˙ č
âűńîňű íŕä óđîâíĺě ěîđ˙
'äŕííűĺ ďîëó÷ĺííűĺ ń ńĺíńîđŕ îňďđŕâë˙ţňń˙ â ňĺđěčíŕë
'AVRproject.ru 2012
'---------------------------------------------------
-----------------------------
$regfile = "m32def.dat"
$crystal = 1000000
Config Graphlcd = 240 * 64 , Dataport = Portc , Controlport = Portd , Ce
= 2 , Cd = 3 , Wr = 0 , Rd = 1 , Reset = 4 , Fs = 5 , Mode = 6
Cls
Cursor Off
'ęîíôčăóđŕöč˙ I2C
Config Sda = Portb.6
Config Scl = Portb.7
I2cinit
Config Porta.2 = Output 'podswietlenie
Podsw Alias Porta.2
Podsw = 0
Dim Ac1 As Integer
Dim Ac1a As Long
Dim Ac2 As Integer
Dim Ac3 As Integer
Dim Ac4 As Word
Dim Ac5 As Word
Dim Ac5a As Single
Dim Ac6 As Word
Dim B1 As Integer
Dim B2 As Integer
Dim B3 As Long
Dim B3a As Long
Dim B4 As Long
Dim B5 As Long
Dim B6 As Integer
Dim B6a As Long
Dim B7 As Long
Dim Mb As Integer
Dim Mc As Integer
Dim Mc2 As Long
Dim Md As Integer
Dim Adres As Byte
Dim Wert As Byte
Dim Ut As Long
Dim X1 As Long
Dim X1t As Single
Dim X2 As Long
Dim X3 As Long
Dim T As Single
Dim T2 As Long
Dim Temperatur As String * 6
Dim Luftdruck As String * 8
Dim Druck As Single
Dim P As Long
Dim P2 As Long
Dim 2potenz15 As Long
Dim 2potenz11 As Integer
Dim 2potenz13 As Integer
Dim 2potenz8 As Integer
Dim 2potenz4 As Integer
Dim 2potenz2 As Integer
Dim 2potenz16 As Long
Dim 2potenz12 As Integer
Dim Potenz5255 As Single
Dim Altitude As Single
Dim Altitudes As String * 8
Dim Msb As Long
Dim Lsb As Long
Dim Up As Long
Dim Druckvar As Byte
Declare Sub Berechne_temp
Declare Sub Berechne_druck
Declare Sub Schreibe_bmp085(byval Adres As Byte , Byval Wert As Byte)
Declare Sub Lese_bmp085(byval Adres As Byte , Wert As Byte)
Declare Sub Lese_roh_daten
Declare Sub Messen
Declare Sub Lese_kalib_data
Const Addr_schreiben = &B11101110 'ŕäđĺń
ěčęđîńőĺěű + çŕďčńü
Const Addr_lesen = &B11101111 'ŕäđĺń
ěčęđîńőĺěű + ÷ňĺíčĺ
Call Lese_kalib_data
Do
Call Messen
T = T / 10
Temperatur = Fusing(t , "###.##")
Potenz5255 = 1 / 5.255
Altitude = P / 101325
Altitude = Altitude ^ Potenz5255
Altitude = 1 - Altitude
Altitude = Altitude * 44330
Druck = P
Druck = Druck / 100
Luftdruck = Fusing(druck , "####.##")
Altitudes = Fusing(altitude , "#####.##")
Locate 1 , 1
Lcd "Temp " ; Temperatur ; " C,"
Locate 2 , 1
Lcd " Pressure " ; Luftdruck ; " Pa,"
Locate 3 , 1
Lcd ; " Altitude " ; Altitudes ; " m."
Wait 1
Loop
Sub Messen
Locate 2 , 1
Lcd "Messen"
'Čçěĺđĺíčĺ ňĺěďĺđŕňóđű
Call Schreibe_bmp085(&Hf4 , &H2E)
Adres = &HF6
Call Lese_roh_daten
'Print "msb " ; Msb
'Print "lsb " ; Lsb
Shift Msb , Left , 8
'Print "msb shift " ; Msb
Ut = Msb + Lsb
Call Berechne_temp
'Čçěĺđĺíčĺ äŕâëĺíč˙
Call Schreibe_bmp085(&Hf4 , &H74 )
Adres = &HF6
Call Lese_roh_daten
Shift Msb , Left , 16
Shift Lsb , Left , 8
Up = Msb + Lsb
Shift Up , Right , 6
'Print "msb " ; Msb ; "lsb " ; Lsb ; "up " ; Up
Call Berechne_druck
End Sub
Sub Berechne_temp
'X1
Ut = Ut - Ac6
2potenz15 = 2 ^ 15
Ac5a = Ac5 / 2potenz15
X1t = Ut * Ac5a
'Print "X1 " ; X1t
'X2
2potenz11 = 2 ^ 11
Mc2 = Mc * 2potenz11
X3 = X1t + Md
X2 = Mc2 / X3
'Print "X2 " ; X2
'B5
B5 = X1t + X2
'Print "B5 " ; B5
'T
2potenz4 = 2 ^ 4
T2 = B5 + 8
T = T2 / 2potenz4
End Sub
Sub Berechne_druck
'B6
B6 = B5 - 4000
'X1
2potenz12 = 2 ^ 12
B6a = B6 * B6
B6a = B6a / 2potenz12
X1 = B2 * B6a
X1 = X1 / 2potenz11
'X2
X2 = Ac2 * B6
X2 = X2 / 2potenz11
'X3
X3 = X1 + X2
'B3
Ac1a = Ac1 * 4
Ac1a = Ac1a + X3
Shift Ac1a , Left , 2
Ac1a = Ac1a + 2
B3 = Ac1a / 4
'X1 die zweite
2potenz13 = 2 ^ 13
B6a = B6 / 2potenz13
X1 = Ac3 * B6a
'X2 die zweite
B6a = B6 * B6
B6a = B6a / 2potenz12
X2 = B1 * B6a
2potenz16 = 2 ^ 16
X2 = X2 / 2potenz16
'X3 die zweite
X3 = X1 + X2
X3 = X3 + 2
2potenz2 = 2 ^ 2
X3 = X3 / 2potenz2
'B4
B4 = X3 + 32768
B4 = B4 * Ac4
B4 = B4 / 2potenz15
If B4 <= 0 Then B4 = B4 * -1
'Print B4
'B7
B7 = Up - B3
B3a = 50000
Shift B3a , Right , 2 '
B7 = B7 * B3a
If B7 <= 0 Then B7 = B7 * -1
'Print B7
If B7 < &H80000000 Then
P = B7 * 2
'Print "p1 " ; P
P = P / B4
'Print "p1 " ; P
Else
P = B7 / B4
'Print "p2 " ; P
P = P * 2
'Print "p2 " ; P
End If
'Print P
'nochmal X1
2potenz8 = 2 ^ 8
P2 = P / 2potenz8
X1 = P2 * P2
'Print X1
X1 = X1 * 3038
X1 = X1 / 2potenz16
'Print X1
' nochmal X2
X2 = -7357 * P
X2 = X2 / 2potenz16
'Print X2
P2 = P
P = X2 + 3791
P = P + X1
P = P / 2potenz4
P = P + P2
End Sub
Sub Lese_kalib_data
Locate 1 , 1
Lcd "Lese_kalib_data "
Adres = &HAA
'Ac1 lesen
Call Lese_bmp085(adres , Wert)
Msb = Wert
Adres = Adres + 1
Call Lese_bmp085(adres , Wert)
Lsb = Wert
Shift Msb , Left , 8
Ac1 = Msb + Lsb
Adres = Adres + 1
'Ac2 lesen
Call Lese_bmp085(adres , Wert)
Msb = Wert
Adres = Adres + 1
Call Lese_bmp085(adres , Wert)
Lsb = Wert
Shift Msb , Left , 8
Ac2 = Msb + Lsb
Adres = Adres + 1
'Ac3 lesen
Call Lese_bmp085(adres , Wert)
Msb = Wert
Adres = Adres + 1
Call Lese_bmp085(adres , Wert)
Lsb = Wert
Shift Msb , Left , 8
Ac3 = Msb + Lsb
Adres = Adres + 1
'Ac4 lesen
Call Lese_bmp085(adres , Wert)
Msb = Wert
Adres = Adres + 1
Call Lese_bmp085(adres , Wert)
Lsb = Wert
Shift Msb , Left , 8
Ac4 = Msb + Lsb
Adres = Adres + 1
'Ac5 lesen
Call Lese_bmp085(adres , Wert)
Msb = Wert
Adres = Adres + 1
Call Lese_bmp085(adres , Wert)
Lsb = Wert
Shift Msb , Left , 8
Ac5 = Msb + Lsb
Adres = Adres + 1
'Ac6 lesen
Call Lese_bmp085(adres , Wert)
Msb = Wert
Adres = Adres + 1
Call Lese_bmp085(adres , Wert)
Lsb = Wert
Shift Msb , Left , 8
Ac6 = Msb + Lsb
Adres = Adres + 1
'B1 lesen
Call Lese_bmp085(adres , Wert)
Msb = Wert
Adres = Adres + 1
Call Lese_bmp085(adres , Wert)
Lsb = Wert
Shift Msb , Left , 8
B1 = Msb + Lsb
Adres = Adres + 1
'B2 lesen
Call Lese_bmp085(adres , Wert)
Msb = Wert
Adres = Adres + 1
Call Lese_bmp085(adres , Wert)
Lsb = Wert
Shift Msb , Left , 8
B2 = Msb + Lsb
Adres = Adres + 1
'MB lesen
Call Lese_bmp085(adres , Wert)
Msb = Wert
Adres = Adres + 1
Call Lese_bmp085(adres , Wert)
Lsb = Wert
Shift Msb , Left , 8
Mb = Msb + Lsb
Adres = Adres + 1
'MB lesen
Call Lese_bmp085(adres , Wert)
Msb = Wert
Adres = Adres + 1
Call Lese_bmp085(adres , Wert)
Lsb = Wert
Shift Msb , Left , 8
Mc = Msb + Lsb
Adres = Adres + 1
'Md lesen
Call Lese_bmp085(adres , Wert)
Msb = Wert
Adres = Adres + 1
Call Lese_bmp085(adres , Wert)
Lsb = Wert
Shift Msb , Left , 8
Md = Msb + Lsb
Adres = Adres + 1
End Sub
Sub Lese_roh_daten
Call Lese_bmp085(adres , Wert)
Msb = Wert
Adres = Adres + 1
Call Lese_bmp085(adres , Wert)
Lsb = Wert
End Sub
Sub Schreibe_bmp085(byval Adres As Byte , Byval Wert As Byte)
I2cstart
I2cwbyte Addr_schreiben
I2cwbyte Adres
I2cwbyte Wert
I2cstop
Waitms 10
End Sub
Sub Lese_bmp085(byval Adres As Byte , Wert As Byte)
I2cstart
I2cwbyte Addr_schreiben
I2cwbyte Adres
I2cstart
I2cwbyte Addr_lesen
I2crbyte Wert , Nack
I2cstop
Waitms 10
End Sub
-
69. Data: 2013-08-08 13:06:54
Temat: Re: atmega i lcd + pamiec
Od: "Grzegorz Niemirowski" <g...@p...onet.pl>
wchpikus <w...@w...wp.pl> napisał(a):
> Mam kilka przykladow, ale nie ogarniam za bardzo...
> mozesz podac mi jakis prosty przyklad?
> mam taki, ale troche za duzo wazy jak dla mnie, tem moge usunac, wysokosc
> tez...
> Niestety po niemiecku bazgrane:)
Nie rozumiem czego oczekujesz, przecież znalazłeś gotowce. Chcesz, żeby ktoś
z grupy uproscił Ci tego gotowca? Tak jak wspomniałem, podstawą jest
komunikacja I2C. W tym kodzie co wkleiłeś masz procedury do odczytywania i
zapisywania rejestrów czujnika:
> Sub Schreibe_bmp085(byval Adres As Byte , Byval Wert As Byte)
> Sub Lese_bmp085(byval Adres As Byte , Wert As Byte)
W datasheecie masz dokładny opis tych rejestrów. Masz napisane co trzeba do
tych rejestrów pisać i jak przetwarzać odczytane dane. Skoreluj sobie
informacje z datasheeta z tym kodem, który masz. Przecież nazwy zmiennych są
takie same, a kod wcale nie jest długi. Na stronie 13 masz ramkę "calculate
true pressure", obliczenia, które tam są, znajdziesz bez trudu w tym kodzie
co wkleiłeś. Reszta kodu to deklaracje zmiennych, komunikacja po I2C i
obsługa wyświetlacza.
--
Grzegorz Niemirowski
http://www.grzegorz.net/
OE PowerTool i Outlook Express: http://www.grzegorz.net/oe/
Uptime: 1 day, 3 hours, 30 minutes and 20 seconds
-
70. Data: 2013-08-09 08:36:57
Temat: Re: atmega i lcd + pamiec
Od: wchpikus <w...@w...wp.pl>
Ok, poradzilem sobie.
Pytanie, czy ktos mial tak, ze przeklamywal o 18 jednostek cisnienia wg
tego co podaja na stacji pogody?
Moze cos zle przeliczam..