Witam, chciałbym spytać Was o poprawność zmiany rozdzielczości czujnika temperatury DS18B20 na 9-bit. Zmieniam to w nastepujący sposób: Zacznę od ostatniego pytania: To nie są bity - raczej bajty, i sa to tylko TH i TL i są wpisane tylko do Scratchpad. To by wystarczyło dopóki nie wyłączysz/reset processora. Musiałoby to pozostac częścią programu....
Cześć. Wielokrotnie już elektroda ratowała mnie pomocną ręką, mam nadzieje, że i tak dziś będzie. Staram sie napisać własną obsługę dla ds18b20 dla atmega8. Sporządziłem wstępny kod "biblioteki" (gdy zacznie działać zrefaktoryzuje kod celem jej uogólnienia). Jak narazie jedyna funkcja która mi działa to reset i presence pulse. Dalej w zasadzie odczytuje...
Witam Podczas sczytywania temperatur od 0-33 stopni wszystko jest ok. Po przekroczeniu 33 stopni diody sygnalizujące temperaturę zaczynają szalec. Zastosowałem rezytor zewnętrzny podciągający 4k7. Program: [syntax=asm].include"m8def.inc" #define DQ_PORT DDRC #define DQ 5 #define SET_DQ cbi DQ_PORT, DQ #define CLR_DQ sbi DQ_PORT, DQ #define IN_DQ PINC...
Witam! Popełniłem sterownik do pompy pieca C.O., jednak mam problem; wygląda na to, że po pewnym czasie zawiesza się czujnik temperatury (DS18B20) i wskazuje jedną, nieprawdziwą wartość... DS działa w trybie parasite, rezystor podciągający 4,7k, Vcc do masy. Poniżej kod programu. [syntax=c_mac]/* * main.c * * Created on: 27-09-2014 * Author: BrT */...
Nie wiem czy dobrze wybrałem dział, ale nie wiem czy błąd tkwi w oprogramowaniu czy w podłączeniu :D Na razie podłączałem jeden czujnik do portu D0 docelowo mają być dwa czujniki temp jeden przy całym układzie a drugi dalej by móc mierzyć temp na zewnątrz, wyświetlacz 8-segmentowy razy 2, temp będzie mierzył od 0 do 99 stopni, za pomocą przełącznika...
Witam. Postanowiłem zrobić stację pogodową. Miała by ona podawać temperaturę na zewnątrz i w pomieszczeniu (2 czujniki). Całość postanowiłem zrobić na atmega8 ponieważ taką posiadałem (z zajęć szkolnych) oraz czujnikach DS18B20 (takie były w sklepie). Do wyświetlania temperatury służą dwa mniej więcej takie wyświetlacze http://www.micros.pl/images/Image/obrazy...
$regfile = "m8def.dat". $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portb.6 , Db5 = Portb.7 , Db6 = Portd.5 , Db7 = Portd.6 , E = Portd.2 , Rs = Portd.0 Config 1wire = Portc.0 Declare Sub Odcz_temp Dim Temperatura(2) As Byte Deflcdchar 0 , 7 , 5 , 7 , 32 , 32 , 32 , 32 , 32, Do Call Odcz_temp Cls If Temperatura(2)...
http://obrazki.elektroda.pl/8964865900_1... Witam wszystkich! Chciałbym przedstawić swoją płytkę testową do mikrokontrolera Atmega8. Celem projektu było stworzenie prostej podstawy domowymi środkami pod naukę programowania w C. Jako podstawę zdecydowałem się wybrać większą płytkę uniwersalną, dzięki temu można wprowadzać drobne zmiany...
Napisz wyświetlanie od nowa - w tym kodzie wszystko jest źle. Zdefiniuj obrazy cyfr w postaci tablicy stałych indeksowanej wartością cyfry. Wyrzuć procedury wyświetlania cyfr i switche, które je wywołują - to wszystko razem da się zrobić w jednej linijce kodu, a u Ciebie zajmuje to ponad 120 linii. Wyświetlacz multipleksowany MUSISZ obsługiwać w przerwaniu...
(at)M.S - wg datasheet Atmega8a pracuje w 4MHz do 16Mhz Ten kod również zwraca 00, niestety.
wewnętrzne RC nie jest stabilne? Dokładnie bo same imiona zajmują sporo miejsca no a gdzie reszta No tak, trochę tego jest. Attiny13 koszt ok. 3,2zł Bardzo drogo, ceny atmega8a smd to już 3,90 a możliwości są DUŻO WIĘKSZE.
Odpowiedzi na te i 1000 innych pytań znajdziesz na http://mikrokontrolery.blogspot.com/ :)
Magistrala 1Wire jest bardzo zależna od czasów. Ponieważ nowa Atmega8 ze sklepu jest ustawiona na 1MHz zapytam czy zmieniałeś ustawienia FuseBitów w tych Atmegach? Pytam ponieważ w kodzie masz zadeklarowaną prędkość 4MHz. Taką predkośc podałes kompilatorowi i do takiego taktowania policzył czasy do komunikacji z czujnikiem. Jeśli nie zmieniałeś nic...
Witam, Przeszukałem chyba wszystkie tematy na forum dotyczące atmegi + dallasa ds18b20 i nie znalazłem odpowiedzi. Mianowicie posiadam: LCD 16x1 który jest tak naprawdę 2x8 tylko w jednym rzędzie. Czujnik temperatury dallas ds18b20 i procesor atmega8a Pisząc kod najpierw zająłem się wyświetlaczem który działa już bez zarzutu potem wspierając się prezentacją...
Jak na razie niewiem w jaki sposób w AvrStudio odwołać się do tych plików typu ds18b20 itd... W pliku głównym są do nich odniesienia natomiast jak to wstawić do programu? W jaki sposób mam to "przerobić" ?. Kolega Piotrva na Priv podpowiada aby to skompilować w AS 4.18 ja używam 4.14 i myślę że program (AS) jest ok. Podpowiada też aby ustawić na mega8....
Inne programy działają bez zewnętrznego kwarcu. Wzorowałem się na tych stronach: [url=http://majsterkowo.pl/programowanie... [url=http://majsterkowo.pl/progamowanie-... [url=http://majsterkowo.pl/forum/program...
Witam! Mam pytanie czy ten soft będzie tak samo wyglądał dla ATmega8A? Czy musi on być zmodyfikowany pod kątem tego układu? W bascom deklaracja procesora jest trochę inna. Bo wgrywam go (kompiluje go w bascomavr,a wgrywam mkavrcalculator) i program nie działa. I nie wiem co jest grane? $regfile = "m8adef.dat" $crystal = 4000000 $hwstack = 40 $swstack...
http://obrazki.elektroda.pl/7208083000_1... Witam Od dawna przymierzałem się do zbudowania zegara nixie na sześciu lampach. W internecie jest sporo takich projektów, jednak większość z nich nie odpowiadała moim założeniom. Postanowiłem więc zaprojektować i wykonać zegar od podstaw wykorzystując podzespoły, które miałem pod ręką. Założenia...
Mam taki o to problem. W przerwaniach Timera0 jest odczyt z DS18B20 i multipleksowanie 4 7Segmentowych wyświetlaczy. No to rzeczywiście masz gigantyczny problem ponieważ ty nie masz czegoś tam w przerwaniach Timer0 :( ..... ty CAŁY program z pętli głównej przeniosłeś do przerwania - i dziwisz się że coś dalej nie działa - że inne przerwania coś nie...
Tak na szybko, sprawdz na LCD co się dzieje po wgraniu tego: [syntax=basic4gl] $regfile = "m8def.dat" $crystal = 1000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portc.4 , Db6 = Portc.3 , Db7 = Portc.2 , E = Portc.0 , Rs = Portc.1 Deflcdchar 1 , 4 , 10 , 4 , 32 , 32 , 32 , 32 , 32 'znak stopnia( zdefiniowanie znaku urzytkownika)...
Cześć. Mój problem dotyczy Atmegi8 i obsługi Timera2 w trybie CTC. Poniżej przedstawie napisany kod i problem który próbuję rozwiązać od pewnego czasu. [syntax=c] #define F_CPU 1000000UL #include <avr/io.h> #include <avr/interrupt.h> volatile int zrob_pomiar=0; volatile int odswiez_wyswietlacz=0; int main() { TIMSK |= (1 << OCIE2);...
Witam, Temat wałkowany już 100 raz, ale od paru dni próbuje i nie wiem jak to rozwiązać:/. Mam podłączonego DS18B20 do atmega8a, kwarc wewnętrzny 8MHz. Początkowo układ nie chciał w ogóle współpracować i zwracał standardowe 85 C. Po modyfikacji sterowania pullup zgodnie ze wskazówkami mirekk36 z http://www.elektroda.pl/rtvforum/topic14... układ...
Dziękuje za wytłumaczenie tego wszystkiego. Po przeczytanie postu kolegi dondu oraz informacji zawartej na stronie internetowej podanej przez niego stwierdziłem iż na razie nie potrzebuje takich zestawów. Zamówiłem na allegro płytkę stykową ZYSCOM 700 pól(1595555046). Do tego na stronie sklepu internetowego znajdującego się koło mnie dodałem do koszyczka...
http://obrazki.elektroda.pl/3883873400_1... Witam wszystkich Chciałbym tu zaprezentować swoją najnowszą konstrukcję jaką jest sterownik akwarium na AVR ATMega8. Sprzęt nie jest szczególnie odkrywczy, ale jest konstrukcją na miarę moich aktualnych potrzeb, a może i kilku innych osób które akurat poszukują czegoś podobnego. Jak napisałem...
Ech te komercyjne programiki podszywające się pod darmowe narzędzia... ;))) Na szczęście w świecie zepsutym przez komercję jest jeszcze coś W PEŁNI DARMOWEGO i w PEŁNI FUNKCJONALNEGO - taaaadaaaaa... Khazama Programmer - wujek Google podpowie Ci resztę. Powodzenia.
http://obrazki.elektroda.pl/7355213900_1... Witam, Przedstawiam kolejną wersję zegarka naściennego. Zegarek wyświetla czas w formacie GG.MM, oraz temperaturę w zakresie -9...99°C. Użyte zostały wyświetlacze 7-segmentowe Led o wysokości znaku 56mm. Takie dość duże żeby było z daleka widać która godzina ;) Wyświetlacze mają regulowaną...
Tutaj masz gotowy przykład bez użycia float-ów (oszczędność pamięci): http://mikrokontrolery.blogspot.com/2011...
Witam ponownie, Nie będę się rozwodził nad kondensatorami bo temat nie ten, ale koledzy mają racje :) Poniżej obiecany kod, a raczej cały projekt w Avr Studio 4 - to miał być program termostatu 4-kanałowego jednak jeszcze czeka w kolejce na finalizacje :) Przerobiłem main'a dla Twoich potrzeb. Powinno być ok, jeśli nie będzie to kwestia przypisania...
Jak w temacie... Kuzynowi gęś zjadła końcówkę kabla z czujnikiem temperatury :lol: Układ który siedzi w obudowie to ATMEGA8AAU. doczytałem, że z ATMEGĄ współpracować mogą LM35 lub DS18B20. Ugryziony kabel czujnika ma dwa przewody. Może ktoś wie co siedziało w miedzianej rurce na końcu kabla oryginalnie ? Oczywiście proszę nie pisać abym kupił nowy czujnik...
Na dobry początek, zastanów się nad tymi dwoma makrami: #define CLEAR_1WIRE DDRD&=~_BV(WE) #define SET_1WIRE DDRD|=_BV(WE)
Najpewniej w tabeli masz złe wartości. Przykładowo 0 ma tu kod 3=00000011B czyli na pewno portb.0 = 1 i portb.1 = 1 jeśli portb.1 jest podpięty pod segment A to jest błędnie.
Ten kod napisałem na podstawie dokumentacji temometru i dokumentu opisującego interface 1 wire od atmela: A do dokumentacji AVR-ka zaglądałeś :?: Zastanów się, czy można uzyskać niski stan na magistrali 1wire, jeżeli pin do niej podłączony jest ustawiony jako wejście :?: [syntax=c]unsigned char _DS18B20_ReadByte() { _DATA_DDR &= ~(1 << _DATA_WIRE);//...
W Notepad++5.6.2
Nie znam się na ATmegach i Atmel Studio jak określa port ale zaprezentowany kod odwołuje się do całego portu: #define OUT_1WIRE_LOWPORT_1WIRE &= ~(1 << PIN_1WIRE); Konfiguracja (wskazanie) w kodzie prawidłowego portu/pinu 1W jest oczywistą oczywistością, jak mawiał klasyk i szczerze mówiąc wstępnie nie rozważałem takiej sytuacji. Użycie błędnego...
A jak masz połączone te rezystory? Szeregowo czy równolegle? Czemu posługujesz się czyimiś bibliotekami, nie napiszesz ich sam? A to już nie można cudzych bibliotek wykorzystać? Nie wiem czy tutaj byłeś: [url=http://www.hobby.abxyz.bplaced.net/... Na dole artykułu jest gotowa biblioteka do ds18b20 działająca na 100%. W msb i lsb...
Dołącz i edytuj plik config.h z folderu, w którym są źródła tego przykładu. W tym pliku jest zdefiniowany port i pin. Ustaw odpowiednio dla Twojego układu.
- reset procka podłączony do DB6 lcd, po co ? Oraz brak podciągnięcia do plusa. - PD5 uc ma zewnętrznego pull-upa, po co jeśli masz wewnętrzne rezystory?? Chyba że to miało być do resetu. Z drugiej strony wyczytałem, że przy zasilaniu pasożytniczym, jeśli procek ma wewn. rezystory pull up to musisz zastosować klucz zwierający linię danych do plusa bo...
Temat pewnie był opisany na tym forum kilkukrotnie. Najlepiej skorzystać z noty katalogowej układu. Tam wszystko jest dokładnie opisane. Rozumiem, że kilka czujników chcesz podpiąć na wspólnej magistrali 1-wire bo gdy stworzysz dla każdego czujnika osobną ten problem nie istnieje. Sposoby są ogólnie na to dwa. Pierwszy -wg. mnie prostszy ale mniej profesjonalny-to...
Co do: Procesor32 napisał: Zapisujesz nazwy pod ten sam adres w EEprom Writeeeprom Q , 13 I odczytujesz też z tego samego adresu. Jeśli przeczytałbyś dokładnie post I po sprawie.Nie musisz pamiętać adresu pod który masz zapisywać i z pod którego odczytywać. Prosto i bez problemu. Jest to prosta metoda zapisu do EEProm, ale ma zasadniczą wadę. Użytkownik...
Jesli twierdzisz, ze biblioteka byla pisana tylko pod wersje 'S' to ciekaw jestem dlaczego w kodzie znajduje sie to: /* DS18X20 specific values (see datasheet) */ #define DS18S20_ID 0x10 #define DS18B20_ID 0x28 {...} #define DS18B20_9_BIT_UNDF ((1<<0)|(1<<... #define DS18B20_10_BIT_UNDF...
Aby kod łatwo było analizować używaj znaczniki SYNTAX: [syntax=c] tu wklej Twój kod [/syntax] Plik : HD44780.c Plik : HD44780.h Dodano po 25 Ja połączyłem je w ten sposób ale pewnie źle bo wystąpiły błędy w kompilacji. Proszę o pokazanie mi sposób połączenia tych dwóch plików w prawidłowy sposób. Pierwsze uwagi: - te dwa pliki to tylko...
W uC należy odpowiednio ustawić FUSE BITY!!! Poczytaj przyklejony temat.
Co do 3: Przeczytaj jeszcze raz dokumentację układu. Chyba bardzo czegoś nei zrozumiałeś. Do termometru wysyła się ciąg bitów, z których pierwsze 8 stanowi polecenie, a nestępne - jego ew. argumenty. W układzie DS18B20 nie ma żadnych "adresów" ani "miejsc do wysyłania bitów". Ani mikrokontroler, ani DS18B2 nie wiedzą, co to jest "hex". W prgramie zapisuje...
Powrócę jeszcze do tematu. Timery programowe to objaśnił Mirekk36 w swojej książce oraz artykułach i wideo poradnikach, bardzo dobrze je się stosuje. Jest to proste, wystarczy ustawić jakiś timer w tryb CTC i wywoływać przerwanie co jakiś zamierzony czas (stosuje około 10ms). F_CPU/Prescaler/100 Zaokrągloną wartość wpisujemy do rejestru OCRx. W przerwaniu...
Zainstaluj sobie odpowiednie środowisko i zapomnij o makefile i problemach z nim związanych: http://mikrokontrolery.blogspot.com/2011... Poza tym pokaż schemat - może tam też są jakieś krzaczki :-)
a po co ci takie duże zmienne uint16_t decicelsius; uint16_t subzero, cel, cel_frac_bits; tam zdaje sie powinny być unsigned char no i tu hd44780_putInt((decicelsius/100), 10,0); chyba powinno być (decicelsius/10) - jak sama nazwa wskazuje decicelsius zwraca wartość w dziesątych stopnia np. 26.5°C -> 265
Funkcje OneWireReset_1, OneWireReset_2, OneWireWriteByte_1, OneWireWriteByte_2, OneWireReadByte_1 i OneWireReadByte_2 obuduj tak: unsigned char OneWireReset_1() { cli(); ... ... ... sei(); return(0); } A jeszcze lepiej to obuduj makrem ATOMIC_BLOCK.
problem tkwi w tym, że program masz do obsługi układu DS1820, a podpięty masz DS18 B 20 (różnią się one rozdzielczością i sposobem zapisu temperatury w rejestrach). W internecie znajdziesz masę programów pod BASCOM i nie tylko obsługujących ten termometr.
(at)Eagle - widać Autor ma jakieś uzasadnienie, czasem lepiej jest podpiąć pod osobne piny choćby dlatego, aby mieć pewność gdzie dany czujnik się znajduje i aby system nie wysypywał się po podmianie nie działającego czujnika. (at)11111olo - biblioteka jest dosyć podstawowa - zasadniczo najlepiej by było napisać od nowa funkcje niskopoziomowe tak,...
kamil1cos7 --->, tak, czujniki mam w trybie pasożytniczym, po pracy podmienię rezystor na 2k; snnaap ----> tak, powyżej 10st. Celsjusza wyświetla prawidłowo, wg termometru, w pokoju mam 22st, więc raczej nie przekłamuje. Pierwsze co to wyświetl na ekranie co masz w zmiennej Ss po odczycie wprost z czujnika przy tem poniżej 8 stczyli : Ss = Str(i1)...
... To teraz jestem w kropce :) Co mogłem zrobić źle w układzie z mikrokontrolerem?... Nie ma co panikować :wink: Spróbujmy inaczej.W załaczniku masz 2 gotowce.Załaduj do proca i ... zobaczymy czy którykolwiek zadziała :) Pozdrawiam Piotrek
Po pierwsze to kup nowego DS a tego wyrzuć- bo gdzieś go schowasz, zapomnisz że zepsuty- a za jakiś czas będziesz się znowu użerał. Ale zanim go wyrzucisz zmień us na ms na końcu programu. Zresztą powinno być 900ms a nie 200.
Myślę, że błąd będzie tu: unsigned char read_byte(void) { unsigned char i; unsigned char wartosc = 0; for(i=0; i<8; i++) { if(read()) wartosc |= 0x01 << 1; //błędna linijka _delay_us(15); } return (wartosc); } Za każdym razem wykonujesz or na tym samym bicie. Zmień tą linie...
Ja miałem podobne problemy i okazało się, że to z powodu funkcji czasowej delay_us. Zastąpiłem ją inną i wszystko zaczęło chodzić OK. Zastosuj tą: void delayus(unsigned char t) //parametr t od 0 do 255. { do{asm("nop");}while(--t); } W miejscu gdzie masz zdefiniowaną częstotliwość oscylatora wpisz też: #define F_CPU 8000000ul
Nie kojarzę już przy jakiej okazji otrzymywałem ten błąd. Ale zaproponować Ci mogę skorzystanie z tych kodów:[url=http://www.stsystem.elektroda... czujnik, [url=http://www.stsystem.elektroda.eu/pr... czujników. Kody działają w 100%, pochodzą z wdrożonego rozwiązania. Przyjrzyj...
Witam. Czy włączyłeś optymalizację kodu: -Os ? Warto też dołączyć bibliotekę: "math.h" ponieważ używasz zmiennych double, zmniejszy to objętość kodu wynikowego; i zmiennym nadać volatile. Czy dobrze skonfigurowałeś projekt? Poniższe : char str Dodano po 12 Na temat "dtostrf()" i "sprintf()" poczytaj ich opis w AVR-Libc np. na tej stronie https://savannah.nongnu.org/projects/avr...
atmega8a zasila atmega8a avrdude atmega8a interrupt
nokia czysta płyta krosowanie kabla amica świecą
autocom przekazniki autocom przekazniki
Instrukcja obsługi kuchenki Amica GHGL64112 Windows: Po zalogowaniu widoczna tylko tapeta i klepsydra