Jak nie ma zworek szukaj w BIOS/UEFI opcji ErP/EuP Ready.
Uruchom przerwanie od Countera (najlepiej od porównania wartości zliczonej z ustawioną) i zmień stan portu w podprogramie obsługi przerwania lub prościej, ale mało elegancko zmień [syntax=basic4gl]If Counter1 = 100 Then ...[/syntax] na [syntax=basic4gl]If Counter1 >= 100 Then ...[/syntax] Nie tak jest to, że w chwili zliczenia setki nasz if może się...
Witam! Dopiero zacząłem swoja zabawę z mikrokontrolerami niejako zmuszony, lecz również i trochę z własnej woli. Otóż dostałem zadanie i nie będę Wam ukrywał nie wiem w ogóle jak się za nie zabrać. Zadanie to: stworzyć oprogramowanie dla mikrokontrolera AT89S52 zmieniające stan portu P1 z 0xF0 na 0x0F . Na pewno dostanę od Was naganę, że poszukuję gotowca,...
Pomiędzy zmianą stanu portu B, a pierwszym odczytem portu PIN wstaw koniecznie nop - problemem nie jest twój program, lecz synchronizator portów w procesorze, który wprowadza pewne opóźnienie. Przejrzyj notę katalogową dokładnie.
Czy jest jakis prosty sposb na to aby w petli głownej do...loop mozna bylo co kilka seund zmienic stan danego portu ? Czy nalezy skorzystac z np incr i za kazdym razem kiedy bedzie rozpoczynala sie petla bedize sie zwiekszala jakas zmienna ktora przy pewnej wartosci "cos robi" Nie chodzi mi o dokladne odcinku czasowe tylko np mruganie diody. Czy mozna...
Śmiem twierdzić, że w (0<<ISC11) | (1<ISC10) jest błąd, powodujący, że wyrażenie to ma wartość równą 1 (podczas gdy powinno mieć wartość równą 4). Jeśli flaga jest ustawiana na zbocze, to w kodzie głównym powinny występować jakieś opóźnienia albo zmiana algorytmu, bo inaczej flaga zostanie sprawdzona raz - będzie ustawiona,...
ok..znalazłem przypadkiem swój temat na który nikt nie odpowiedział wiec skoro już wiem co i jak to uzupełnię by inni mogli skorzystać. Aby zaladować program do RAMu (uzywając IARa): 1) należy wskazać Linkierowi w zakładce config plik ADuC7026_RAM.xcl U mnie wygada to tak: $TOOLKIT_DIR$\examples\AnalogDevices\Sup... 2) W ustawieniach...
No jak masz kwarca 16MHz, to tylko 16MHz może być. No chyba że to będzie ATMega168, to wtedy tak. Bo ATMega168 ma preskaler głównego zegara. Jak chcesz 10us, to tylko assembler i kwarc 16MHz.
Owszem, pewnie po zmianie czasu działałoby lepiej. Ale wiesz, warto uczyć się na doświadczeniu innych. Mnie kiedyś ten sposób pokazał na elektrodzie, przekazuję go więc dalej.
Hej, Testowałem oprogramowanie układowe openbk7231T na niektórych modułach WB2S, które leżałem. Ustawienie portu I/O przez MQTT działa, ale zmiana stanu portu (przyciskiem) nie wyzwala odpowiedzi mqtt. Czy czegoś mi brakuje, czy po prostu nie zostało to jeszcze zaimplementowane? Mogę więc włączyć światło, ale chcę dodać czujnik ruchu, który wyśle mi...
Może uszkodziłeś PortA przez to ze wczesniej nie miałeś napiecia na AVCC ale raczej w to watpie, sprawdzales na innym porcie? Po pierwsze sprobuj zapalic zwyklego LEDa na kazdym pinie tego portu.
Jeśli ustawisz jako wejście, to za zmiane stanu odpowiada układ który do niego dołączysz.
Zrób coś w tym stylu: #include <avr/io.h> #include <util/delay.h> static uint8_t kolo[4]; static const uint8_t maski[4] = {_BV(0), _BV(1), _BV(6), _BV(7)}; static const uint8_t wszystkie_maski = _BV(0) | _BV(1) | _BV(6) | _BV(7); int main(void)...
Nie mam pojęcia po co chcesz pchać tutaj uC chyba, że jest to w ramach szkolenia. Co do schematu, jeżeli zamierzasz użyć atmegi należy przerobić trochę schemat. Program nie ma prawa działać, gdyż nie ma najmniejszego sensu. uC po trzykrotnym wykonaniu pętli pozostanie w stanie Portd.0 = 1, Portd.1 = 1. Masz tutaj kawałek kodu z opisem, przetestuj go...
Portem usatwiasz sobie stan logiczny wyjscia. Czyli robisz sobie konstrukcje typu: if(warunek) { tu cos tam robi, jakis instrukcja np właczenie lub wyłączenie portu zmiana stanu partu itp... } Program jest uniwersalny tzn odczytuje kody wysyłane przez pilot i je zwraca. W warunku wpisujesz sobie ze jezeli odczytany kod odpowiada przyciskowi "X" to on...
Załóżmy że do portu będzie podłączony przekaźnik i rezystor. według mnie "port się spali" (za duży pobór prądu) albo przekażnik nie zadziała (zależy to od rezystora). Przeanalizuj program jaki umieściłem kiedyś w innym poście program on_off; uses crt; var stan: byte; p: char; begin repeat p:=readkey; write(p); if p='1' then begin...
Witam Mam pytanie dotyczące zmiany kierunku pracy portów . A konkretnie, czy zmiana stanu portów z wejściowych na wyjściowe w pętli nie uszkodzi mikro kontrolera ? Pozdrawiam
wszystko jest możliwe ;-) nawet przypadkowa zmiana sygnatury procesora ;-)
Zamienia na przeciwny stan końcówki portu lub zawartość zmiennej bitowej. Składnia: TOGGLE pin gdzie: pinzmienna typu Bit, lub nazwa końcówki portu. Opis: Za pomocą instrukcji TOGGLE można szybko zmienić stan końcówki lub zawartość zmiennej bitowej na przeciwny. Dla przykładu, gdy końcówka portu steruje przekaźnikiem, który aktualnie jest w stanie OFF...
Witam, Naniosłem poprawki. Spróbuj czy działa. Pozdrawiam JarekC
Myrek1: DMA wyzwalasz timerem, nie zmianą stanu portu Tim9 nie ma możliwości wyzwalania, o czym już pisałem 2 razy, więc nic z tego (uprzedzam, że zmiana timera nie wchodzi w grę z różnych przyczyn). A jeśli chodzi o DMA, to tak jak pisałem chyba nie ma dostępu do BB.
Dostęp do rejestrów na AHB to 2 cykle, czyli dla 120MHz wszystko co da się osiągnąć czysto teoretycznie i sprzętowo przez DMA to 30MHz (zegar - wypełnienie 50%). Programowo zmiana stanu portu będzie trwała 2 cykle + czas wykonania instrukcji.
WItam Zgadzam się z wypowiedzią Fantoma Zdarzenie onClik wywołuje driver myszki a nie zmiana stanów portu... mysz może być na rs232, Usb, ps2..... Zajrzyj na prcedurkę GetModemStat().... jest tam kontrola lini rs232.
Problem rozwiązałem dużo wcześniej ... a teraz znalazłem czas żeby wyjaśnić. Oczywiście problem tkwił w programie. W etykiecie "posow" w pętli za każdym razem wyświetlam zmienne "I" oraz "X" - zmiana stanu portu B.0 ograniczona była czasem wyświetlania zmiennych na LCD.
Hehe, przeanalizuj dokładnie Twój ostatni programik i odpowiedz sobie jeszcze raz na pytanie jak on właściwie działa :) ...jak ograniczyć ruch diody dosłownie na 4 pinach. Tu mamy przesuwanie 2 diodek - "00010001"... Wkradł mi się mały błędzik :) W swoim programie pobierałem dane z linii Data i były to tylko bity 0...3 dla silnika bipolarnego natomiast...
Wg. mnie max. to 2 Mb/s. Bardzo duże tłumienie .Spowodowane z pewnością odległością od centrali jak i stanem kabli złączek itd.
Zacznij od tego: http://www.nongnu.org/avr-libc/user-manu... Oczywiście jeśli ma to być AVR. W main trzeba skonfigurować rejestry timera-w każdym z procesorów są to nieco inne rejestry- ale dość podobne. W tych rejestrach ustawiasz prescaler, tryb pracy timera- jest ich sporo- zacznij od najprostrzego- i zezwolenie na obsługę...
nawet jak dam bez delay (sama zmiana stanu portów) , to na oscyloskopie musiałby być szybki prostokąt, a nie ma nic, totalne nic... dałem już drugi procek ,żeby wyeliminować jego uszkodzenie i bez skutku. używam Avrstudio 4.18 build 716 , kompilator taki jaki się zaistalował razem z nim chyba ?? nie wiem
Witam ! Dziękuję wszystkim za podpowiedzi i sugestie. Skoro się nie da w ten sposób wykonać generatora to chyba faktycznie pozostanie mi pobawić się zmianą stanu portu ( np OC1B ) ze sprawdzaniem stanu wyjścia OC1A ( coś na zasadzie OCR1B=not OCR1A ). Rozwiązania z inwerterem chciałbym uniknąć ze względu na ilość układów scalonych.
Jeśli podasz na bramkę 5V to także wentylator będzie się kręcił. Musisz tak wykombinować żeby zmiana stanu portu powodowała pracę pracuje - nie pracuje. Na początku nawet nie potrzebujesz PWM i zmiana stanów może trwać np. 2s. A jeśli interesuje cię gotowe rozwiązanie to dodaj jeszcze jeden tranzystor i rezystor podciągający bramkę tranzystora do 12V....
Jezeli ma być przerwanie wywołane zmianą stanu portu, to ja proponuje uzyć przerwania int2 (przerwanie zewnętrzne) . PO co cyklicznie srawdzać port kiedy mozna sprawdzać tylko wtedy kiedy potrzeba(byla zmianaportu :)). Zobacz to: http://www.elektroda.pl/rtvforum/topic69... Tu masz schemat klawiaturki matrycowej wraz z wykrywaniem zmiany :) Pozdrawiam.
Witam Zerknij [url=http://www.elektroda.pl/rtvforum/to... nie jest to rozwiązane jak napisałeś, choć można się doszukać pewnego podobieństwa. To co opisałeś to zmiana kierunku transmisji na magistrali 1wire, a nie zmiana jej stanu. AVR mają porty (można sterować każdym bitem niezależnie) w których trzeba wprost określać kierunek przesyłania...
Witam, Jakiej częstotliwości masz kwarc? Przy założeniu ,że używasz 12MHz to jeden cykl zegara wynosi 1mikrosekundę. Zmiana stanu portów następuje co 40*(500+500)=40000cykli zegara= 40ms, czyli częstotliwość migania wynosi 1/(40ms+40ms)= 12,5Hz. Przy takiej częstotliwości zobaczysz tylko lekko przygasającego LEDa. Pozdrawiam JarekC
Jeżeli PORTA leży w obszarze IO i instrukcji sbi/cbi to łatwo problemu uniknąć zmieniając na raz tylko jeden bit w porcie. W przeciwnym przypadku tak jak zrobiłeś dostęp do PORTA należy w głównej procedurze realizować atomowo. Dzieje się tak dlatego, że zmiana stanu portu realizowana tak jak opisałeś powoduje odczyt jego stanu, zmianę i zapis nowej...
niestety mój programik to jednokanałowy PWM. Generalnie zasada działania jest taka: Wartosc wypelnienia wpisywana jest do rejestru R3. W moim przypadku odbywa się to w konfiguracji wstepnej ukladow mikroprocka. Jenak umieszczajac w petli glownej fragment kodu powodujacy inkrementację lub dekrementację R3 w reakcji na dzialanie uzytkownika (wcisniecie...
Zamiast ATMega8 proponowałbym uzyć ATMega48 (lub ATMega88). Cena taka sama ale ATMega48 posiada mozliwość generacji przerwania 'pin change' tzn jakakolwiek zmiana stanu portu wywołuje przerwanie - czyli to, o co chodzi. W tym przerwaniu badamy stan portu i wysyłamy na UART. Odpada w ten sposób badanie stanu portu w pętli. Podobną własność ma też ATTiny2313...
Po prostu wstaw break przed zmianą stanu portu jak się program zatrzyma zrób pracą krokową kilka taktów i zobacz czy zmienił się stan portu . Ten symulator nie jest stworzony do tak banalnych rzeczy jak miganie diodą , możesz spróbować symulator z IAR jest dostępny jako dodatek (przynajmniej kiedyś był dostępny) w studio7 tam można symulować LCD , wyświetlacz...
Mam pytanie o programowy reset w jaki sposób może powstać reset -programowo .Mam ok 50k kodu dlatego nie prezentuje a układ ma ponad 600 pól lutowniczych jest dość skomplikowany .Moje pytanie brzmi jak w nie planowany sposób programowo powstaje pasożytniczy reset ? Dodaje że nie ma on związku ze zmianą stanu portów oprócz zmiany linii danych na wyświetlaczu...
No tak. Standardowo odsylam do tego tematu :) http://www.elektroda.pl/rtvforum/topic32... Jezeli opanowales port i dziala on na buttonach to nie widze juz zadnego problemu zeby obluzyc port klawiatura. Wydaje mi sie jednak ze nie dokonca masz opanowane sterowanie portem poniewaz pytania o sprawy mniej skomplikowane obsluga LPT a wrecz podstawowe...
Co zrealizować? Programowe zliczanie impulsów? Ustawiasz timer tak, żeby generował przerwanie co 100 us, sprawdzasz stan portu, robisz xor z poprzednim stanem i testujesz, które bity są ustawione - ustawiony, znaczy zaszła zmiana stanu, czyli inkrementujesz odpowiednią zmienną.
Witam Czy ktoś spotkał się z rozwiązaniem pozwalającym rozszerzyć ilość wyjść I/O? konkretnie potrzebuje około 80 wyjść i 40 wejść. Zmiana stanu portu może być wolna tz. <= 500ms. Komunikacja i2c odpada. Myślałem bardziej o USART 1 master -> (slave1,slave2, ... ,slaveN) ale okazało się że koszt łączny będzie porównywalny z zakupem dwóch Xmegą...
Zajęliście się tylko jednym aspektem, mianowicie licznikiem programu, pozostaje SREG i rejestry, nie jest np: zerowany watchdog. Uważam, że zmiana stanów portów WE/WY, może powodować poważniejsze skutki. Ponadto pomijana jest mozliwość wejścia procesora w tryb programowania. I tak jak napisał mcy aby wystąpił reset możliwe są jedynie 3 przypadki. Pytanie...
Witam. W głównej pętli mam migającą diode za pomocą millis i odbiór danych z Serialsoftware. Problem w tym, gdy program wchodzi w pętle while żeby odczytać dane dioda zaczyna żyć własnym życiem i miga bez ładu i składu. void loop(){ aktualnyCzas = millis(); if (aktualnyCzas - zapamietanyCzas >= 700UL) { zapamietanyCzas...
Witam Jasne, że mogę i naprowadzę :) Config Pind.0 = Input Klawisz Alias Pind.0 Config Pind.0 = Output Wyjscie Alias Portd.0 Dim Licznik As Byte Do If Klawisz = 0 Then Incr Licznik If Licznik > 60 Then Wyjscie = 0 ' If Licznik > 60 Then Wyjście = not Wyjscie Waitms 50 Loop Masz do wyboru albo ustawienie portu w stan wysoki po czasie około 3 sekund...
Witam, pytanie dla ogarniających asm gdzie mogę znajdę takie informacje ile cykli wykonuje się dana instrukcja, piszę w C i na samym asemblerze mało co się znam, lecz patrząc na okno deasemblacji w debuggerze zauważyłem np. taka instrukcja [syntax=c] GPIOF->BSRRL = 0x0040; GPIOF->BSRRH = 0x0040;[/syntax] trwa jakieś 42ns jest to jakieś 6 instrukcji...
Witam Mam podłączony przez coma odbiornik podczerwieni, schemat na tej stroniehttp://www.cesko.host.sk/girderpl... Zauważyłem ze dane z odbiornika idą przez rs232 przez pin DSR i chciałbym się dowiedzieć jak mam odczytać zmiany stanu tego portu. Najlepiej w języku c++ i pod kompilator Dev-C++. Za wszelką pomoc dziekuje :) Ablo jakie biblioteki...
Innym sposobem mogłyby być tranzystory, albo dodatkowy scalak, tylko jest to niepotrzebne. Skąd te 20mA? przy zwykłej diodzie bipolarnej, 3-4mA spokojnie wystarczy, a różnica w natężeniu światła jest znikoma. Do czego ta dioda?
Witam potrzebne jest mi urządzonko zrobione na AVR np 2313. Urządzonko to ma mieć układ czasowy odmierzający czas do 4 min po którym na jednym z portów ma sie pokazać stan wysoki. Odmierzanie czasu ma być zainicjowane stanem niskim na innym porcie . Cykl ten ma sie powtórzyć 3 razy. Jeżeli na porcie inicjującym odliczanie po 3 krotnym pokazaniu sie...
Tak. Port LPT jest dwukierunkowy. Z tego co pamiętam w przypadku "standardowej" pracy oferuje on 12 wyjść i 5 wejść. W przypadku drukarki (pierwotnego zastosowania LPT) sygnały wejściowe były wykorzystywane do sygnalizowania różnych błędów (brak papieru, zajętość itp - stąd zresztą nazwy końcówek). W przypadku programów do obsługi LCD wykorzystywana...
Probuje w wyzej wymienionym srodowisku zasymulowac dzialanie przetwornika AC dla procka pic18f4553, lecz nie wiem jak zadac na wejscie przetwornika jakis sygnal,ktory moglby zostac przetworzony. Stworzylem stimulus,ktorego zadaniem jest zmiana stanu portu bedacego wejsciem przetwornika AC, lecz po zakonczeniu przetwarzania w rejestrze wynikowym bez...
Witam! Zrobiłem urządzonoko na uC Attin2313, które po naciśnięciu jednego przycisku zaświeca kolejno diody na porcie B; po pewnych bólach udało mi się. Teraz próbuje zrobić to samo lecz z wykorzystaniem przerwań... i mam małe kłopoty, a mianowicie napisałem sobie programik w Bascom'ie: $regfile = "ATtiny2313.dat" $crystal = 4000000 $baud =...
albo zle zrozumialem albo..... $crystal = 1000000 $regfile "attiny2313.dat" Dim Bylo As Byte If(portd.6 = 1) And(bylo = 0) Then Bylo = Portd.6 Wait 5 Set Portd.7 Elseif(portd.6 = 0) And(bylo = 1) Then Bylo = Portd.6 Wait 5 Reset Portd.7 End If end: wyswietla sie blad skladni "if" i "elseif" a w tym wyswietla...
No i lipa. Układ powoduje tylko reset uC. Podanie stanu wysokiego z arduino powoduje wyłączenie mosfeta, wyłączenie zasilania powoduje zmiane stanu portu na niski w uC i automatyczne załączenie zpowrotem całego układu. W konsekwencji arduino tylko się resetuje.
Mam sprawdzać stan bieżący czy ilość przepełnień? To już zależy od Ciebie i od tego jak szybko chcesz puścić timer (z jakim preskalerem). Ale przy takiej precyzji wystarczy liczyć przepełnienia w procedurze obsługi przerwania. Jak wskazano wcześniej najrozsądniej jest użyć 3 zmiennych inkrementując wartość każdej z nich po przepełnieniu. Wciśnięcie...
Usuń kwarc i kondensatory, doprowadź do XTAL1 sygnał zegarowy z zewnątrz i spróbuj się połączyć normalnie programatorem. Ja zrobiłem to tak, że do wejścia XTAL1 podłączyłem drugą atmegę, która generowała sygnał prostokątny na jednym z pinów (cały program składał się z jednej linijki, w której było polecenie zmiany stanu portu na przeciwny). Podpiąłem...
Ten programik miał tylko uruchomić zmianę stanu na porcie w przerwaniu. Pętla while u mnie jest nieskończona tak jak to zaobserwowałem w innych programach, jak na razie nic się w niej nie dzieje bo testuje same przerwania. Dziękuje ci za pomoc popołudniu wprowadzę poprawki i sprawdzę czy zadziała. Może masz jakiś przykład działającego programu który...
Witam wszystkich. Mam taki problem steruję binarnie wyjściami cały port C w Atmega 8. Mam pytanie czy istnieje jakieś proste polecenie zmieniające stan powiedzmy portu PC3 na niski i z powrotem nie zmieniając pozostałych portów. Oczywiście nie wiedząc w jakim stanie są pozostałe porty :?:
Co tutaj przekombinowałem? Atmega32. Tryb Licznika. Celem było zapalenie i gaszenie diod co sekundę. Preskaler = 256. Przerwanie tak wyliczone aby wykonywało się co sekundę. Timer 16bitowy [syntax=c] #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> ISR (TIMER1_OVF_vect) { PORTC ^= ~0xFF; //zmiana stanu portu C...
PIC_12F508 jako licznik Może ktoś mi wskazać jak napisać program testowy. Chciałbym poznać nieco PIC'E Taki mały schemacik czyli licznik programowy prośba o pomoc w napisaniu programu dla pic 12f508 znalazłem proton_lite chociaż on kompiluje dla pic 12c508 OTP czy kod wynikowy hex zadziała na 12f508 ----------------------------------------...
Witam Jest jeden przycisk, który włącza lub wyłącza urządzenie poprzez przekaźnik, dodatkowo w tym samym czasie ma załączyć się dioda LED sygnalizująca stan urządzenia wł./wył. oraz na wyświetlaczu LCD ma pojawić się informacja po jednym wciśnięciu przycisku: naw włączony po drugim naciśnięciu: naw wyłączony. Użyłem funkcji "toggle", i nie ma problemów...
kod: CONVERT_T: ; 44h ldi sender,$44 ; laduje do 'sender' komende rcall WRITE_DATA ; wysylam ta komende po 1wire out portb,zera ; zmiana stanu portu daje prad na konwersje - zera zapalaja LED rcall DELAYMAX ; dlugie opoznienie na czas konwersji out portb,jedynki ; wyslanie jedynek na port gasi led ret na portb jest tylko DS podlaczony do pin0 - dla...
Witam, Podczas pisania programu wykorzystywanego w projekcie natknąłem się na niespotkany przeze mnie wcześniej problem, który próbowałem już rozwikłać samodzielnie przez dłuższy czas. Niestety zarówno poszukiwania w internecie jak i pomoc znajomych były bezowocne. Problem dotyczy programowania ATmega128A. Otóż zarówno podczas wgrywania programu do...
Rejestr TIM->SR nie reaguje na zapis jedynek. Zapis zera kasuje znacznik. Wykonanie operacji logicznej kasuje wybrany znacznik i wszystkie znaczniki, które zostały ustawione przez sprzęt po odczycie rejestru SR i przed jego zapisem, czyli w ogólnym przypadku spowoduje skasowania znacznika przerwania bez zauważenia, że był on ustawiony. Zmiana stanu...
Witajcie, Sprawdzałem z trzema wersjami Bascoma (1.11.8.3, 1.11.9.3, 1.11.9.8 -wszystkie oryginalne) i sam nie mogę uwierzyć co się dzieje. Otóż w samym układzie jak i zgodnie z symulacją nie następuje zmiana stanów portu. Czy u Was jest tak samo??? I o co tu chodzi??? Oto kod: $regfile = "m32def.dat" ' specify the used micro $crystal = 8000000 ' used...
...i na załączonym oscylogramie widać ,że zmiana stanu na porcie c.5 jest dopiero po 5us od załączenia przerwania , czy to jest normalne ? Jak najbardziej normalne :| W kodzie jaki podałeś , od momentu wystąpienia zbocza opadającego na INT0 , do zmiany stanu na PORTC.5 , procek musi wykonać "pracę", która zajmuje mu około 60 cykli zegara. Piotrek
Witam. Tak na szybko i raczej teoretycznie: regulator napięcia z linią shutdown. W stanie wolnym linia podciągnięta do stanu, w którym regulator jest wyłączony. Pobór prądu zależy od użytego regulatora, ale będą to jakieś uA. Przycisk podaje przeciwny stan na tą linię, w tym czasie uC ustala jej stan tak że po zwolnieniu przycisku zasilanie jest podtrzymywane....
ale wymysliles,przy zmianie stanu portu nie maja prawa się pojawic przejsciowe stany. Proponuję zajrzeć do pierwszego lepszego katalogu scalonych układów cyfrowych i odczytać ile trwa zmiana stanu z "H" na "L" i odwrotnie. I dopiero odpowiedzieć. Z poważaniem AB
Witam, Zaczynam z C i mam mały problem, Bawię się ze zmianą stanów portów. Mam raki kod: #include <avr/io.h> #include <util/delay.h> int main(void){ DDRD = 0x80; // port d.7 jako wyjscie PORTD = 0x00; while(1){ PORTD ^= 0x80; _delay_ms(330); } } No i dioda podłączona do portu D.7 sobie miga. Chciałem...
http://ww1.microchip.com/downloads/en/De... jest to chyba najaktualniejszy pdf do PIC18F2455/2550/4455/ 4550 DS39632D-page 1: "Power-Managed Modes: • Run: CPU on, peripherals on • Idle: CPU off, peripherals on • Sleep: CPU off, peripherals off • Idle mode currents down to 5.8 μA typical • Sleep mode...
Najpierw zdefiniuj port jako port ogolnego przeznaczenia, sluza do tego rejestry GPxMUX. Nastepnie w rejestrze GPxDIR zdefiniuj jako wyjscie, a zmiany portu dokonasz w rejestrze GPxDIR A powinno to wygladac tak EALLOW; //zezwolenie na zapis do rejestrow chronionych GpioMuxRegs.GPFMUX.bit.XF_GPIOF14=0; //ustawienie portu F (pin14) jako we/wyGpioMuxRegs.GPFDIR.bit.GPIOF14=1;.....
zadbaj jeszcze o to żeby odpowiednie porty były deklarowane jak nalezy, jako wejsciowe/wyjsciowe. Odnośnie I2C - nie patrze teraz na listing zdaje sie że obydwa porty muszą być ustawione na 0 (PORTx), zmiana stanu odbywa sie przez zmiane kierunku porty - rejstr DDRx - i to te wartosci zmieniasz w programie
Temat wielokrotnie wałkowany, ale nie umie znaleźć rozwiązania mojego problemu. Mianowicie sprawdzałem Atmege32 i 128, na obu ten sam efekt, tak jakby procek nie miał inicjalizacji i szedł w krzaki. Robie coś takiego: - przesuwam sekcje .text na 0x1E000 w opcjach linkera w AVR Studio (kompilator AVR- GCC) - na fuse bitach mam wybrany rozmiar bootloadera...
Z tego co mi wiadomo to Xplain jest oparty na µC AtXmega (dokładnie Atxmega128A1), w sumie jest to architektura AVR, więc piszesz podobnie jak na inne AVR-y np. ATmega, ale nie zupełnie. Na przykład do portów możesz dostać się tak: - "kierunek" odpowiednik DDRx (data direction register) pinu 0 portu A -> PORTA.DIRSET=PIN_0_bm, - "ustawienie" pinu...
Nie pokazałeś schematu więc nic nie doradzę może poza przeglądnieciem [url=http://mikrokontrolery.blogspot.com... odnośnie minimalnego podłaczenia procesora. Napisz programik testowy dla timera1 z preskalerem 256 i zmianą stanu pinu portu w przerwaniu. Dla kwarcu 16MHz przerwanie wystąpi co około 1 sekundę. Jak to...
Zamiast męczyć maliny z poziomu każdego użytkownika osobno (jak polecają w poście wyżej). Możesz sprawdzać stan malin z serwera (z niego wysyłać zapytanie) - w wypadku gdy stan portów zmienia się w dużej częstotliwości, w tym wypadku polecam cron'a. Możesz przy zmianie stanu portu wysyłać post do serwera i tam mieć zapisane stany dla każdej maliny osobno,...
Przede wszystkim zastanów się co się dzieje na wejściach od klawiatury, oraz jak zachowają się kody w przypadku niestabilnych stanów które prawie na pewno wystąpią. Zmiany stanów na portach też nie muszą być natychmiastowe z wielu powodów. W przypadkach bardziej wymagających może nawet dojść konieczność kilkukrotnego sprawdzania w czasie.
Mam jeszcze inne pytania: 1. Jak ustawić linię wyjściową struktury FPGA w stan wysokiej impedancji ? 2. Załóżmy, że mamy 8-bitowy port dwukierunkowy, zdefiniowany jako zewnętrzny. Chciałbym wykonać coś takiego, aby zmiana stanu na tym porcie (wywołana sygnałem zewnętrznym) ustawiała w stan niski jakąś linię zewnętrzną układu FPGA. Z pewnością należy...
Takie ustawienie enkodera jest mozliwe. Reagowanie na stan to bład. Powinieneś reagować na zbocze. Np. przerwanie zewnętrzne AVR'ów potrafi reagować zarówno na zbocze narastajace i/lub opadające. Jak odczytywac w którą strone następuje ruch?. Najlepiej jak sobie znajdziesz gdzieś w internecie opis takiego enkodera z wykresami sygnałów wyjściowych, bo...
Masz tu prosty krótki kod. [syntax=c]#include <util/delay.h> #include <avr/io.h> int main (void){ DDRC = 0xff; //port C jako wyjście PORTC = 0x00; //stan niski naporcie while(1){ int a; // zmienna decyduje o szybkości migania diody a = 500; PORTC ^= 0xff; //zmiana stanu dla całego portu C z 1>>0 lub 0>>1 _delay_ms(a); } } [/syntax]
Mam układ w którym wykorzystuję atmega 16 za pomocą którego steruje przekaźnikami 4 voltowymi do sterowania wykorzystuje tranzystor bc547b do bazy podłączyłem rezystor 10k i zastosowałem rezystor podciągający 1k, zabezpieczyłem również cewke przekaźnika diodą. Nie wiem czemu przekaźnik się nie przełącza. Przy zmianie stanu portów tranzystor również...
Jestem kiepski z programowania. Wiem , że procek atmega88 ma możliwość wygenerować przerwanie , przy zmianie stanu portu, prawie a może nawet z wszystkich pinów. Mam projekt, w którym procek jest w stanie powerdown, i zmiana stanu na kilku pinach powinna go wybudzić. Program sprawdzi co i jak zrobi co ma i dalej ma wejść w stan powerdown. Dokładnie...
Chciałam dołączytć do rozmowy, proponuję przeczytać dobry artykuł www.lpt.strona.pl - omawia dwa tryby pracy - directional (typowy dla drukarek) oraz bidirectional (czytanie portu) do artykułu dodaję własny programik testujący, który działa ze sterownikiem inpout32.dll. Chciałem dodać, iż na klawiszu masz aktualny tryb pracy portu, zmiana następuje...
bo zmieniasz caly port. tak BTW - przeczytales to: http://www.elektroda.pl/rtvforum/topic10... ? nie? tak myslalem. 0x41 0x56 0x45!!
Tzn mam ustawić wewnętrzny oscylator na 8 MHz? Kod: [syntax=c]//częstotliwość zegara #define F_CPU 1000000L #include <avr/io.h> #include <util/delay.h> //definicja LED1 (do którego pinu podłączony LED1) #define LED1 PB0 //definicja LED2 (do którego pinu podłączony LED2) #define LED2 PB1 // Pętla główna void main(void) { //########### I/O...
A o który pin IO ci chodzi? Bo to co robisz cztery piny portu ustawia jako wyjście (3-6), pozostałe jako wejście. Potem odczytujesz stan portu, ale twoje maskowanie andi wycina tylko pin 1. W efekcie twój warunek jest spełniony jeśli wszystkie piny z wyjątkiem pinu nr 1 (którego stan jest bez znaczenia) są równe zero. Ponieważ inne piny też są wejściami...
Proszę o pomoc. Nie mogę uzyskać zmian sygnału wyższego niż 1,13kHz na żadnym pinie mimo, że ustawianie SUT i CKSEL przebiega poprawnie. Program, który napisałem zajmuje się tylko zmianą stanów na poszczególnych portach, oczekiwałem przebiegu o częstotliwości około 1MHz a uzyskuję około 1,34kHz. Z góry dziękuję za pomoc.
Witam serdecznie Zaznaczam, że moja znajomość programowania uC jest co tu dużo kryć znikoma. Gdzieś na studiach coś było ale jakoś nie przywiązywałem do tego wagi. No nic do rzeczy ;) Potrzebuję ustawić wywoływanie funkcji w czasie tzn. ustawiam że np zmiana stanu danego portu powinna zaczac sie o 8:00 a skonczyc o 8:15 o ile oprogramowanie samego zegara...
Błędów całe mnóstwo. 1. Nie robi się przerwań od przycisków. Zrób przerwanie timera np. 100 Hz, w nim sprawdzaj stany przycisków. 2. __attribute__ ((interrupt)) jest zbędne. 3. Znacznik przerwania kasuje się na początku, nie na końcu obsługi przerwania. 4. Do zmiany stanu linii portów służą rejestry BSRR- jeden zapis zmienia stany dowolnie wybranych...
Każdy program Arduino zachowuje się, praktycznie jak standardowy program C++. W C++ wystarczy komenda: LED_BUILTIN . Kliknij prawym przyciskiem myszy na LED_BUILTIN i wybierz z menu "Go to definition". Przeniesie Cię do pliku pins_arduino.h . Zobaczysz tam, że LED_BUILTIN ma wartość 13. digitalWrite(ledPin, ledState); "Go to definition" na tej funkcji...
To chyba nie ma sensu angażować komputer po to by trzymając przycisk (klawisz) urządzenie było włączone, po zwolnieniu wyłączone. Wystarczy zwykły włącznik zamykający obwód zasilania. Ale można napisać program w ten sposób, że naciśnięcie jednego klawisza włacza silnik, a innego wyłącza lub ten sam klawisz działana zasadzie włącz/wyłącz. Program przykładowy...
1. Eliminacja niepotrzebnych skoków tu i tam. Da się to zrobić inaczej - patrz CPSE, SBIC, SBIS. 2. Brak podstawy czasu - impulsy nie będą zawsze równe w czasie. Użycie licznika bardzo wskazane. 3. Brak synchronizacji zmiany stanów na portach - możliwe przesunięcia fazowe. 4. Skąpe komentarze. Za dwa dni nie będziesz wiedział co, jak i dlaczego tak.
Myślę, że mikro-kontroler będzie idealny. ATmega 8 będzie ok choć moim zdaniem trochę nadmiarowa. Ale jak jest w szufladzie ...jak najbardziej. Co do programu..wydaje mi się, że to raczej dość łatwa sprawa. Np. wejścia układu po obniżeniu napięcia do akceptowalnych przez AVR'a można podać na wejścia INT0 i INT1. Zmiana stanu na wejściu INT0 niech spowoduje...
Witam serdecznie, Zabawę z AVRem zaczołem dopiero kilka dni temu więc może nie rozumiem jakiegoś oczywistego faktu ale dnia dzisiejszego oszalałem :D Podłączyłem sobię LCD HD44870 aby mieć lepszy wgląd w to co dzieje się w kontrolerze i postanowiłem pobawić się z portem A ustawionym na odczyt (DDRA = 0x0). W pętli ustawiłem aby wyswietlał mi 8 bitow...
Jeśli potrzebujesz krótkich czasów to wystarczy timer 8-mio bitowy do dłuższych czasów 16-to bitowy. No zgadza się - małe wartości można przechowywać na 8-bitach. Taktowanie masz z tego co sobie ustawisz jako źródło zegara w fusebitach. Może to być kwarc podpięty pod uC, zewnętrzny generator podpięty pod uC, wbudowany generator RC. Im mniejsze czasy...
A jak zrobić żeby porty włączało po kolei czyli 1 port 2 port itd
To prawda co piszesz ale nadal nie rozumiem co ma wspólnego print"b" ze zmianą stanu w odbiorniku pind.6 A może to zupełnie coś innego PIOTR Już mi się rozjaśniło każde przerwanie powoduje zmianę stanu portu A jak wygląda przesyłanie danych typu byte w takim przykładzie?? w procesorach 51 wystarczyło napisać A=42 printbin a w odbiorniku inputbin A i...
Witam. Jako, że jestem początkujący w tej dziedzinie, chciałem się poradzić doświadczonych kolegów jak przerobić dalej program. Do projektu kolegi DUCH - 4xds18b20 LCD dodałem sterowanie włączeniem led, buzera (opcjonalnie przekaźnika) po przekroczeniu założonej temperatury, zarówno za niskiej jak i za wysokiej (chodzi o piec CO) informuje mnie o tym...
Witam! Chciałem wykorzystać timer0 do dokładnego odmierzania czasu, jednak coś powoduje zawieszenie całego programu. Dzieje się tak gdy próbuję odczytać wartość zmiennej w obsłudze przerwania lub w pętli głównej programu. Przerwania od timera są na pewno obsługiwane ponieważ działa zmiana stanu portu w obsłudze przerwania. Kod wygląda następująco: //ZMIENNE...
Najprostszy możliwy program, na otworzenie portu - zaświecenie diody, jak chcesz zrobić miganie to poszukaj w helpie bascoma - zmiana stanu : Config Pinb.2 = Output - pin B.2 ustawiony jako wyjście pinb.2 = 0 - stan pinu B.2 jest 0 Do napisania migającej diody będziesz potrzebował jeszcze użyć pętle. Gotowy, tylko nie wiem czy działa, ale powinien Config...
Witam ! Mam takie pytanka: Jakie diody ( i odpowiednie do nich fototranzystory ) nalezalo by zastosowac aby: - fototranzystor byl oswietlany przez diode z odleglosci ok 50 cm - mozna bylo w bliskiej odleglosci ( 0,5 cm - 0,7 cm ) ustawic kilka takich "torow" i nie bylo by niejasnosci ktora dioda ktory fototranzystor oswietla (moze fototranzystory w...
sprawdzanie stanu portu wyświetlanie stanu portu odczytanie stanu portu
internet zawiesza panasonic radio reset iveco daily problemy klimatyzacja
wiertarka celma kondensator lenze naprawa
Brak dopływu paliwa w Mercedesie E320: przyczyny i diagnostyka Regulacja odprężnika w silniku Andoria ES320