To w Bascomie w opcjach "programmer" spróbuj wpisać "delay" 10-100.
Do you prefer the English version of the page elektroda?
No, thank you Send me over there
Set Re_de
Waitms 1
Print "{008}1r"
Waitms 1
Reset Re_de
Call Odczyt_zn
If Czekaj > 100 Then
Lcd "t=?"
Wait 1
Else
Temp_odcz = Val(zm_lan)
Lcd ":" ; Temp_odcz
Wait 2
End If
Sub Odczyt_zn
Czekaj = 0
Zm_lan = ""
Do
Incr Czekaj
Zn = Inkey()
If Zn >= "0" And Zn <= "9" Then
Zm_lan = Zm_lan + Zn
End If
Waitms 1
Loop Until Zn = "w" Or Czekaj > 100
End Sub
Quote:W koncu udalo sie uruchomic RS-a przelutowalem na pcb kilka wyprowadzen ale dzial tylko w jedna strone ...
Quote:Spiałem same procki razem tzn na krzyz RxD ->Txd TxD ->RxD no i przesyła dane po rs232, więc wina leży chyba w hardware a nie w kodzie. Moze te maxy są jakieś dziwne.
if h=h_nast then
if min=min_nast then
uruchom
sprawdzaj czas dzialania urzadzenia
end if
end if
Quote:Heh ciekawe jak pójdzie jeszcze na końcu z SHT11 i jego odczytem przez ATtiny i wysyłka po rs485. boje się, że attiny będzie miał za mało pamięci na kod, bo w sumie dla samego RS wyszło coś ponad połowa chyba, a gdzie tu odczytywanie danych i ich konwersja, może będzie trzeba zrobić na atmega8 ?
Quote:Co do PID-a nie potrzebuje, reguluje i grzaniem i chlodzeniem poprzez wentylacji i zamglawianie pomieszczenia. Zrobilem przedzial temperatury i wilgotności w pomieszczeniu i będę próbował w ten sposób sterować czyli między T_max a T_min.
Quote:jak działa po RS232, to po rs485 powinno też śmigać??
Quote:Druga kwestia, to zapis do pamięci 24c04 liczby zmiennoprzecinkowej, hmm. nie robiłem nigdy tego, nie bardzo wiedziałem jak to ugryźć.
$regfile "Attiny2313.dat"
$crystal = 1000000
Dim A As Single
Dim A_byte(4) As Byte At A Overlay
A = 12345.6789
Print A
Print A_byte(1) ; " " ; A_byte(2) ; " " ; A_byte(3) ; " " ; A_byte(4)
A = 0
Print A
Print A_byte(1) ; " " ; A_byte(2) ; " " ; A_byte(3) ; " " ; A_byte(4)
A_byte(1) = 183
A_byte(2) = 230
A_byte(3) = 64
A_byte(4) = 70
Print A
Print A_byte(1) ; " " ; A_byte(2) ; " " ; A_byte(3) ; " " ; A_byte(4)
End
Quote:
Przykładem może być np. zapis temperatury z dokładnością do jednego miejsca po przecinku. Przecież wystarczy do tego zwykły, dwubajtowy Integer - wystarczy przechowywać w nim temperaturę pomnożoną przez dziesięć. Można na takiej liczbie przeprowadzać wszystkie potrzebne operacje, a tylko do wyświetlania odpowiednio ją formatować.
Rez = Fusing(t_ds , "#.#")
T_zew = Round(t_ds)
config watchdog=czas
config watchdog = 2048
Do ' petla glowna
START WATCHDOG
instrukcja 1
instrukcja 2 ' czas wykonywania obu to ok 2s
RESET WATCHDOG
instrukcja 3
instrukcja 4 ' czas wykonywania instr 3 i 4 to ok 2s
RESET WATCHDOG
loop
Declare Function Decigrades(byval Sc(9) As Byte) As Integer
Dg1 = Decigrades(sc(9))
Function Decigrades(byval Sc(9) As Byte)
Decigrades = Makeint(sc(1) , Sc(2))
Decigrades = Decigrades * 10
Decigrades = Decigrades / 16
End Function
Function Pomiar_temp_zew(i As Byte)as Integer
'Funkcja zwraca wartosc temperatury zewnetrznej z czujnika DS18B20
'znajdujacego sie na magistrali 1-Wire
Id_urz_1wire(1) = 1wsearchfirst() 'odczytaj ID pierwszego urzadzenie 1wire
For I = 1 To 8 'wpisz do tablicy ID 8 bajtów
Print Hex(id_urz_1wire(i));
Next I
1wreset
1wwrite Pomin_rom
1wwrite Konwertuj_temp
Waitus 200
1wreset
1wwrite Dopasuj_rom
1wwrite Id_urz_1wire(1) , 8
1wwrite Czytaj_scratchpad
Msb = 1wread(1)
Lsb = 1wread(1)
1wreset
Pomiar_temp_zew = Makeint(msb , Lsb)
Pomiar_temp_zew = Pomiar_temp_zew * 10
Pomiar_temp_zew = Pomiar_temp_zew / 16
End Function
Dim Rez As String * 1
Rez = Str(t_ds)
Rez = Format(rez , "##.#")
Quote:Może tak będzie dobrze:Dim Rez As String * 1
I użycie funkcji:Rez = Str(t_ds) Rez = Format(rez , "##.#")
A Ty Andy jak robisz??
Rez = Format(rez , " 0.0")
Quote:...jak zmieniłem na INt to trochę pamięci zyskałem jakieś 8-9%...