Witam
chciałem sobie zrobić ładny cyfrowy regulator do wzmacniacza...
wybor padl na ds1802
i tu sie robia klocki bo o ile jestem w stanie przegryzc jak to wysterowac przyciskami, to z programem mam juz spore klopoty...
o ile dobrze zrozumialem note to na czas wysylania daynch trzeba wystawic na reset 1, i zgodnbie z zegarem wysylac dane...
i tutaj moj glupiutki programik... jesli bardzo razi w oczy przepraszam;], mea culpa chcialem na poczatek dla testow cos takiego zrobic:
na p1.4 dajac 1 zeby ustawil maxymalna rezystancje, a dajac 0jakas tam srednia.
Declare Sub Wyslij(a As Integer)
Dim Nastaw(15) As Integer
Dim Licznik As Byte
Dim A As Integer
Resset Alias P1.1
Zegar Alias P1.2
Dane Alias P1.3
Wybor Alias P1.4
Do
If Wybor = 1 Then
Nastaw(15) = &B0010000100100001
Else
Nastaw(15) = &B0010010100100101
End If
Call Wyslij(nastaw(15))
Wait 1
Loop
End
Sub Wyslij
Resset = 1
For Licznik = 0 To 15
If Zegar = 1 Then
Zegar = 0
Else
Zegar = 1
End If
Dane = Nastaw(licznik)
Next Licznik
Waitms 500
resset=0
End Sub
i kombinuje i kombinuje a przy kompilacji wychodzi mi out of internal memory co oznacza? i tu jedno z moich pytanek - co znaczy ten komunikat...
of kos bascom + at89c2051
moze jakas mala podpowiedz? bede wdzieczny.
Pozdrawiam Lukasz.
PS
ah no i jeszcze powiem na jakie dane czeka ds1802...
czeka na 16bitow w takiej kolejnosci:
dont care, mute (0-cisza),6bitowa wartosc, jeszcze raz to samo dla drugiego kanalu.
np:
-0100001-01MSB00001LSB
ds czeka najpierw na lsb.
problem z at89c2051 i dobraniem sie do ds1802 w bascomie.
to jest w C, ale chodzi głównie o sposób generowania sygnałów dla DS1802...
Kod: Zaznacz cały
void SendVolumeData (signed char schVolLevel ) {
DSPOT_RST_HI;
DSPOT_D_LO;
DSPOT_CLK_LO;
unsigned char uchBitNo;
unsigned char uchVolByte = schVolLevel;
for ( uchBitNo = 0; uchBitNo < 8; uchBitNo++ ) {
DSPOT_D_LO;
if ( uchVolByte & ((unsigned char)1 << uchBitNo) ) {
DSPOT_D_HI;
}
NOP();
DSPOT_CLK_HI;
NOP();
DSPOT_CLK_LO;
NOP();
}
for ( uchBitNo = 0; uchBitNo < 8; uchBitNo++ ) {
DSPOT_D_LO;
if ( uchVolByte & ((unsigned char)1 << uchBitNo) ) {
DSPOT_D_HI;
}
NOP();
DSPOT_CLK_HI;
NOP();
DSPOT_CLK_LO;
NOP();
}
DSPOT_RST_LO;
DSPOT_D_LO;
DSPOT_CLK_LO;
}
O ile się nie mylę to dla bascom i '51 książek nie ma. Gdybyś pytał o C i '51 to jest tego sporo. Dla bascom i AVR jest bardo dobra ksążka "Programowanie mikrokontrolerów AVR w języku Bascom" i tam jest nawet ten temat o którym piszesz dokładnie omówiony. Pocztraj na temat dostępnej literatury tutajkurt pisze:to moze jakas fajna ksiazka ? ;] bo po przestudiowaniu kursu bascoma z edw nie jestem w stanie podolac temu programowi;]
Mam podobny komunikat jak Ty Kurt przy deklarowanie zmiennej typu string nie wiem dlaczego raz pojawia się a raz nie ale piszę też z innym problemem . Pisze sobie programik do obsługi kolektora między innymi korzystając z czujników DS że nie jestem w tym biegły co jakiś czas kompiluje i sprawdzam w symulatorze . po pewnym czasie wyskoczył mi błąd
Error 10: wrong type(Bit,Byte,Integer,Word or String)expected i file line: 30
To te kolorowe linie , wróciłem do wersji ostatniej dobrej i dalej to samo . Aby było ciekawiej to niosę plik na inny komputer i tam jest wszystko ok.!. już trafia mnie i jestem bliski pogryzienia klawiatury, byłbym wdzięczny gdyby ktoś pomógł. Przedstawiam tylko fragment początkowy kodu z zaznaczeniem owych linii
Config 1wire = P1.0
Deflcdchar 0 , 231 , 231 , 231 , 224 , 224 , 224 , 224 , 224 'deklaracja znaku stopni
Dim Tz As Integer 'temperatura zbiornika
Dim Tk As Integer 'temperatura kolektora
Dim Tnastawa As Byte
Dim Tkolektora As Byte
Dim K As Byte ' zmienna pomocnicza do wyświetlania komunikatów
Dim J As Byte ' zmienna pomocnicz do zapamiętywania nastaw
Dim Tmin As Byte 'temperatura od której pracuje pompa
Dim Tmax As Byte 'temperatura max po której pompa nie pracuje
Dim Tróż As Byte
Pompa Alias P3.0
Alarm Alias P3.1
Elektrozawór Alias P3.2
Esc Alias P3.3
Enter Alias P3.4
Dól Alias P3.5
Góra Alias P3.7
Tmin = 38 'temperatura od której ma pracować pompa
Tmax = 80 'w głównym programie wpisz to na początku
Tróż = 3 'i temperatura alarmu i wyłączenia pompy
'temperaturaróżnicowapomiędzyzbiornikiem 'i kolektorem
Dim Adr(16) As Byte
Dim Odczyt(2) As Byte
Dim X As Byte
X = 1
Adr(x) = 1wsearchfirst() 'znajdź pierwszy adres
X = 9
Adr(x) = 1wsearchnext() 'znajdź drugi adres
Do
Error 10: wrong type(Bit,Byte,Integer,Word or String)expected i file line: 30
To te kolorowe linie , wróciłem do wersji ostatniej dobrej i dalej to samo . Aby było ciekawiej to niosę plik na inny komputer i tam jest wszystko ok.!. już trafia mnie i jestem bliski pogryzienia klawiatury, byłbym wdzięczny gdyby ktoś pomógł. Przedstawiam tylko fragment początkowy kodu z zaznaczeniem owych linii
Config 1wire = P1.0
Deflcdchar 0 , 231 , 231 , 231 , 224 , 224 , 224 , 224 , 224 'deklaracja znaku stopni
Dim Tz As Integer 'temperatura zbiornika
Dim Tk As Integer 'temperatura kolektora
Dim Tnastawa As Byte
Dim Tkolektora As Byte
Dim K As Byte ' zmienna pomocnicza do wyświetlania komunikatów
Dim J As Byte ' zmienna pomocnicz do zapamiętywania nastaw
Dim Tmin As Byte 'temperatura od której pracuje pompa
Dim Tmax As Byte 'temperatura max po której pompa nie pracuje
Dim Tróż As Byte
Pompa Alias P3.0
Alarm Alias P3.1
Elektrozawór Alias P3.2
Esc Alias P3.3
Enter Alias P3.4
Dól Alias P3.5
Góra Alias P3.7
Tmin = 38 'temperatura od której ma pracować pompa
Tmax = 80 'w głównym programie wpisz to na początku
Tróż = 3 'i temperatura alarmu i wyłączenia pompy
'temperaturaróżnicowapomiędzyzbiornikiem 'i kolektorem
Dim Adr(16) As Byte
Dim Odczyt(2) As Byte
Dim X As Byte
X = 1
Adr(x) = 1wsearchfirst() 'znajdź pierwszy adres
X = 9
Adr(x) = 1wsearchnext() 'znajdź drugi adres
Do