Gość Opublikowano 29 Lipca 2006 Zgłoś Opublikowano 29 Lipca 2006 (edytowane) wiec tak mam taki kod (wyrzucilem kilka liniejek bo post troche dlugi sie robil.) //definiujemy stany portu sterującego diodą LED#define LED_ON sbi(DDRB,PB1);sbi(PORTB,PB1) //jedynka na pb1#define LED_OFF sbi(DDRB,PB1);cbi(PORTB,PB1) //zero na pb1int main (void) { sbi(DDRC,PC5); //przeladowanie pojemnosci pinow wejsciowych czy jakos tak:P sbi(DDRC,PC4); sbi(PORTC,PC5); sbi(PORTC,PC4); delay(5); cbi(DDRC,PC5); cbi(DDRC,PC4); //koniec przeladowywania for (;;) {if(bit_is_clear(PINC,PC5)) //jesli pc5 jest zwarty do masy to...{LED_ON;}if(bit_is_clear(PINC,PC4)) //jesli pc4 jest zwarty do masy to...{LED_OFF;}} return (0); }opisalem zeby kazdy mniejwiecej zalapal:P teraz chce zrobic takie cos zeby jednorazowe nacisniecie jednego przycisku powodowalo zapalenie diody, a nacisniecie drugiego zgasilo ja. Edytowane 29 Lipca 2006 przez Gość Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
PelzaK Opublikowano 29 Lipca 2006 Zgłoś Opublikowano 29 Lipca 2006 co znaczy jednorazowe? Przecież jak naciśniesz raz PC5 to sie zapali i ponowne naciśniecie pc5 nie spowoduje zmiany... Czy może tobie chodzi o to .. że obojętnie którym zapalasz.. ale gasisz zawsze drugim (nie tym co zapalałeś)...? Jeśli tak, to musisz wprowadzić sobie przynajmniej jedną zmienną, która będzie pamiętać który przycisk włączył... napiszę to pseudokodem bo nie wiem dokładnie jakie są tam piny w atmedze if(dioda_NIE_świeci) // poznasz odczytując zawartosc pinu sterujacego diodą...{ if(bit_is_clear(PINC,PC5)) //jesli pc5 jest zwarty do masy to... button=0; if(bit_is_clear(PINC,PC4)) //jesli pc4 jest zwarty do masy to... button=1; LED_ON;}else{ if(bit_is_clear(PINC,PC5) && button==1) LED_OFF; if(bit_is_clear(PINC,PC4) && button==0) LED_OFF;} Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 29 Lipca 2006 Zgłoś Opublikowano 29 Lipca 2006 (edytowane) teraz jest tak ze zeby dioda swiecila musze trzymac ten glupi przycisk. ja chce zeby zapalac kliknieciem. wychodzi z tego ze dioda sie "zeruje" gdy tylko bit przestanie byc zerem. edit: okazalo sie ze problem jest hardwareowy, nie softwareowy:P zle przylutowalem jeden kabelek Edytowane 29 Lipca 2006 przez Gość Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 4 Sierpnia 2006 Zgłoś Opublikowano 4 Sierpnia 2006 nie bede nowego tematu robil mam error przy kompilacji l cd.c:9: warning: statement with no effecti kompilator wywala mi najwazniejsza czesc kodu. jak mu to wylaczyc? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
MeHow Opublikowano 4 Sierpnia 2006 Zgłoś Opublikowano 4 Sierpnia 2006 kotek, wrzuc kod, to zerkniemy :) poza tym to tylko warning ;] wiec problemu byc niepowinno ;] Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 4 Sierpnia 2006 Zgłoś Opublikowano 4 Sierpnia 2006 (edytowane) ale jest. wywala mi cala procedure. ale dobra masz ten kod:P daje w spoilerze bo przydlugi jest. » Naciśnij, żeby pokazać/ukryć tekst oznaczony jako spoiler... « void lcd_int(void){delayms(100);PD6_LO; //E niskie//f-setdelayms(400);PD0_LO; //RS 0PD1_LO; //DB7 0PD2_LO; //DB6 0PD3_HI; //DB5 1PD4_LO; //DB4 0enable;//f-setPD0_LO; //RS 0PD1_LO; //DB7 0PD2_LO; //DB6 0PD3_HI; //DB5 1PD4_LO; //DB4 0enable;PD0_LO; //RS 0PD1_HI; //DB7 1PD2_LO; //DB6 0PD3_HI; //DB5 1PD4_LO; //DB4 0enable;//disp onPD0_LO; //RS 0PD1_LO; //DB7 0PD2_LO; //DB6 0PD3_LO; //DB5 0PD4_LO; //DB4 0enable;PD0_LO; //RS 0PD1_HI; //DB7 1PD2_HI; //DB6 1PD3_HI; //DB5 1PD4_HI; //DB4 0enable;//entry modePD0_LO; //RS 0PD1_LO; //DB7 0PD2_LO; //DB6 0PD3_LO; //DB5 0PD4_LO; //DB4 0enable;PD0_LO; //RS 0PD1_LO; //DB7 0PD2_HI; //DB6 1PD3_HI; //DB5 1PD4_LO; //DB4 0enable;//clrPD0_LO; //RSPD1_LO; //DB7PD2_LO; //DB6 PD3_LO; //DB5PD4_LO; //DB4enable;PD0_LO; //RSPD1_LO; //DB7PD2_LO; //DB6 PD3_LO; //DB5 1PD4_HI; //DB4enable;delayms(50); //homePD0_LO; //RSPD1_LO; //DB7PD2_LO; //DB6 PD3_LO; //DB5PD4_LO; //DB4enable;PD0_LO; //RSPD1_LO; //DB7PD2_LO; //DB6 PD3_HI; //DB5 1PD4_LO; //DB4enable;delayms(50); }//sterowanie kursoremvoid lcd_home(void) { //homePD0_LO; //RSPD1_LO; //DB7PD2_LO; //DB6 PD3_LO; //DB5PD4_LO; //DB4enable;PD0_LO; //RSPD1_LO; //DB7PD2_LO; //DB6 PD3_HI; //DB5 1PD4_LO; //DB4enable;} z lcd_int i lcd_home jest ten problem. ten kod nie jest zbyt pro:P wazne ze z dziala:P Edytowane 4 Sierpnia 2006 przez Gość Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
PelzaK Opublikowano 4 Sierpnia 2006 Zgłoś Opublikowano 4 Sierpnia 2006 ten kod mi mówi tyle co nic :D.. ale po warningu wnoszę iż dany statement którego to się tyczy jest coś nie tego... Podobne erory wyskakują, kiedy masz przykładowo w kodzie rozgałęzienia któe ostatecznie wykluczają jedną ścieżkę, lub np masz instrukcję return; która powoduje powrót z jakiejś funkcji a następnie w kodzie po tej instrukcji masz jeszcze coś... Wiec kompilator ostrzega, że jakkowliek program by sie nie wykonał to do tej ostatniej instrukcji nigdy nie dojdzie więc zgłasza że instrukcja czy linijka cała nie da żadnego efektu... być może u Ciebie jest coś podobnego Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 4 Sierpnia 2006 Zgłoś Opublikowano 4 Sierpnia 2006 (edytowane) no wlasnie :/ jesli skopiuje wszystko co mam w lcd_int do main to wszystko jest ok inaczej doopa :/ a kod to zera i jedynki w odpowiednim czasie na odpowiednich pinach:P nie umiem inczej(prosciej/krocej) :( Edytowane 4 Sierpnia 2006 przez Gość Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
MeHow Opublikowano 5 Sierpnia 2006 Zgłoś Opublikowano 5 Sierpnia 2006 Ciezko jest Ci pomoc, bo za nic nie wiem co robi nawet to enable, chociaz przypuszczam, ze wtedy dopiero zaczyna zmieniac stany na pinach. Jesli moge Ci jakos pomoc, to moze sprobuj zrobic sobie jakas funkcje, ktora po maskach bedzie ustawiac piny? W sumie uproscisz sobie kod. Co do bledu, to nei mam zielonego pojecia, ale moze przejrzyj gugla, sporo tego wyskoczylo warning%3A+statement+with+no+effect&start=0&start=0&ie=utf-8&oe=utf-8&client=firefox-a&rls=org.mozilla:pl-PL:official Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
PelzaK Opublikowano 5 Sierpnia 2006 Zgłoś Opublikowano 5 Sierpnia 2006 to ja się podczepię trochę pod Twój temat bo w sumie też dotyczy avrC :D... W chwili obecjen zapewne bardziej jesteś wtajemniczony w uC niż ja... a mam w domu płytkę testową od BASCOM COLLEGE i tam jest do programowania użyty kabelek SPI bezpośrednio łączący port LPT z AVRem (tu 90S2313). I teraz zainsatlowałem sobie AVRStudio - produkt ATMELowy, w którym można pisać w C.. jednak nie mam pojęcia czy da się i w jaki sposób użyć tego kabelka do programowania z poziomu tego środowiska. W ogóle to mógłbyś Arnie zarzucić jakimś kursem C pod AVRa z którego korzystasz? Choć to już mniejszy problem bo sam znajdę.. tylko chodzi o ten kabelek, bo w AVRStudio4 podczas zakładaniu projektu musze wybrać bodajże metodę programowania i wszystko co tam jest dotyczy chyba programatorów bardziej skomplikowanych niż zwykły kabelek :) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...