Regulator temperatury+max 6675


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




Portret użytkownika mirley

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.

Portret użytkownika marekszy

Bascom

No jasne tak się domyślam,ale ja chciałem abyś mi coś pomógł z Bascom, jak to powinno wyglądać.

Portret użytkownika Grzeniu 73

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.

Portret użytkownika mirley

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.

Portret użytkownika Grzeniu 73

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?

Portret użytkownika mirley

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.

Portret użytkownika Grzeniu 73

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!

Portret użytkownika gosc

Z jaką rozdzielczością będzie

Z jaką rozdzielczością będzie wyświetlana temperatura przy użyciu powyższego kodu dla MAX6675?

Portret użytkownika Grzeniu 73

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ć:)