Witam. Potrzebuję informacji na temat obsługi przerwań tego procka. Gdzieś wyczytałem, że procesory serii pic16 posiadają tylko jeden wektor przerwania! Jak w takim razie rozróżnić od jakiego układu nadeszło przerwanie!!! Bardzo proszę o pomoc.
PIC16 mają przerwanie wykrywające dowolne zbocze na 4 pinach jednocześnie.
Schematu nie widzę. Napisałem Ci już jakie tranzystory możesz tam zapakować. Kosztują <0,50PLN/sztukę w TME, więc tanio. W dokumentacji do wyświetlaczy sprawdź maksymalny prąd i na początek ogranicz prąd maksymalny do tej wartości (prawdopodobnie 20-60mA). Program do napisania od nowa. 1. Po co zewnętrzny prescaler, jeżeli licznik TIM0 ma wbudowany...
to przerwanie napewno powinno zostać w tym miejscu właczone? Zrobiłem to w obsłudze przerwania zewnętrzego. Popatrz na algorytm według którego postępuje.
W krokach parzystych wyświetlam cyferkę, a w nieparzystych wyłączam całość, by uniknąć efektu "ghosting" spowodowanego wolna reakcja tranzystorów. Co ciekawe, "ghosting" teraz jest nawet mniej widoczny niż w poprzednim kodzie gdzie wyświetlacz odświeżałem w pętli. Nie powinno go być wcale. Ale na początek trochę uprośćmy kod. Jeśli wchodzisz dp przerwania...
Konfigurujesz rejestry odpowiedzialne za działanie przerwań i obsługę przerwania w przypadku wystąpienia przepełnienia TIMER1. A gdzie masz zdefiniowaną funkcję obsługi tego przerwania?
Ty opierasz kod o klasy?. Powiesz, w jakim pliku mógłbym znaleźć ten zapis :TRISBbits.TRISB2?? W katalogu kompilatora są pliki nagłówkowe, mają one rozszeżenie *.h. Tam są definicje peryferii i rejestrów. Jeśli są tam definicje w oparciu o pola bitowe, to wtedy można użyć powyższego zapisu. Z tego co kojarzę, słowa konfiguracyjne są w innych plikach....
dobrze kombinujesz, calosc jest opisana w datasheecie. pozatym nie wiem czemu chcesz z przerwania uruchamiac glowna procedure, skoro wystarczy zebys w przerwaniu przelaczyl diode, przestawil jakas flage i ponownie przeszedl do trybu sleep. jak nastepne przerwanie przyjdzie, sprawdza flage, jesli ustawiona to gasi diode i znow to samo (przestawiajac...
Nie czuję zamysłu tego kodu. Jak już chcesz czyścić z powrotem flagę po tym jak się zmieni na 1, to czyść po tym jak się zmieni na 1... tzn: Licznik sprzętowy powiniem startować kiedy masz jedną zmianę zbocza sygnału mierzonego a wyłaczać się przy innej ( albo przy tym samym zboczu). A to też jest bardzo dobra uwaga i ja mogę dodać, że widziałem tego...
Dlaczego w przerwaniu RBIF ustawiasz licznik ? Zmien if (cnt == 400) na if (cnt >= 400) mozliwe ze ten warunek przy wielu przerwaniach "nie trafial" dokladnie w 400 ale przeskakiwal i zliczal do 64k
Przez diodę raczej nie płynie prąd większy niż ten, który płynął przez cewkę w momencie przerwania obwodu, czyli 1N400x na pewno wystarczy.
Uzywam kompilatora HI TECHA dla PIC16. W podprogramie obslugi przerwania uzywam wczesniej zdefiniowanej funkcji do ustawiania portu, tak jak ponizej: void interrupt INT(void) { if (RBIF) //RB7 RB6 changed clr_pin(PIN_A4); } Jednakze wyskakuje mi blad kompilatora:(472) non-reentrant function "_clr_pin" appears in multiple call graphs: rooted at "_INT"...
Więc wersja przerwania najprostsza do napisania: 1. Wyłączasz wszystkie serwa (większość jest wyłączona, ale od przybytku głowa nie boli) 2. Zwiększasz licznik o 1; 3a. Jeśli licznik jest nie większy niż ilość serw: - załączasz serwo nr = licznik - ustawiasz timer, aby następne przerwanie było za pożądany czas trwania impulsu do serwo nr = licznik 3b....
Witam. Mój kod obsługi przerwania: [syntax=c] static void interrupt ISR(void) { if (TMR0IF) { //Kod obsługi przerwania wykonujący się ~2ms TMR0IF = 0; } if (SSPIF) { //Obsługa SPI SSPIF = 0; } } [/syntax] Obsługa z MSSP ma dla mnie większy priorytet niż obsługa od Timera0. Nie mogę jednak zrozumieć zasady działania systemu przerwań w tym uC. Myślałem...
PIC16 a PIC18 to głównie różnica w rdzeniu (pic18 ma więcej instrukcji). Dodatkowo PIC18 posiadają bardziej rozbudowane moduły wewnętrzne np ECCP zamiast CCP. Co do zegara to on może być źródłem taktowania dla wykonywania instrukcji, ale także źródłem sygnału dla timera, usart, przetwornika ADC, modułu (E)CCP, i inny elementów które są zalezne od zbocza...
(at)ElektrodaBot podaj kod źródłowy w języku C na mikrokontroler PIC16, dekodujący sygnał DCF77. Założenia są takie, że przebieg z odbiornika DCF77 podawany jest na wejście przerwania zewnętrznego INT0 a program ma uzupełnić odpowiednią strukturę zawierającą pole daty i czasu z dokładnością co do sekundy. Program bez funkcji delay, ma działać jako maszyna...
Odpowiedzi jak zwykle na raty: SEI() PICe mają inne podejście do przerwań. Nic nie stoi na przeszkodzie abyś sam zdefiniował funkcję SEI() która wykona ustawienie INTCON.GIE = 1 Dodano po 15 Teraz podziel zadania na: - main() inicjujące procesor - main() while(1) pętla główna - przerwania Mam czas do 23:00
(at)ElektrodaBot napisz kod i2c dla mikrokontrolera PIC16F1526 i układu scalonego PCA9685 do sterowania serwomotorem. Wstępna ocena dostępnych informacji Dwie przykładowe odpowiedzi offline zawierają już solidny sterownik bare-metal dla: - funkcji master I²C na module MSSP PIC16F1526 - Podstawowa konfiguracja PCA9685 do pracy z serwomechanizmem 50...
Jak masz jakieś pojęcie o programowaniu to nie powinno być problemu. Najlepiej zrobić to na timerze i przerwaniach. Sam program byłby dosyć prosty w działaniu. Ja zrobiłbym tak. Przerwanie z timera przychodzi jakieś 100 000 razy na sekundę. Robisz 1 zmienną na liczenie przerwań i porównujesz z 2 zmienną która określa jasność świecenia. Przez wszystkie...
Z ciekawości ile udało Ci się zejść z prądem w trybie sleep ? (I na jakim układzie jeśli mogę spytać ). Ile? Ujmę to tak - mój wspaniały multimetr nie potrafi zmierzyć takich "wielkości" ;) A układ to 16F628A. W trakcie pracy podpięty LCD (bez podświetlenia), odpalony timer na full rozdziałce i przerwania z RB0 (kontaktron). Zegar wewn. 4MHz. Dodano...
Witam Chciałem włączyć przerwania zewnętrzne: ENABLE_INTERRUPTS(INT_RB) - jak dobrze rozumiem to są przerwania na liniach RB4-RB7 W obsłudze przerwania dałem tymczasowo proste włączenie odczekanie chwili i wyłączenie diody. Po uruchomieniu układu dioda cały czas się włącza i wyłącza. Coś jakby ciągle na którejś z linii RB4-RB7 pojawiało się przerwanie....
A może by tak jednak w "asm": [syntax=asm] ; ========================================... ; Deklaracje zmiennych ... ; ========================================... cblock 020h key_state ; stan switcha/y R1 ; endc ; ========================================...
Masz tam od zatrzęsienia operacji na znakach i ciągach... Kolego nie dramatyzuj ;) spacer: Odbieraj znaki w przerwaniu, po odebraniu w jednym ifie sprawdzaj czy NIE jest to znak CR dalej w tym ifie sprawdzaj czy NIE jest to LF. Jeżeli znak nie jest jednym z nich to znaczy że jesteś w tym ifie i zapisuj znak do bufora: bufor[i++]. Dalej w przerwaniu...
1. sprawdz sobie program na kontrolerze: ewentualne przerwania, timingi, i bufor z ktorego wysylasz dane. generalnie to najczestsze bledy. 2. hardware. zapewne przez max232. sprawdz polaczenia. 3. jak 1 i 2 na bank OK, to pozostaje oprogramowanie PC (jak sam pisales), sprawdz komunikacje jakims terminalem do obslugi COM'a. 4. kabel :)
W C to pisze programy dla PC:) Dla kontrolerow wole asembler. Moge sprawdzac rozkaz po rozkazie w sensie rzeczywistym, czyli rozkaz maszynowy. Nie musze sie zastanawiac jak mi C przerobil moje na maszynowe, bo przeciez program wynikowy jest w asemblerze (rozkazy i ich kolejnosc). ASM jest nieprzenośny czyli jesteś ugotowany przy próbie migracji np....
ale masz push'e i pop'y Właśnie że nie ma, jest stos sprzętowy do adresów powrotów a zmienne się przechowuje w pamięci albo na stosie softwarowym. To takie małe "dziwactwo" architektury PIC (przynajmniej w pic16 tak jest, w pic18 jest pewnie jakieś dodatkowe "udziwnienie")
Jeśli przeładowujesz timer bez sprzętowego buforowania rejestrów w przerwaniu, to jest to pierwszy z wielu powodów "rozjeżdżania" częstotliwości. Nie znam PIC18, ale podejrzewam kolejne powody: przekierowanie przerwania (a tym mi pachnie wywołanie "sethandler") może zajmować sporo czasu.
Witam, zaprojektowalem i zrobilem uklad na PIC16F628A, ktory odczytuje dane szeregowo z linii RA0 portu A i na podstawie odebranych danych steruje innymi wyjsciami (caly port B oraz linie RA1 i RA2). Konfiguracja portow: port A - 0x01, port B - 0x00. Podczas testow w ramkach danych przesylalem dane zawierajace w jednym z bajtow kolejne wartosci od 00...
A czy procki na rdzeniu 8051 atmela (z ISP) są równoważne z oryginałem? Jeśli chodzi o szybkość wykonywania instrukcji i pamięć RAM to tak, wszystkie bazują na oryginalnym 8051/8052. Natomiast posiadają często dodatkową pamięć EEPROM (obsługiwaną rozkazem movx) oraz interfejs SPI. 8051 nie ma - a przynajmniej Ja nie znalazłem - takiego fajnego darmowego(!)...
Myslałem że już jest odcedzone. W każdym razie to co jest tam wklejone działa tylko w pętli głównej gdzie ustawiane są wartości segmentów dig_, oraz w przerwaniu od T0 który steruje wyświetlaczem. [syntax=c] while(1) { dig_1=2; dig_2=1; dig_3=1; bits.LED_KW= bits.time5s; }[/syntax] Działają przerwania, tylko T0 bo reszta jest "zablokowana": [syntax=c]...
No LED w momencie przerwania sie nie zapala bo... jest juz zapalona! Program napisany jest niestety zle... Jesli juz chcesz by LED migala to zamiast CONFIG_PIN_LED = 1; napisz CONFIG_PIN_LED = !CONFIG_PIN_LED; Nie masz debuggera - jakiego kompilatora uzywasz? BF
Witam :) Tak jak obiecalem zamieszczam zrodelko. Troche przeanalizowalem example znalezione w sieci i program po modyfikacji dziala troche stabilniej bo juz nie wyswietla smieci i nie gubi sie. Problem jest w preskalerze!!! Niezaleznie jaka wartosc wpisze do OPTION 10000111 czy 10000000 to czas w jaki liczy do 99999 jest zawsze taki sam, a przeciez...
Witam robie obrotomierz na pic16f628 + czujnik halla. Chciałem do tego wykorzystać przerwanie z rb0 ale pinie cały czas jest stan niski(linia podłłączona przez rezystor 10k do zasilania). Pisałem juz kiedyś programy z przerwaniami na rb0 ale na 16f84, czy jest jakaś różnica? Jak zmierzyłęm multimetrem to między rb0 i gdn jest 40ohm ,wydaje mi sie że...
Mam trzy wskazówki, przetestuj kilka bliskich wartości dla SBRG, spróbuj większej prędkości BRGH=1 i kontroluj bity błędów transmisji. Pozatym nie potrafie wskazać błędu, wszystko wygląda OK. PS ja bym testował układ w postaci programu który odczytuje znak i wysyła go gdzieś, np na LED albo LCD, albo jeszcze lepiej na port szeregowy, a za przerwania...
http://obrazki.elektroda.net/87_12805142... Witam W tym poście chcę zaprezentować projekt, który zbudowałem w oparciu o procesor firmy Microchip PIC16F676. Jego zadaniem jest odmierzanie określonego czasu (jednego z dwóch do wyboru) i sygnalizowanie początku i końca jego odmierzania dźwiękiem buzera. Potrzebą dla zbudowania tego urządzenia...
Długo nie zaglądałem na forum i do tego zasilacza, a dzisiaj stwierdziłem że trzeba wypróbować metodę z podłączaniem pinów procesora do masy/VCC. I udało mi się za pierwsza próbą. Zwarłem na chwilę wyprowadzenie RB6 procesora do masy i przetwornica się włączyła. Jest to wyprowadzenie ewidentnie pod microswitcha. Kolejne zwarcia do masy włączają i wyłączają...
Niekoniecznie musisz to robić na przerwaniach. Robisz tak: - sprawdzasz czy wciśnięty jak tak to czekasz na przykład 10ms (eliminuje drgania styków) po czym sprawdzasz czy puszczony jak puszczony to znowu 10ms. - w czasie tych oczekiwań możesz robić coś innego w końcu to procek jest i 10ms to kuupa czasu :D Pozdrawiam
Witam patrząc na Twój listing ten program nie powinien działać 1.wyzwalasz przerwania bez zachowania rejestru W, oraz Status wiec ciągle zmieniany W nie pozwoli Ci w pętli głównej zrobić czegokolwiek. Musisz po przyjeciu przerwania zachować rejestr STATUS i W w_temp EQU0x70 ;musi byc pod tym adresem! status_tempEQU0x71 ;dlaczego przeczytaj w datasheet...
Jakbyś użył nazw symbolicznych rejestrów, znaczących etykiet to może ktoś by na to spojrzał Święta prawda. (at)pppoloppp: Jak bym ja tak napisał program to za kilka miesięcy próbując coś zmienić zaczynał bym pisać od nowa... Szczególnie, że kilka lat temu nabyłem MikroC i od tamtej pory Asemblera używam bardzo rzadko. Jedynie po napisaniu kodu sprawdzam...
Wydaje mi sie ze ten tryb wspomaga programowa obsluge Master I2C wlaczajac przerwania przy wykryciu Stop i Start. Przerwanie przy Stop i mozesz wtedy wejsc na magistrale jako master. "Master mode operation is supported in firmware using interrupt generation on the detection of the Start and Stop conditions. ....... The Stop (P) and Start (S) bits will...
Wklej caly program. #include<pic.h> #include <stdio.h> long int GlobalTime, time; #define INTERVAL 20 #define HOURS 3600 #define MINUTES 60 #define SECONDS 1 void ConsoleInit() { SPEN=1; TRISC5=1; TRISC4=1; RCSTA = 0x90; TXSTA = 0x20; // 0 SPBRG=51; // 51 } // OBSLUGA PRZERWANIA static void interrupt get_ir_int(void)...
W sekcji main programu ustawiasz: TRISB=1 to oznacza, że tylko RB0 jest wejściem, pozostałe piny RB7-RB1 są wyjściami. Przerwanie informujące o zmianie stanu pinu dotyczy tylko tych spośród RB7-RB4, które będą wejściami. W Twoim przypadku - żadnego. Spróbuj zmienić w/w instrukcję na: TRISB=240 (wartość binarna 11110000, hex F0). Nie koduję w mBasic-u....
No i znalazłem. [url=http://www.st.com/stonline/books/pd... NOTE - BENCHMARK ST72 vs. PIC16 Na stronie 10 jest tabela "Interrupt reaction time". Wynika z niej że czas jaki upłynie od momentu wystąpienia przerwania do rozpoczęcia procedury obslugi wyniesie 1-2 cykli + 2 cykle na skok w zależności czy aktualnie wykonywana instrukcja...
Zakładam, że program działa tak jak chcesz, a chodzi o optymalizację, niekoniecznie permanentną. Pierwsza uwaga dotyczy startu programu. Mimo, że w aktualnej wersji programu nie wykorzystujesz przerwań proponuję przesunąć kod programu (etykietę START) powyżej adresu zarezerwowanego na przerwania (4) zostawiając miejsce przynajmniej na skok do podprogramu...
A może najpierw układ sygnalizuje zmiane stanu wynikająca ze stanów nieustalonych przy włączaniu? Jeśli jest stan niski na tym wyprowadzeniu to sygnalizuje on wywołanie przerwania które trzeba skasować przez odpowiednią komunikacje z układem.
Witam wszystkich; Mam problem w tym picu 16f876 z przerwaniem TMR0 po przepełnieniu program napisałem w Picbasicu wygląda to tak uruchamiam timer0 on wyzwala przerwanie i chodzi w kółko jak by na stosie był zamazywany adres powrotu z przerwania i w pętli głównej nie da sie nic zrobić tak w skrócie to wygląda skończyły mi sie pomysły dlaczego tak sie...
Wybrałeś archaiczny i drogi uC nie mając pojęcia o jego strukturze i kompilatorze. A to błąd i teraz płacisz stresem. W załączniku znajdziesz pliki źródłowe programu dopasowanego do kompilatora XC8 pod MPLAB X. Jest tylko taki drobiazg: Nie mam pojęcia jak zdefiniować funkcję obsługi przerwania w tym programie. Typowe definicje nie działają, a jestem...
Witam serdecznie!! Potrzebuję uruchomić RS232 pomiędzy PICem a PC, do PC nic nie dochodzi, nawet 'krzaki' :/ Fragment kodu gdzie ustawiam RSa: void init_comms(void) { TRISC = 0x30;//ustawienie RC5, RC4 SPBRG = 25;//ustawienie baud rate 9600, przy 4MHz BRG16 = 0;//8-bit Baud Rate Generator BRGH = 1;//High speed SYNC = 0;//asynchroniczny...
Moim zdanie problem jest taki ,że na końcu przerwania nie ustawiacz flagi INTF=0; a jest to koniecznie do ponownego wywołania przerwania , innymi słowy wchodzi w przerwanie ale tylko raz.
Mam problem z obsluga przerwania (od lacza szeregowego) w PIC16F876A. Po wejsciu do przerwania zachowuje stan W, PCLATH i STATUS a po skonczeniu obslugi z powrotem je odtwarzam. Wszystko dziala w porzadku do momentu, gdy uzyje rozkazu goto - wtedy program sie wywraca. Dlaczego uzycie goto cos tu zmienia? Skok goto jest w obrebie kilku-kilkunastu rozkazow....
re ad2) to ma sens WDT był włączony zaraz przetestuje, EDIT: SUPER chodziło o WDT,dzięki wielkie re ad3) Opóźnień od przerwania nie ma, ale powrót z przerwania jest za wcześnie ? Czy to teżmogła być wina WDT? Mozejest jakiaś ograniczona pamięć dla przerwania? EDIT: Tu narazie tez nie zaobserwowałem problemów, czyli praktycznie też chyba chodziło o watchdoga.Dzięki...
Propozycja jest OK ale mój problem jest bardziej skomplikowany. PIC16 będzie jednoczesnie pełnił funkcję zegara RTC. Otwarcie obudowy ma go wybudzic z trybu SLEEP i następnie programowo skasować RAM. PIC musi wciąż działac jako RTC więc reset przy pomocy pinu MCLR odpada. Myślę jak to połaczyć żeby otwarcie obudowy ( przerwanie lub zwarcie obwodu )...
To opóźnienie wynika bezpośrednio z szybkości procesora(wejście do procedury obsługi przerwania trwa parę cykli), wiec zwiększenie szybkości spowoduje ze stan pinu zmieni sie szybciej.
Czas odpowiedzi na przerwanie o najwyższym priorytecie zależy od tego, ile czasu spędzi oprogramowanie przy zablokowanych przerwaniach. Jeśli oprogramowanie nie blokuje przerwań, a w rejestrze czasu odpowiedzi ustawi się wartość rzędu 25 lub więcej (co wynika z ew. złośliwego ale deterministycznego opóźnienia dostępu do pamięci i wolnych peryferiali),...
Jeszcze PEIE w INTCON
Witam. Uc 16f887 ma na porcie rb0 i rb1 pushbuttony ktore zwieraja je do masy. Oba te piny maja podciaganie do zasilania. RB0 nacisniety w dowolnej chwili ma zmusic uC do przeczytania stanow portow (np re0, re1, re2 i wiele innych) i zmiane dzialania w zaleznosci od wybranych ustawien. RB1 dziala inaczej, kazde kolejne nacisniecie pushbuttona powoduje...
Nie do konca: WDT robi reset, a reset budzi. Niby nie ma roznicy ale: - w czasie sleep instrukcja po sleep jest wczytana (prefetch) i w czasie resetu nie zostaje wykonana, tak jak mowisz jest tylko podczas przerwania i budzenia bez resetu. - znikaja dane w komorkach pamieci, a ja je niestety potrzebuje.
Witam, potrzebuję wygenerować przerwanie analogicznie do stworzonego w atmega8. W Atmega8 użyłem Timer1 tryb CTC, teraz chcę osiągnąć podobny efekt na pic16f1716. Może ktoś pomóc? [syntax=c] void Init_Timer1A(void) { TCCR1A = 0x00; TCCR1B =(1<<CS11) | (1<<CS10) | (1 << WGM12); //tryb CTC (WGM12), Prescaler = 64 (CS11,cs10) clk = 8Mhz...
Rozumiem. Chodzi o identyfikację najbardziej nieorzystnego przypadku a nie testowanie w trakcie. A czy tegon ie nie da zrobic rysując sobie (powinno byc to pewnie wczesniej) architekture programu w sensie wywowałń funkcji. Na to jak sie nałozy głebokość wywołań funcji w przerwaniach to powinno dac nie więcej niz 8 poziomów w sumie. Nie zrozumiałem z...
Dokładnie, nie znam za dobrze asm, a piców w ogóle, ale powinieneś robić to tak: początek przerwania 1. gasimy wszystkie wspólne zakończenia (katody/anody) 2. wystawiamy na linie segmentów kombinację odpowiadającą znakowi 3. zapalamy odpowiednie wspólne zakończenie dla kolejnego wyświetlacza koniec przerwania
PIC24 adresuje pamięć w sposób pośredni, zwiększając bądź zwiększając offset adresu. Ma kilka więcej instrukcji niż PIC16 i trzy, zamiast dwóch, sprzętowe breakpointy. Poza tym niewiele różni się od PIC16. Literówka? Układ 8051 to tak na prawdę nie jest rodzina układów – to konkretny element, ale jego nazwa stała się synonimem architektury, zestawu...
Witam Mam problem z konfiguracja i programowaniem przez PICkit3 w programie flowcode 4. Jak ustawić w tym oprogramowaniu żeby np PIC16F648A używał wewnetrznego generatora. Ustawiam typ uP: http://obrazki.elektroda.pl/9810803000_1... według pdf z flowcode ta konfiguracja wystarcza aby uP pracował na wewnetrznym kwarcu. "maluje" prosty...
Możesz wykorzystać nie przerwania ale flagi. Zaczynasz od wykrycia Start i odczytujesz co dzieje się na magistrali.
Oto program w którym zliczam w sekundach a chcialbym i minutach: unsigned char tick = 0; unsigned char relay = 0; unsigned char ten = 0; void Tmr1sStartAndRelayON (unsigned char t) { tick = 0; relay = t; RA0 = 1; //przekaznik ON TMR1IF = 0; //zerowanie TMR1L = 0xDC; //65536-3036=62500*8=500ms TMR1H = 0x0B; TMR1ON = 1; //licznik włączony...
Co do środowiska programistycznego to do atmeli jest AVR Studio, darmowe i bardzo dobre i ma dużo większe możliwości niż zachwalany MPLAB chociażby samą emulację procesora. wspaniale. MPLAB ma emulacje KAZDEGO procesora microchipa (PIC32, dsPIC rowniez) wlacznie z przerwaniami i niektorymi peryferiami (m.in. UART i cos tam jeszcze, mozna tez chyba...
Nie jest to zatem niemożliwe do wykonania. A tak z ciekawości, na jaki uC się zdecydowałeś? Na razie zatrzymałem się przy takim rozwiązaniu: 1. długi okres PWM (4 ms) powtarzany pięciokrotnie aby odpowiednio sterować serwa (okres 20 ms) 2. w przerwania od przepełnienia timera (raz na 4 ms) króciutka procedurka inicjacji PWM i licznia cykli do pięciu....
Ale rozmawiamy o CM0? Ja się tylko odniosłem do tego dokumentu, który przedstawiłeś, który jest kolejnym źródłem wprowadzania w błąd i pokazania jak to działa wspomniany przez Ciebie marketing. Widocznie specyfikacja do CM3 była wtedy równie dostępna i precyzyjna jak teraz do CM0. CM3 zajmuję się od 2007 cała dokumentacja była już wtedy dostępna, łącznie...
piti___: pic16f628a, i tak, pisze w hitech picc. W przykladowych programach z przerwaniami do tego kompilatora nie bylo tego o czym mowisz. don diego: a czy to ma znaczenie? Tak czy siak powinienem zczytac te kilkanascie bitow i one (choc niekoniecznie zgodne z tym co nadaje pilot) przeciez zawsze powinny byc takie same dla danego przycisku.
Cześć Taki problem napotkałem. Obliczenia czasu generowanego przez timer są trywialnie proste. Z wyliczeń jednak wychodzi mi jednak wartość zupełnie inna niż z pomiarów po zaprogramowaniu. Program wygląda tak #include <16F873A.h> #include <definicje.h> #fuses HS,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP #use delay(clock=20000000) #define...
mam taki problem: tworzę robocika mobilnego zajołem się już do niego mechaniką i po części elektroniką. jednak główne problemy napotkałem ze sterowaniem. planuje to rozwiązać tak: 1) w robocie mikrokontroler (16f84a) 2) wszystko podpięte pod kompa pod rs232 i tu sie zaczynają schody. może ktoś mnie poratować tutorialem (polski mile widzany lub angielskim-ostatecznie...
AVE... Nie musisz umieszczać dodatkowej pętli while(1) w pętli głównej, bo wszystko w pętli głównej będzie wykonywane ciągle. Ustaw przerwanie dla ADC i w pętli obsługi przerwania wartość odczytuj. W ten sposób mikrokontroler może robić inne, interesujące rzeczy czekając na pomiar. Mikrokontrolery z reguły są dużo szybsze od ADC. Co do MPLABX i XC8...
A zestaw rozumiem z przypadku, a nie ze świadomego wyboru. A już myślałem, że ktoś polubił PIC32 :/ Ja też lubię PIC32 - zająłem się nimi z tego względu, że wcześniej używałem PIC16 i 18 Microchipa, i w naturalny sposób ciekawiło mnie to, co oferują nowe 32 procki. Etap PIC24 przeskoczyłem, mam kilka sampli, ale dotąd leżą nie wykorzystane - choć podobno...
Witam chlopaki. Moj uC to 16f877. Na porcie rb0, rb1 sa 2 styczniki ktore zwieraja te piny do masy. Na portach jest ustawione slabe podciaganie. (weak pull-up). Przerwanie na zmiane stanu. Problem jest taki ze styczniki strasznie sieja w eterze. Okolo 4 zmian stanu przy wlaczaniu przez 50 ms i 7 zmian stanu przy wylaczaniu w 70 ms. Przerwanie uruchami...
Witam serdecznie. Czy mogę program napisany w ASM do PIC16F84A skompilowac i wgrać z powodzeniem do układu PIC16F873A oczywiście uwzględniając nóżki ? Program nie jest skomplikowany, używa jednego przerwania oraz trzy wejścia i współpracuje z LCD. Proszę o odpowiedzi. Pozdrawiam Witold P.
Ja również chcę liczyć czas a nie impulsy. ilość impulsow podalem jako wyjasnienie, ze stosując filtr 5us (nie powiem dokładnie co to jest za parametr ale chyba minimalny wykrywalny okres) rozrzut liczby naliczonych impulsow jest dosc duzy (w %) co mogloby swiadczyc o dużo krótszym okresie niz okres probkowania. Oczywiscie parametrem cechującym dany...
Nie mam już możliwości połączenia tego przewodowo, pozostaje jedynie droga radiowa. Znalazłem taki oto moduł "ASK/OOK 433.92MHz" lub "ASK/OOK 433.92MHz (RSSI)" w sumie to prawie to samo. pytanie czy to jest to czego szukam i czy za pomocą mikro-kontrolera PIC lub aTiny jestem wstanie zrobić odpowiedni układ. Jest tylko jedna linia , którą trzeba analizować...
Hmm, ale chyba PIC16F84A nie ma przetworników A/C, przynajmniej tak wynika z dokumentacji, zawsze na początku jest strona "reklamowa" proca gdzie są wymieniane jego układy wewnętrzne itd, i z tego wynika że on ma tylko Timer0, przerwanie INT0, przerwania z PB4-PB7 no i 5-bitowy PortA i cały PortB. Nawet patrząc na opisy I/O PortA/B nie znalazłem tam...
Możesz napisać coś więcej o samej przetwornicy od strony programowej? W jaki sposób jest powiązany pomiar napięcia ze sterowaniem mosfetem? Regulujesz wypełnieniem PWM aby zmienić napięcie wyjściowe. W przetwornicy podwyższającej (boost, step-up) napięcie wyjściowe jest ściśle powiązane z wypełnieniem. Do wykonanie przetwornicy sterowanej prze procesor...
Troche lopatologicznie napisane, ale lepiej nie umialem ;-) Acha i nie sugeruj sie wyprowadzeniami pinow, bo moj projekt jest oparty na tym temacie ale lekko przebudowany (+sekundnik). ;*****ustawianie nazw zmiennych i stalych**** ; ;XC = 3.2768 MHz ; 4 ; --------- = 819200 instrukcji/sekunde ; 3.2768MHz ; ; prescaler = 128 ; 819200 / 128 = 6400 = 256...
AVE... Przy kwarcu 20Mhz: Ustawiasz preskaler timera Timer2 na 1:16. Wartość rejestru PR2 ustalasz na 99. Postskaler ustawiasz na 1:5. Następnie zliczasz przerwania z flagą TMR2IF podnosząc wartość jakiejś zmiennej o jeden. Gdy zmienna będzie równa 625, to będziesz miał swoją sekundę... Przy kwarcu 4Mhz: Preskaler na 1:16, PR2 = 24, postskaler na 1:5,...
http://eng-serve.com/pic/pic_timer.html Abstrahując od tego, czy rzeczywiście potrzebujesz tej funkcji, to by ją zaimplementowac możesz użyć kalkulatora Timerów dla PIC, on chyba wspiera twojego PICa, a potem w timerze zwiększać licznik i zwracać go w funkcji milis. Pseudokod: [syntax=c] int c; // tylko sobie dobierz jednostki void przerwanie() { c++;...
szczerze mówiąc, to ja nie wiem, czemu to nie działa - do tego portu mam podpięte to co pisałem wcześniej (razem 2 wejścia, w tym jedno z obsługą przerwania). Przecież w tej obsłudze I2C podanej prze elektryka nie ma operacji na TRIS'ach .. to I2C nie sprawdza przecież ACK, ani nie odbiera danych, tylko je wysyła, więc nie wiem, co ma do tego RMW. ja...
Jako autor zacytowanego zdania wyjaśniam: Programuję w C od ponad 30 lat. Nie wiem, skąd pojawił Ci się pomysł, że nie znam języków asemblerowych - ja nic takiego nie napisałem. Programowałem i programuję (coraz mniej) w kilkunastu asemblerach, o 3 lata dłużej niż w C. Napisałem w tym czasie kilkaset tysięcy linii kodu asemblerowego, w tym dwa projekty...
w tym picu przerwania zaleca się robić na RB4, przy tym załączyć rezystory podciągające portu B i przycisk dajesz wtedy do masy Potem konfigurujesz port A jako wyjścia, dajesz obsługę monitorowania RB4 i gotowe :D wszystko w szczegółach znajdziesz w tym linku co kolega wyżej zapodał, łącznie z gotowymi plikami .asm
Mam takie pytanie, dlaczego rejestr roboczy W jak często spotykam w necie to jest odtwarzany po obsłudze przerwania w ten sposób? [syntax=asm]SWAPF W_TEMP, F SWAPF W_TEMP, W[/syntax] A nie na przykład w taki? [syntax=asm]MOVF W_TEMP, W[/syntax]
Z tego co czytam to można zrobić to następująco: 1. wycofałbym się z obu procesorów bo są za duże jak na ten projekt wystarczyłby w zasadzie jakiś malutki procesorek powiedzmy ATTINY12 (8pin) ale jest on droższy od np. AT89C2051. 2. sygnał z pedału hamulca podałbym poprzez rezystor a za rezystorem dioda zenera 4.7V (do tej diody równolegle też można...
Współczynników coeff i yn oczywiście musi być tyle ile tonów. A czy procedura przerwania będzie liczyła w pętli czy kolejno dla każdego tonu - Twój wybór. Albert
Nie pocieszyłeś mnie :/ ale dziękuję za odpowiedź, myślałem może żeby zrobić to na dwóch timerach, wyglądało by to mniej więcej tak: TMR2 pracował by normalnie z CCPR1L, a do TMR1 wpisywał bym wartość taką samą jak wypełnienie w CCPR2L, w ten sposób TMR1 odliczał by czas trwania wypełnienia CCPR1L, dawał przerwanie i startował CCPR2L, ten z kolei kończył...
Podczas obslugi przerwania wykonuje inkrementacje jakiegos tam rejestru GPR, ale czemu podczas obslugi kolejnych przerwan rejestr ten nie zwieksza sie ? Dodam ze jak wpisze konkretna wartosc to podczas przerwania wpisuje sie ona do rejestru, ale jak juz z kazdym przerwaniem chce zwiekszac zawartosc rejestru to nie da rady :( (programowalem kilka razy...
https://obrazki.elektroda.pl/9151185000_... Druga część artykułu o najtańszych nowych mikrokontrolerach z roku 2017. Ekosystem developerski Środowisko developerskie mikrokontrolera ma ogromny wpływ na jakość pracy z nim i w konsekwencji - na produktywność. Na to składają się różne czynniki – jakość IDE, dostępne biblioteki, płytki...
PIC o których rozmawiamy mają technologię XLP (eXtreme Low Power), teoretycznie w trybie Sleep można zejść do 30nA. A trybu Sleep można wybudzać zewnętrznymi przerwaniami lub peryferiami które pracują w trybie Sleep. Przykładowy kod jest w nocie aplikacyjnej AN1354. Do testów w TME masz dostępne PIC16LF1904 lub PIC16LF1906. Nieprodukowany już zestaw...
JESLI SZUKASZ INFORMACJI TO NIE CZYTAJ TEGO AKAPITU (; Padla inicjatywa stworzenia zestawu przyklejonych tematow, ktore odpowiadalyby na pytania powtarzajace sie czesto na forum - takie mini kompendium. Wypali to tylko jesli mnie wspomozecie, bo wszystkiego to ja nie wiem, a moje doswiadczenie jest bardzo mizerne. Dlatego prosze was o pomoc w tworzeniu...
Osobiście udało mi się napisać ten program, ale w innym środowisku, o wiele prostszym niż wiersz poleceń. O to przykład: (program napisany na uniwersalny sterownik z wyświetlaczem 2*16 znaków) Program zajął ok 7% flash-a Dobra jeśli już mamy porównywać to jedziemy: 1. Hmm ATMega32 jeśli tego typu urządzenie ma zużywać tylko 7% Flasha procesora to znaczy...
Witam. Jak na pierwszy zegarek w PICu całkiem nieźle. Sam kiedyś zrobiłem podobny projekt, ale bez dekoder - segmenty zasilane bezpośrednio z PICa i sterowane przez klucze tranzystorowe - zupełnie jak u Ciebie. Co do kodu, to PIC posiada bardzo fajny prescaler, co pozwala uzyskać przerwanie co 32,768kHz/256/128 , co daje wynik 1s. Mój program działał...
AVE... (at)Nsvinc... Zrobiłbym to tak(na PIC16F785): 1. Ustaw przerwanie pinu na zbocze narastające. 2. Gdy pojawi się zbocze narastające: - zresetuj flagę przerwania; - ustaw przerwanie pinu na zbocze opadające; - ustaw preskaler timera; - włącz timer sprzężony z głównym zegarem. 3. Gdy pojawi się zbocze opadające: - zatrzymaj timer; - zresetuj flagę...
Przerwanie źle działa - reaguje n zmianę stanu jednak tylko raz na kilkanaście zmian. Jeżeli uruchamiam procesor ze stanem wysokim na wejściu INT a INTEDG = 0 (zbocze opadające) to po starcie procedura obsługi przerwania jest wywoływana. Jeżeli jest tam zero to po starcie nie wchodzi do procedury obsługi. Przerwanie kiedy procesor pracuje wywoływane...
Muszę mieć 4 wspólne dla LCD. Problemem jest nie to że muszę obsłużyć wszystkie segmenty ale te które są używane. Z pomiarów analizatorem wychodzi mi ok 67bit. Próbuję uruchomić przerwanie INT ale działa mi sporadycznie - procedura jest wywoływana raz na kilkanaście wciśnięć przycisku podłączonego do tego pinu. Wyłączyłem wejścia analogowe, wszystkie...
http://obrazki.elektroda.pl/1404710300_1... Niniejszy projekt przedstawia system zdalnego sterowania ośmioma urządzeniami pracujący w podczerwieni. Kody sterujące przesyłane są w formacie RC5. Częstotliwość nośnej wynosi około 38 kHz. Nadajnik podczerwieni zasilany jest baterią CR2016 o napięciu 3 V. Aby wydłużyć czas pracy baterii procesor...
Nie zniechęcisz mnie niczym. O inteligentnym domu myślałem, zanim takowe pojęcie się pojawiło. Dzięki zaawansowanej elektronice, teraz mogę spokojnie sobie realizować. Nie spieszę się z tym, ponieważ też mam ważniejsze rzeczy do roboty. Wracając do komunikacji, twój system komunikuje się coś w rodzaju standardu RS485. W moim przypadku wymagany jest...
AVE... Jakiego PICa konkretnie chcesz użyć? Zasada pomiaru jest dość prosta: najpierw ustawia się któryś z timerów, by odmierzał 40 sekund i po odmierzeniu wywołał przerwanie. Potem tworzy się pętlę, która w nieskończoność sprawdza stan wybranego przez Ciebie pinu. Gdy jest tam logiczna jedynka, to dodajesz 1 do zmiennej. Gdy timer skończy zliczać czas,...
multimetr pic16 pic16 pickit microchip pic16
zerwana plomba instrukcja scania automapa głosy
17mb110 ves315 podlaczenie czujnika
Bezpiecznik regulacji świateł Audi TT 8J 2010 2.0 TDI Radio Panasonic CQ samoistnie się przełącza