Jeżyk-1 Napisano Sierpień 24, 2012 Udostępnij Napisano Sierpień 24, 2012 Witam. Chciałem dostosować kod z ćwiczenia 5 kursu: http://hobby.abxyz.bplaced.net/index.php?pid=4&aid=8 do swoich potrzeb ale że jestem początkujący to coś mi nie idzie 🙂 Chciałem część kodu wstawić w funkcję: void wys_tem(void) { /* Funkcja 'ds18b20_ConvertT' wysyła do układu ds18b20 polecenie pomiaru */ if(ds18b20_ConvertT()) { /* 750ms - czas konwersji */ _delay_ms(750); /* Odczyt z układu ds18b20, dane zapisywane są w tablicy ds18b20_pad. Dwie pierwsze pozycje w tablicy to kolejno mniej znaczący bajt i bardziej znaczący bajt wartość zmierzonej temperatury */ ds18b20_Read(ds18b20_pad); /* Składa dwa bajty wyniku pomiaru w całość. Cztery pierwsze bity mniej znaczącego bajtu to część ułamkowa wartości temperatury, więc całość dzielona jest przez 16 */ temp = ((ds18b20_pad[1] << 8) + ds18b20_pad[0]) / 16.0 ; /* Formułuje komunikat w tablicy 'str' */ sprintf(str,"%4.1f\xdf""C", temp); /* Wyświetla tytuł */ LCD_LOCATE(0,1); lcd_puts("tempe: "); /* Wysyła komunikat do wyświetlacza */ LCD_LOCATE(8,1); lcd_puts(str); } } a w funnkcji głównej tylko jego odnośnik : int main(void) { /* Zmienna przechowuje aktualną wartość temperatury */ double temp; /* W tablicy zapisywane będą dane odczytane z układu ds18b20 */ unsigned char ds18b20_pad[9]; /* Funkcja inicjalizuje wyświetlacz */ lcd_init(); /* Włącza wyświetlanie */ LCD_DISPLAY(LCDDISPLAY); /* Czyści ekran */ LCD_CLEAR; wys_tem(); } Ale kompilator zwraca mi różne błędy. Pewnie wina jest że funkcja ma zły typ i parametr funkcji albo wymagana jest gdzieś zmienna globalna 🙁 może ktoś podpowiedzieć jak powinno być to ruszyło? Cytuj Link do komentarza Share on other sites More sharing options...
Harnas Sierpień 24, 2012 Udostępnij Sierpień 24, 2012 Musisz jeszcze dodać kod obsługujący 1 Wire i wyświetlacz lcd. Wszystko jest w tym kursie (nie pamiętam w których częściach). Cytuj Link do komentarza Share on other sites More sharing options...
Jeżyk-1 Sierpień 24, 2012 Autor tematu Udostępnij Sierpień 24, 2012 Muszę dodać do funkcji czy pokazać na forum ? Bo jak pokazać na forum to podałem linka na początku do tego kursu, tam jest cały kod. Cytuj Link do komentarza Share on other sites More sharing options...
mactro Sierpień 25, 2012 Udostępnij Sierpień 25, 2012 Ale kompilator zwraca mi różne błędy. Warto te błędy czytać, zazwyczaj mówią właśnie co jest nie tak. Jeśli ich nie rozumiesz, wrzuć na forum, będzie łatwiej sprawdzić. Tak na pierwszy rzut oka, nie masz zadeklarowanych zmiennych temp i str. Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
Jeżyk-1 Sierpień 25, 2012 Autor tematu Udostępnij Sierpień 25, 2012 No tak mało wiem jak to poprawić oto kod błędu : Compiling C: main.c avr-gcc -c -mmcu=atmega16 -I. -gdwarf-2 -DF_CPU=1000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./main.lst -std=gnu99 -MMD -MP -MF .dep/main.o.d main.c -o main.o main.c: In function 'wys_tem': main.c:38: error: 'ds18b20_pad' undeclared (first use in this function) main.c:38: error: (Each undeclared identifier is reported only once main.c:38: error: for each function it appears in.) main.c:43: error: 'temp' undeclared (first use in this function) main.c: In function 'main': main.c:82: warning: unused variable 'ds18b20_pad' main.c:80: warning: unused variable 'temp' make.exe: *** [main.o] Error 1 > Process Exit Code: 2 > Time Taken: 00:02 Cytuj Link do komentarza Share on other sites More sharing options...
Chumanista Sierpień 25, 2012 Udostępnij Sierpień 25, 2012 Deklarujesz jako lokalne w main i próbujesz użyć w wys_tem następujące zmienne: ds18b20_pad temp 1 Cytuj Link do komentarza Share on other sites More sharing options...
Jeżyk-1 Sierpień 25, 2012 Autor tematu Udostępnij Sierpień 25, 2012 Dzięki @Chumanista już wszystko działa jak należy 🙂 Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Dołącz do dyskusji, napisz odpowiedź!
Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!