Witam Jestem kompletnym amatorem w BASCOM-ie, ale wziąłem się za przerobienie kodu Termometru Domowego na tiny2313 i po części udało się. Termometr pokazuje przez jakieś 5 min temperaturę 0'C, a po tym czasie wyłącza się. Nie reaguje na przycisk. Mirley, jak znajdziesz czas to zerknij, dla Ciebie to pestka. $regfile = "attiny2313.dat" $crystal = 12000000 Config Portb = &B11111111 : Portb = &B11111111 Config Portd = &B11111111 : Portd = &B11111111 Config Timer0 = Timer , Prescale = 64 'okres Timera0 250*12*Tosc=250us Load Timer0 , 250 Enable Interrupts Enable Timer0 : On Timer0 Przerwanie Start Timer0 Portb = 255 Portd = 255 Config 1wire = Pind.5 '******************************************************************************* 'Zmienne '******************************************************************************* Dim Lsb As Byte Dim Msb As Byte Dim Co4ms As Byte , Co100ms As Byte , Co1s As Byte Dim Wysw As Byte , Wysw1 As Byte , Wysw10 As Byte Dim Tempa As Byte Dim Mux As Byte Dim Autooff As Word Dim Przycisk As Byte Dim Zezw_przyc As Bit , Zezw_wysw As Bit Dim Pomiar_odczyt As Bit Dim Minus As Bit Dim Pokaz As Bit Dim Przyc As Bit '******************************************************************************* 'wartosci '******************************************************************************* Reset Pomiar_odczyt Set Pokaz Autooff = 1500 '******************************************************************************* 'Petla glowna '******************************************************************************* Do If Zezw_wysw = 1 Then 'wyswietlanie Reset Zezw_wysw '***************************************** 'co 4ms If Portd.4 = 0 Then Incr Przycisk If Przycisk = 200 Then Przycisk = 0 Set Przyc End If Else Przycisk = 180 Reset Przyc End If If Portd.6 = 0 Then If Przyc = 1 Then Reset Przyc Pokaz = Not Pokaz End If Else If Przyc = 1 Then Reset Przyc Set Pokaz Autooff = 1500 End If If Autooff > 0 Then Decr Autooff Else Reset Pokaz End If End If If Pokaz = 1 Then Wysw = Tempa Gosub Przelicz Gosub Wyswietl Else Portb = 255 End If '***************************************** End If Loop End '******************************************************************************* 'Przerwanie Timera '******************************************************************************* Przerwanie: 'co 250us Incr Co4ms If Co4ms = 16 Then Co4ms = 0 '*************************************** co 4ms Set Zezw_wysw Incr Co100ms If Co100ms = 25 Then Co100ms = 0 '*************************************** co 100 ms Set Zezw_przyc Incr Co1s If Co1s = 10 Then Co1s = 0 '*************************************** co 1s Pomiar_odczyt = Not Pomiar_odczyt Disable Interrupts 1wreset If Pomiar_odczyt = 1 Then 1wwrite &HCC 1wwrite &H44 Else If Err = 0 Then 1wwrite &HCC 1wwrite &HBE Lsb = 1wread(): Msb = 1wread(): If Msb = 0 Then Reset Minus Tempa = Lsb / 2 Else Set Minus Lsb = Not Lsb Tempa = Lsb / 2 Tempa = Tempa + 1 End If Else Tempa = 255 'Er wyswietli wyswietlacz potem End If End If Enable Interrupts '*************************************** End If '*************************************** End If '*************************************** End If Return '******************************************************************************* Przelicz: If Wysw < 100 Then Wysw1 = Wysw Mod 10 Wysw1 = Lookup(wysw1 , Tabela) If Wysw > 9 Then Wysw10 = Wysw / 10 Wysw10 = Lookup(wysw10 , Tabela) Else Wysw10 = 255 ' znika 0 na pierwszym miejscu End If Else Wysw1 = 175 'r Wysw10 = 134 'E End If Return '******************************************************************************* Wyswietl: Incr Mux If Mux = 4 Then Mux = 0 Select Case Mux Case 0: Set Portd.0 If Minus = 1 Then If Wysw10 = 255 Then Portb = 255 Else Portb = 191 End If Else Portb = 255 End If Reset Portd.3 Case 1: Set Portd.3 If Minus = 1 Then If Wysw10 = 255 Then Portb = 191 Else Portb = Wysw10 End If Else Portb = Wysw10 End If Reset Portd.2 Case 2: Set Portd.2 Portb = Wysw1 Reset Portd.1 Case 3: Set Portd.1 Portb = 70 Reset Portd.0 End Select Return '******************************************************************************* 'Tabela do wyswietlania na wyswietlaczu '******************************************************************************* Tabela: Data 192 , 249 , 164 , 176 , 153 , 146 , 130 , 248 , 128 , 144 'znak: 0 1 2 3 4 5 6 7 8 9 '*******************************************************************************
|
|||
Re: temo
Popatrz na ustawienia fusebitów najpierw
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.
Fuse bity ustawiłem zgodnie
Fuse bity ustawiłem zgodnie z: http://mirley.firlej.org/termometr_uniwersalny
Zmniejszyła się tylko częstotliwość migania. Po ok. 5 min wyświetla się "Er"(chyba error). Pewnie to jakiś błąd w kodzie.
Mam czujnik temp. Dallas DS1820, a na schemacie jest DS18S20(taki dali mi w sklepie). Może to jest problemem?
Re: Termometr
Poszukaj błędu w części sprzętowej.... a temperatura jest dobra tylko po jakimś czasie masz error czy nic nie pokazuje a po pewnym czasie error. Czujnik jest ok
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.
No ale chyba to, że term nie
No ale chyba to, że term nie reaguje na przycisk(jak nacisnę w momencie wyświetlania wyświetlacz lekko słabiej świeci) nie świadczy o usterce sprzętowej. Co do sprzętu...
-cały układ wyświetlający(od procesora do wyświetlacza)jest w porządku, bo sprawdzałem.
-część "zasilająca" też, bo napięcie wynosi 5,15V
Oprócz tego mamy: czujnik, tiny2313, kwarc + 2x 33pF.
Nie wiem co mogłoby być nie tak jak powinno w sprzęcie. Upierałbym się jednak przy tym kodzie, ponieważ poprawiałem go sam(na podstawie "Termometr Uniwersalny") i nie jestem pewien do końca czy wszystko zrobiłem tak jak należy, bo jestem amatorem w BASCOM-ie.
Re: Termometr
No to tak.... teraz się zorientowałem. Pin na którym jest przycisk musi być ustawiony jako wejście. Tiny ma dwa typy wyprowadzeń, konfigurowane programowo. Jak pin jest wyjściem to aktywne są dwa tranzystory wyjściowe i stan jest dobrze określony. Jak taki pin zewrzesz do masy a jest w stanie wysokim to masz tak jakbyś zrobił zwarcie w układzie i możesz procka spalić. jak pin jest wejściem to można stan logiczny dowolnie wymuszać. Pin musi być ustawiony w takim wypadku na wysoki stan logiczny aby można było z niego czytać stan. Zmień konfiguracje na początku na taką:
Niżej w kodzie też jest problem bo są dwa rejestry portów, rejestr portx.y służy do ustawiania wartości portu, jeśli nóżka procka jest wejściem to z tego portu nic nie odczytasz. Do odczytu stanów z portu słuzy rejestr pinx.y. To taka subtelna różnica. Jak ustawiasz stan to piszesz portx.y = X, a jak czytasz to piszesz X = pinx.y
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.
Dzięki, ale nie mam jak
Dzięki, ale nie mam jak przetestować. Zmieniałem fusy w avr dude i teraz BASCOM nie może zidentyfikować tiny2313 ;/
Re: Fusy
Jak zmieniłeś fusy na kwarc to musisz dołączyć kwarc żeby procek działał prawidłowo itp. Chyba że źle ustawiłeś fusebity to mogło się coś przyblokować
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.
Kwarc jest, obawiam się tej
Kwarc jest, obawiam się tej 2-giej opcji.
Da się jakoś zresetować ten
Da się jakoś zresetować ten procesor żeby miał ustawienia fabryczne?
Re: Programowanie
Programatorem szeregowym się nie da, chyba że ustawiłeś na zewnętrzny generator lub oscylator RC. Musiałbyś wiedzieć na co ustawiłeś albo poprostu podłączyć generator do procka
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.
Fusebity
Jak mam ustawić fusebity w BascomAVR?
Re: Termometr
Wyglądają na dobrze ustawione.... linia KLA... jest na zrzucie obcięta ale jest tam nawias z wartościami CKSEL i SUT, powinno być tam [CKSEL=1111 SUT=11]
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.
Jak zawsze: problemy :)
Witam
Ustawiłem [CKSEL=1111 SUT=11] i mam 3 problemy:
- temperatura bez zmian 0 stopni
- wyświetlacz nie świeci tylko mryga z wysoką częstotliwością
- jak widać na filmie, urządzenie nie reaguje na przycisk
Oto film ukazujący pracę termometru:
http://www.youtube.com/watch?v=pMh-OVE-iJk
Re: Termometr
A rezystor 4,7k od linii sygnałowej czujnika do +5V jest podłączony?
w kodzie:
Przyciskami to zajmiemy się jak temperatura zadział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.
Temperatura dalej 0 st,
Temperatura dalej 0 st, natomiast poprawiła się częstotliwość. Teraz miga z superwysoką częstotliwością, z daleka dla oka wygląda jak normalne świecenie. Taka częstotliwość jest oczekiwana, Mirley? Czekam na kolejne instrukcje i oczywiście dziękuję za dotychczasowe ;)
Edit: Ale takiego rezystora nie ma na schemacie.
rezystor
na schemacie nie ma ale w opisie budowy jest to podane
wlutuj rezystor w takim razie
Noo wreszcie sukces...
Noo wreszcie sukces...
Temperatura jest. Ale mam jeszcze 2 ale:
-wyświetlacz zbyt szybko gaśnie
-jak zgaśnie to już na amen(brak reakcji na przycisk)
Aaa i zróbcie coś z tym schematem, męczę się 2 miesiące z powodu jednego opornika...
Re: termometr
Piny z których czytasz stan maja być np pind.4 a nie portd.4, rejestr port jest do ustawiania stanów pinów a nie do czytania. Wszystkie wejścia mają być czytane poprzez pinx.y. Oczywiście wczesniej trzeba dana końcówkę zrobic wejściem na początku programu ale o tym juz pisałem.
Spróbuj zwiększyć tą wartość:
Co do tego rezystora to trzeba uważnie czytać a potem robić.
W timerze spróbuj dać: Co4ms = 2 lub 3 to powinno przyspieszyć działanie
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.
Przepraszam bardzo, ale coś
Przepraszam bardzo, ale coś tu się nie zgadza. Ja robię "termometr domowy", gdzie nie ma nic wspomniane o rezystorze 4,7k. Jest wspomniane w projekcie "termometr uniwersalny". Robiąc termometr nie myślałem że muszę łączyć dwa projekty w jeden. Chciałbym ustrzec przyszłych wykonawców przed tego typu niedopatrzeniem.
EDIT: Działa prawie idealnie, tylko co kilka sekund migają na zmianę temperatura i oC, da się jakoś tego uniknąć? I szkoda, że nie wyświetla nic po przecinku.
Jakie napięcie max. mogę podłączyć?
Re: Termometr
Można b dopisać do 0.5 stopnia ale zrezygnować ze znaku stopnia na końcu. Albo zastosować czujnik Ds18B20 i mieć do 0.1 stopnia wskazanie. To że czasem mignie wyświetlacz spowodowane jest odczytem ds18b20, może dało by się to jakość obejść ale to kwestia całkiem nowego programu
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.
Zadowolę się na razie tym co
Zadowolę się na razie tym co jest :)
Ponowię pytanie: Jakie napięcie max. można podpiąć pod ten termometr? Mam jeszcze taki problem, że termometr nie działa po podpięciu go pod USB, molex, czy zasilacz 5V. Obecnie śmiga z zasilacza 6V.
Re: Termometr
Masz zrobiony termometr domowy i pewnie masz tez mostek prostowniczy i stabilizator 7805, Jakby mostka nie było to na wejście stabilizatora musisz podac napięcie 7-15V żeby on zrobił sobie pewne 5V na wyjściu i zasilał procka. Jak chcesz z USB to wywal stabilizator i mostek a napięcie z USB lub zasilacza podaj na uklad, bezpośrednio do procka. Pamiętaj ze wtedy może być zasilanie od 4.5 do 5V, przy wyższym procek się spali
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.
W takim razie wyrzucę mostek
Podłączyłem napięcie 12V i gra. Dziękuję za pomoc :)