bartek1333 Napisano Marzec 5, 2011 Udostępnij Napisano Marzec 5, 2011 Witam,Mam pewien problem z tym chyba najprostszym programem na uC :-> . Wygląda on tak 'program przeżutnka RS $regfile = "m8def.dat" 'atmega8 Config Portd = Input 'port D ustawiony jako weście Config Portb = Output 'port b jako wyście Portd = 00111111 'dwa najmłodsze bity w stan niski Portb = 10111111 '1 bit stan niski Do 'pętla nieskończona If Pind.0 = 1 hen Pinb.1 = 1 'jeżeli przycisk 1 wciśniety zaświeć led If Pind.1 = 1 hen Pinb.1 = 0 'jeżeli przycisk 2 wcisniety zgaś led Loop End Do pind 0 i 1 są podlączone dwa przyciski, a do pinb. 1 led. Po sprawdzeniu programu przez bascom wyskakują takie blędy: Error 230 line: 16 you can not write to a PIN register [PINB. 1] to samo w linii 17 Przeszukałem program kilka razy, ale nie za bardzo wiem o co chodzi. Będzie on taktowany wewnętrznym oscylatorem. Mam coś przestawić w fuse bitach? Proszę o pomoc Link do komentarza Share on other sites More sharing options...
swierkdeck Marzec 5, 2011 Udostępnij Marzec 5, 2011 Jeżeli kompilator ma problemy, to znaczy, że problem leży w kodzie (nie fusy, etc.). Znasz angielski? Gdybyś znał, to byś wiedział (z komunikatu), że nie można wpisać zmiennej do PINx. Z PINx odczytujemy stan, a zmienną wpisujemy do PORTx. Masz jeszcze babola (zamiast Then napisałeś hen) Aha jeszcze liczby binarnie masz na odwrót. 1 Link do komentarza Share on other sites More sharing options...
bartek1333 Marzec 5, 2011 Autor tematu Udostępnij Marzec 5, 2011 swierkdeck, dzięki wielkie, bo wszystko działa 😅 Oczywiście dostajesz POMÓGŁ. Jednak mam jeszcze pytanie które na poczatku zadałem: Jeśli procesor ma być taktowany swoim własnym oscylatorem, to jaką dyrektywę dla kompilatora mam wpisać? Czy coś w fuse bitach? Link do komentarza Share on other sites More sharing options...
Nawyk Marzec 5, 2011 Udostępnij Marzec 5, 2011 Domyślnie jest taktowany wewnętrznym RC. Zazwyczaj 1MHz. Jeśli chcesz zwiększyć, to musisz zmienić FUSEBITy. Tak samo jeśli chcesz dodać zewnętrzny rezonator. 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
bartek1333 Marzec 5, 2011 Autor tematu Udostępnij Marzec 5, 2011 Czyli, jak nie chce zwiększać to mogę nic nie wpisywać? [ Dodano: 05-03-2011, 21:52 ] Wgrałem do uC ten program: 'program przeżutnka RS $regfile = "m8def.dat" 'atmega8 Config Portd = Input 'port D ustawiony jako weście Config Portb = Output 'port b jako wyście Portd = 11111111 ' wszystko stan wysoki Portb = 11111111 Do 'pętla nieskończona If Pind.0 = 0 Then Portb.1 = 0 'jeżeli przycisk 1 wciśniety zaświeć led If Pind.1 = 0 Then Portb.1 = 1 'jeżeli przycisk 2 wcisniety zgaś led Loop End Gdy podłaczam napięcie do płytki stykowej dioda zaczyna szybko migać i co jakiś czas przestaje. Gdy wciskam przycisk odpowiedzialny za włączenie diody to miga mociejszym światłem a gdy drugi - odwrotnie. Co może być tego przyczyną? Proszę o odpowiedź Link do komentarza Share on other sites More sharing options...
swierkdeck Marzec 5, 2011 Udostępnij Marzec 5, 2011 Napisać o taktowaniu musisz, nie dlatego czy chcesz zwiększać taktowanie, lecz wtedy, gdy korzystasz z jakichś funkcji czasowych w programie (opóźnianie itd). To co napiszesz w bascomie dot. takowania ma tylko wpływ na działanie programu. Ale jak szybko będzie realnie działać, to definiujesz w fusebitach. Link do komentarza Share on other sites More sharing options...
bartek1333 Marzec 5, 2011 Autor tematu Udostępnij Marzec 5, 2011 To co napiszesz w bascomie dot. takowania ma tylko wpływ na działanie programu. Czyli przyczyną złego działania programu (post wyżej) mogło być to, że nie napisałem np. $crystal = 4000000 (chodzi o oscylator wewnątrz)? To jest tego przyczyna? Pozdrawiam Link do komentarza Share on other sites More sharing options...
Nawyk Marzec 5, 2011 Udostępnij Marzec 5, 2011 Co może być tego przyczyną? Przede wszystkim drgania zestyków. Możesz to rozwiązać programowo (np. bascomowe narzędzie debounce, choć nigdy z niego nie korzystałem), albo sprzętowo przez prosty filtr RC: Osobiście preferuję drugie rozwiązanie - chyba, że nie mam miejsca na płytce. Czyli przyczyną złego działania programu (post wyżej) mogło być to, że nie napisałem np. $crystal = 4000000 Jeśli nic nie zmieniałeś w fusebitach, to domyślnie m8 chodzi chyba na 1MHz. Musisz więc wpisać $crystal=1000000. Swoją drogą - mało ostatnio programuję w bascom, ale czy nie trzeba tam przypadkiem "zamykać" if'ów przez "end if"? Druga sprawa - liczby binarne zawsze wpisywałem zaczynając od "&B", rzeczywiście można to pominąć? Link do komentarza Share on other sites More sharing options...
mactro Marzec 5, 2011 Udostępnij Marzec 5, 2011 Tak na moje oko, jak dasz przed drugim if'em else, to będzie dobrze 🙂 Nawyk miga mu chyba też jak się przycisków nie dotyka, więc gdzie tu drgania? Jak już to możliwe, że nie ma podciągnięcia do masy/zasilania. Link do komentarza Share on other sites More sharing options...
bartek1333 Marzec 5, 2011 Autor tematu Udostępnij Marzec 5, 2011 Dzięki wam za odpwiedzi Nawyk miga mu chyba też jak się przycisków nie dotyka tak, dokładnie tak. Wspomnę jeszcze (chodź nie wiem czy to ważne), że posiadam taki programator: http://allegro.pl/nowosc-programator-isp-avr-usb-rohs-atmel-fv-i1479377550.html Dorobiłem sobie także płytke na której w podstawke wsadzam uC i przez kanda programuje. W Bascom w Options>programmer mam ustawiony External programmer, dalej AutoVrify,jako program wybrałem avrdude - gui, a parameter "use hex file" i tam wkleiłem coś z avr dude. Tylko dziwne (może tylko dla mnie) jest to, że gdy klikam Compile to niby się sprawdza a programator na zielono świeci. Dopiero gdy klikam "program chip">program to tam wyskakuje avrdude, klikam Execute i kontrolka w programatorze na czerwono się zapala (czyli wtedy programuje), potem wyskauje raport z kompilacji i są tam jakieś błędy (jutro sprawdze jakie). To tyle. Może się znajdzie rada :-> Pozdrawiam Link do komentarza Share on other sites More sharing options...
Nawyk Marzec 6, 2011 Udostępnij Marzec 6, 2011 Podłączyłem wszystko jak trzeba, wgrałem program i działa bez problemów. Z czego zasilasz układ? Może dodaj jakiś większy elektrolit między Uz a GND. Do programowania polecam SinaProg - wygodny interfejs i idiotoodporność w kwestii blokowania fusebitów 😉 Link do komentarza Share on other sites More sharing options...
bartek1333 Marzec 6, 2011 Autor tematu Udostępnij Marzec 6, 2011 A w konfiguracji portów użyłeś przed binarnymi &B ? Układ mam zasilany z programatora (jeśli się programuje), a na płytce z 3x paluszków. A ten Sina Prog to też sie konfiguruje z Bascom? I napisałem jeszcze program, który ma zapalić led, ale zachowanie jest takie samo jak przy tamtym i wyskakuje bląd w avrdude (coś takiego) doesn't target i że program nie odpowiada. Czy problemem może być sam mikrokontroler - spalony czy coś takiego.? I sprawdzałem jeszcze napięcia na uC pomiedzy Vz a gnd jest ponad 4V (tyle co baterie), a tam gdzie wychodzi led podaje mu ponad 2V. Już nie wiem, sprubuje tego Sina prog. Link do komentarza Share on other sites More sharing options...
Bobby Marzec 6, 2011 Udostępnij Marzec 6, 2011 Jeżeli target doesn't answer to prog nie może połąćzyć się z uC - sprawdź połączenia i podłączenie miso mosi, rst, sck i gnd. Link do komentarza Share on other sites More sharing options...
Nawyk Marzec 6, 2011 Udostępnij Marzec 6, 2011 Nic nie zmieniałem w kodzie, zgrałem ten ostatni, który podałeś. Ruszył od razu. SinaProg to nakładka avrdude - po prostu uruchamiasz, konfigurujesz i zgrywasz. Instrukcję obsługi znajdziesz w moich artykułach. Link do komentarza Share on other sites More sharing options...
bartek1333 Marzec 8, 2011 Autor tematu Udostępnij Marzec 8, 2011 Sciągnąłem tego sina proga, co jest na twojej stronie, Nawyk, ale wyskakuje błąd Unable to locate the labviewrun-time engine Więc pobrałem starszą wersje - 1.4.0.0 Podłączyłem programator, ustawiłem w sinaprog na USBasp uC na atmega8 ale nie wykrywa go: avrdude -C avrdude.conf -c usbasp -p m8 -q avrdude: error: could not find USB device "USBasp" with vid=0x16c0 pid=0x5dc Sprawdzałem miernikiem połączenia wiele razy, ale wszystko było dobrze. Czy może chodzić o jakieś sterowniki czy coś? Pozdrawiam i dziękuję za odpowiedzi Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »