Witam!
Dziki Mirley udało mi sie zrobić juz dosyć ciekawy projekt,ale mam z innym mały problem.Chodzi o obsługę Max6675 i enkodera.sterowanie enkodera mam z tej strony.Działa dobrze gdy nie wstawię Waitms 800 potrzebne do obsługi Max 6675 .Ma ktoś pomysł jak to zrealizować bez tego?Fragment kodu
Config Pinc.4 = Output
Config Pinc.3 = Output
Config Pinc.2 = Input
Sck Alias Portc.4
Cs Alias Portc.3
So Alias Pinc.2
Dim Maxdata As Word
Cs = 1
Sck = 0
Portc.2 = 1
'**************************************
Do
'********************enkoder****************
Licz = 1
If I1 = 0 Then
Gosub Enkoder1
End If
If I2 = 0 Then
Gosub Enkoder2
End If 'obsluga enkodera
'************************************ obsluga max6675
Cs = 0
Shiftin So , Sck , Maxdata , 0 , 16
Cs = 1
Shift Maxdata , Right , 3
Maxdata = Maxdata / 4
Locate 1 , 6
Lcd Maxdata ; " "
Waitms 800 'bez tego nie wyswietla poprawnie temperatury
'z tym nie dziala enkoder
Loop
Enkoder1:
If I1 = 0 Then
Bitwait I1 , Set
If I2 = 0 Then
Decr Licz
Gosub Wys
End If
End If
return
Enkoder2:
If I2 = 0 Then
Bitwait I2 , Set
If I1 = 0 Then
Incr Licz
Gosub Wys
End If
End If
return
Wys:
If Licz = 0 Then
Decr Ct
End If
If Licz = 2 Then
Incr Ct
End If
If Ct <> Cts Then
Cts = Ct
Outs = ""
If Ct < 10 Then Outs = Outs + "0"
If Ct < 100 Then Outs = Outs + "0"
Outs = Outs + Str(ct)
Locate 1 , 1
Lcd Outs
End If
Return
Re: Bascom
Trzeba uzyć timera rzecz jasna.... w przerwaniu zrobić sobie flagę co 1s i tam obsługiwać MAX, a druga flaga lub bespośrednio do loop zajmie się obsługą impulsatora.
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Bascom
No jasne tak się domyślam,ale ja chciałem abyś mi coś pomógł z Bascom, jak to powinno wyglądać.
Dzieki za
Dzieki za zainteresowanie.Zaraz postaram sie testować to.Napisze jak to będzie działać.No i działa. Zrobiłem tak jak podpowiedzialaes. Mam jeszcze male pytanie odnośnie Pwm.Jak zrobić aby pwm zmniejszał sie proporcjonalnie do rosnącej temperatury.Skokowo wiem jak zrobić na If-ach, jednak nie moge wymyslec jak to zrobić aby odbywało sie automatycznie.
RE: Temperatura/PWM
Musisz napisać funkcję, która przeliczy wartośc temperatury na wartość PWM. np jeśli wynik temperatury jest w zakresie 0-100 a Pwm chciałbys zmieniać powiedzmy 100-400 to musisz napisać:
PWM = 3*temp + 100
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Dzieki za odpowiedz,ale juz
Dzieki za odpowiedz,ale juz do tego doszedłem w podobny sposób.teraz mecze sie z innym problemem.na płytce testowej na avr32 wszystko działało dobrze w docelowym układzie na atmega8 cos nie bardzo chce.Układ jest banalnie prosty,a mimo to gdzieś mam błąd.Aby uzywac pinow PC 2,3,4 jako normalnych wyjść muszę cos przestawić w fuse bits?
Re: M8
Nie trzeba nic ustawiać, poza taktowaniem jeśli chcesz żeby na kwarcu pracowało. Napewno do dobrych pinów się podpinasz? napisz prosty program migający diodą na porcie i się dowiesz czy w ogóle procek działa.
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Procek działa,ponieważ
Procek działa,ponieważ wszystko wyświetla tak jak trzeba.Boje sie ,czy nie uwaliłem max 6675.Problem rozwiązany. Gdzieś chyba był zimny lut.Po ponownym polutowaniu wszystko działa.Pierwszy raz robiłem coś z SMD.Dzieki za zainteresowanie!
Z jaką rozdzielczością będzie
Z jaką rozdzielczością będzie wyświetlana temperatura przy użyciu powyższego kodu dla MAX6675?
Juz nie pamiętam.Sporo wody
Juz nie pamiętam.Sporo wody upłynęło od tego czasu.Sprawdź dane tego scalaka w necie.Ja to robiłem do lutownicy,wiec i tak zaokrąglałem do liczby całkowitej. Kurcze jak popatrzę na ten kod dzisiaj to tragedia:)Lepiej tego nie naśladować:)