pleses Opublikowano 9 Lutego 2007 Udostępnij Opublikowano 9 Lutego 2007 Widząc pewne zainteresowanie tematyką postanowiłem założyć nowy temat. Pomysł z mikrokontrolerami urodził się przy okazji DAF'a, gdzie takowe bedą służyły za sterowanie świateł, ale zastosowań jest mnustwo! Dość powiedzieć, że w najprostszych wykonaniach tych układów masz 2 nóżki układu scalonego zarezerwowane jako zasilanie i masa, a pozostałych 6 możesz prawie dowolnie oprogramować! W sumie to Ty decydujesz co układ bedzie robił, a nie szukasz scalaka do Twojego zastosowania. Od razu mówie, że nie bedę robił za eksperta, bo w temacie siedzę raptem drugi tydzień i wciąż się uczę. Natomiast tą drogę jaką już przeszedłem chętnie opiszę. Niestety należy zacząć od zakupów :-( i to tym większych czym człowiek ma mniej kolegów, od których może cośtam pożyczyć: - na początku miła niespodzianka - oprogramowanie jest za darmo - wspaniały wielemogący program MPLAB (edytor, debugger, emulator i inne bardzo przydatne funkcje) producent PICów (firma MICROCHIP) udostepnia do pobrania na stronie: http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en019469&part=SW007002 - programator: jest ich wiele, osobiście zakupiłem JuPIC'a w: http://ajpic.zonk.pl z uwagi na pełną zgodność z MPLABem w tej samej firmie zakupiłem mikrokontrolery 12F675 - płytka uruchomieniowa: zakupiłem dwie (ZL3PIC i ZL4PIC) w: http://www.kamami.pl/?id_prod=6462 tej drugiej narazie nie miałem okazji użyć i chyba jeszcze długo nie użyję. - i chyba rzecz najważniejsza - podręcznik: "Mikrokontrolery PIC12Fxxx w praktyce" Autor: Stanisław Pietraszek: http://www.kamami.pl/?id_prod=6534 W książce można znaleźć kilkadziesiąt gotowych modułów aplikacji, opis procesora od A do Z a ponadto polski opis programu MPLAB i płytki uruchomieniowej ZL3PIC :-) Jak już to jest można rzucać się na głęboką wodę - warto postawić na monitorze zegarek - nie wiadomo kiedy uciekają godziny i to stadami :-) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
olo Opublikowano 9 Lutego 2007 Udostępnij Opublikowano 9 Lutego 2007 Czy zdobywanie wiedzy i nasze hobby musi tyle kosztować ? Mój rzut na głęboką wodę programowania PIC-w zacznę na raty i kupie książkę. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Gość tom_tom Opublikowano 9 Lutego 2007 Udostępnij Opublikowano 9 Lutego 2007 Śledzę temat. Proszę o więcej. Proszę także o przeczytanie mojego posta na temat Li-Polek dla początkujacych. Licze na uwagi, komentarze. http://www.szabatowski.com/forum/viewtopic.php?t=955&highlight= Tomek Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pleses Opublikowano 9 Lutego 2007 Autor Udostępnij Opublikowano 9 Lutego 2007 Książka i darmowy program MPLAB, to całkiem niezły początek programów popiszesz, wirtualnie potestujesz, a zajdzie ochota, to zawsze możesz na początek podesłać do mnie program i Pica, to Ci zaprogramuję i odeślę. A teraz do rzeczy. Przedstawiam dość użyteczny program, który mierzy długość impulsu z odbiornika RC (w ilości cykli maszynowych) i zapisuje do własnej pamięci EEPROM. Potem wystarczy przeczytać zawartość EEPROMA, wyniki uśrednić i już wiadomo w jakich zakresach porusza się drążek. Ten program może potem stanowić część oprogramowania regulatora bądź miksera. Mierzony kanał podłączyć do wejścia GP3. Jeśli podłączysz diodę do wyjścia GP2, to zaświeci ona gdy pomiar się skończy - trwa około 1,5 sekundy i dostajemy h'3F' wyników w postaci 2 bajtów - wysokiego i niskiego. ; konfiguracja procesora list p=12F675 ;typ procesora __config _INTRC_OSC_NOCLKOUT & _MCLRE_ON & _WDT_OFF #include p12f675.inc movlw .07 ;wylaczenie komparatora i A/C movwf CMCON bsf STATUS, RP0 clrf ANSEL bcf STATUS, RP0 clrf GPIO ; deklaracje IO #define tx_in GPIO, 3;linia z sygnalem RC #define led GPIO, 2;linia z dioda ; deklaracje rejestrow cblock h'20' T1_L, T1_H TX_OUT, EE_ADR EE_DATA, LICZ endc clrf EE_ADR movlw .63 movwf LICZ glowna call pom_czas bcf STATUS, RP0 movf T1_L, w movwf EE_DATA ;przeslanie mlodszego bajtu do komórki o adresie 2n call ee_write ;wyslanie do EE incf EE_ADR ;nastepny adres EEPROM movf T1_H, w movwf EE_DATA ;przeslanie starszego bajtu do komorki o adresie 2n+1 movwf EE_DATA call ee_write ;wyslanie do EE incf EEADR ;nastepny adres EEPROM decfsz LICZ goto glowna goto stop pom_czas bcf STATUS, RP0 bcf INTCON, GIE ;wylacz przerwania bcf T1CON, TMR1ON ;wylacz licznik1 clrf TMR1L ;zeruj bajt mlodszy licznika clrf TMR1H ;zeruj bajt starszy licznika st_0 ;czekaj na 0 btfsc tx_in goto st_0 st_1 ;czeka na zbocze + btfss tx_in goto st_1 bsf T1CON, TMR1ON ;odpal licznik st_2 ;czeka na zbocze - btfsc tx_in goto st_2 bcf T1CON, TMR1ON ;zatrzymaj licznik movf TMR1L, w movwf T1_L movf TMR1H, w movwf T1_H return ee_write bsf STATUS, RP0 movf EE_ADR, w movwf EEADR bcf STATUS, RP0 movf EE_DATA, w bsf STATUS, RP0 movwf EEDATA bsf EECON1, WREN ;zezwolenie na zapis bcf INTCON, GIE ;wylaczenie przerwan movlw h'55' movwf EECON2 movlw h'aa' movwf EECON2 bsf EECON1, WR ;rozpoczecie zapisu btfsc EECON1, WR ;czy zakonczono zapis goto $-1 bsf INTCON, GIE ;wlaczenie przerwan bcf EECON1, WREN ;wylaczenie zezwolenia na zapis bcf STATUS, RP0 return stop bsf STATUS, RP0 bcf TRISIO, GP2 bcf STATUS, RP0 bsf GPIO, GP2 end Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
KJ Opublikowano 9 Lutego 2007 Udostępnij Opublikowano 9 Lutego 2007 Witam, To mój pierwszy post na forum. Jeżeli chodzi o książkę PIC 12fxxx to faktycznie jest to pozycja godna polecenia wszystkim początkującym. Znam osobiście jej autora - ma on pokój dwa piętra wyżej od mojego. Jest to naprawdę niezły specjalista od mikrokontrolerów firmy Microchip. jeżeli chodzi o programator JuPIC też takiego używam. Według mnie jest on najlepszy z dostępnych u nas. Oprócz programatora JuPIC używam ICD2 na USb oraz ICE 2000 też firmy Microchip. W swojej pracy zawodowej oraz modelarskiej korzystam z bardzo szerokiej gamy mikrokontrolerów: PIC12F675,12F683,16F88,16F877,18F452 i wielu innych. W swoich projektach wykorzystuję kompilator języka C firmy CCS. Jest to dla mnie ogromna wygoda ponieważ w łatwy sposób mogę przenosić oprogramowanie między mikrokontrolerami. Poniżej pare moich ostatnich dokonań: http://www.epheli.pl/index.php?name=PNphpBB2&file=viewtopic&p=23315#23315 http://www.epheli.pl/index.php?name=PNphpBB2&file=viewtopic&t=1848&highlight=polskie+%BFyro http://www.rcauto.pl/forum/viewtopic.php?t=12428 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pleses Opublikowano 9 Lutego 2007 Autor Udostępnij Opublikowano 9 Lutego 2007 A wrazieco pomożesz nam raczkującym? Osobiście deklaruję nie nadużywać cierpliwości :-) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
KJ Opublikowano 9 Lutego 2007 Udostępnij Opublikowano 9 Lutego 2007 Oczywiście jeżeli nie będzie to wymagało pisania softu w ASM Ostatni program jaki pisałem w asm to było na komputer AMIGA 500. Polecam również forum poświęcone PIC'om : http://www.ekiert.com/cgi-bin/yabb/YaBB.pl?board=pic Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pleses Opublikowano 9 Lutego 2007 Autor Udostępnij Opublikowano 9 Lutego 2007 No to następny przydaś. program odejmuje od dwubajtowej liczby (zapisanej w rejestrach LH i LL) dwubajtową liczbę (RH i RL). Wynik obrazuje w postaci zaświecenia się jednej z 3 diod (ale przecież może robić cokolwiek innego). Tym razem podaję już jako sam goły rogram bez deklaracji tego wszystkiego na początku (wyjścia proszę zdefiniować jako "plus", "minus", "rowne"). Po co to? Ano jak zajdzie potrzeba porównania tego co przyjdzie z odbiornika RC z jakimiś konkretnymi ustawieniami na które PIC ma reagować. KJ - proszę się nie śmiać ;-) ;==================PROGRAM====================== movlw b'00001000' movwf LH movlw b'00001000' movwf RH movlw b'00001001' movwf LL movlw b'00001000' movwf RL movf RH, .0 subwf LH btfss STATUS, C goto ujemny btfss STATUS, Z goto dodatni movf RL, .0 subwf LL btfss STATUS, C goto ujemny btfss STATUS, Z goto dodatni goto zero dodatni bsf plus goto koniec ujemny bsf minus goto koniec zero bsf rowne koniec ;============================================ end Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
KJ Opublikowano 9 Lutego 2007 Udostępnij Opublikowano 9 Lutego 2007 To ja może też dam przykładzik ciekawego układu. Do wejścia RX podłączamy sygnał z aparatury - dowolny kanał. Układ mierzy szerokość takiego impulsu i pozwala w zależności od tego sterować czymkolwiek np. LED'ami. Pomiar szerokości impulsu realizowany jest na przerwaniu od zmiany stanu na pinie RA_5. //Przełącznik // ________ // VDD -|1 8|- GND // Rx -|2 7|- tu może być LED // LED -|3 6|- tu może być LED // reset -|4 5|- tu może być LED // -------- //############################################################################ #include "12f675.h" #device adc=10 #use delay(clock=4000000) #fuses INTRC_IO,NOWDT,MCLR,NOPROTECT,NOBROWNOUT,PUT long timet1; //############################################################################ // obsługa szerokości impulsu na przerwaniach #INT_RB rb_isr() { disable_interrupts(INT_RA5); if(input(PIN_A5) == 1) // jeżeli stan wysoki set_timer1(0); if(input(PIN_A5) == 0) // jeżeli stan niski timet1 = get_timer1(); // szerokość impulsu output_low(PIN_A4); enable_interrupts(INT_RA5); } //############################################################################ void main() { setup_adc_ports(0); setup_adc(ADC_OFF); setup_comparator(NC_NC_NC_NC); //musi być setup_timer_1(T1_INTERNAL|T1_DIV_BY_1); setup_vref(FALSE); set_tris_a(0b00101000); // 1 = wejścia : 0 = wyjścia timet1 = 0; // wyzerowanie "czasu" enable_interrupts(INT_RA5); enable_interrupts(GLOBAL); output_high(PIN_A4); delay_ms(1500); output_low(PIN_A4); while(1) { if(timet1 >= 1500) //zalącz LED'y { output_high(PIN_A0); output_high(PIN_A1); output_high(PIN_A2); output_high(PIN_A4); } else //wyłącz LED'y { output_low(PIN_A0); output_low(PIN_A1); output_low(PIN_A2); output_low(PIN_A4); } }//while }//main Polecam również mój artykuł w RC Przegląd Modelarski z grudnia 2005 "Układ Fail-Safe". Opisałem tam budowę układu, którego zadaniem jest reakcja w przypadku zaniku sygnału z nadajnika lub w przypadku wystąpienia zakłóceń. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
modelmaniak Opublikowano 9 Lutego 2007 Udostępnij Opublikowano 9 Lutego 2007 Ostatnio stałem się posiadaczem schematu i oprogramowania interfejsu USB opartego właśnie na jakimś PIC'u pasującego do Reflex'a oraz Aerofly pro... jak ktoś chce to wyślę na maila... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PiotrK. Opublikowano 11 Lutego 2007 Udostępnij Opublikowano 11 Lutego 2007 polecam stronę Olivera Spruta (po niemiecku), który zresztą jest również modelarzem: http://www.sprut.de/ można tam znaleźć: 1.opisy typoszeregów z wyjaśnieniem różnic 2.podstawy, omówienie struktury PiCów 3.podstawy programowania w Assemblerze z przykładami; opis poleceń języka 4.projekty programatorów i płytek etstowych 5.bardzo dobre oprogramowanie do programatorów np PBrennerNG (http://www.sprut.de/electronic/soft/pbrenner/pbrenner2.htm) sam popełniłem na podstawie projektów Spruta programator pod LPT na WinXP (Brenner5); działa bez zarzutu, a koszt budowy to mniej niż 10 złotych (no chyba, że ktoś chce sobie kupić specjalną podstawkę pod układ scalony za 40 PLN...); w międzyczasie pojawiła się wersja pod USB (Brenner8) na stronie jest m.in. opis urządzenia zapisującego dane lotu (wysokość w funkcji czasu) i mnóstwo innych ciekawych rzeczy... polecam stronę, warto zajrzeć! pozdrawiam Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
KJ Opublikowano 11 Lutego 2007 Udostępnij Opublikowano 11 Lutego 2007 Jeżeli chodzi o mikrokontrolery PIC to polecam kompilator C firmy CCS www.ccsinfo.com oraz ich forum www.ccsinfo.com/forum Wadą tego kompilatora jest to że nie jest on darmowy. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Zarchiwizowany
Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.