Wiesz co, nigdy tak nie robiłem w AVRStudio, bo zawsze symulowałem bit przerwania, ale po Twoim pytaniu postanowiłem to sprawdzić. I wiesz co, TO DZIAŁA!!! Po 16 zmianach w rejestrze PINB bit 7 (dotyczy Atmegi8515) czyli SCK, nastąpiło przerwanie od SPI! A więc Twoje założenie okazało się słuszne. Pozdrawiam, Marek.
rozkazy IN/OUT działają tylko do $60 adresu. Zamiast OUT'a daj STS UCSR0C, r16
Przykładowo z innego kodu ;) [syntax=vbnet]TCCR1B = Bits(WGM13 , WGM12 , CS10)[/syntax] Miłego dnia
(at)Piotr Piechota Ja robiłbym coś w stylu: [syntax=c] static inline uint32_t bitfield_update(uint32_t bf, uint32_t mask, uint32_t value) { return (bf & ~mask) | (value & mask); } .... const uint32_t mask = RCC_PLLSAICFGR_PLLSAIN | RCC_PLLSAICFGR_PLLSAIP | RCC_PLLSAICFGR_PLLSAIQ | RCC_PLLSAICFGR_PLLSAIR; const uint32_t value = 192 // N=192...
W zasadzie freemodbus to implementacja dla urządzeń slave. Ale master może wpisywać dane do Slava .. po prostu ustawia rejestry w urządzeniu Slave. Poszukaj rozpiski - dotyczącej Modbusa - poczytaj zrozumiesz o co chodzi.
No bo wciąż ustawiasz rejestr IMR "odwrotnie" - zajrzyj do manuala co oznacza 0, a co oznacza 1. I w ramach testów zrezygnuj z ustawiania jakichkolwiek priorytetów przerwań czy czegokolwiek z nimi związanego. 4\/3!!
Przeglądnij sobie ten przykład i wykorzystanie w nim sposobu ustawiania rejestrów USART (w tym bitu U2X) z wykorzystaniem nagłówka setbaud.h: http://mikrokontrolery.blogspot.com/2011... Może w ten sposób szybciej odnajdziesz przyczynę problemów lub zastosujesz zawsze rozwiązanie z artykułu, które działa zawsze poprawnie.
Jak ustawiać preskalery według tabelki z #27 podanej przez excray .Jak wygląda preskaler 32 i 128 jak to się ustawia. W internecie jest taki preskaler , TCCR1B |= (1<<CS12)|(1<<CS10); // preskaler = 1024 Jak czytałem preskalera 32 i 128 nie obsłuży Attiny 2313 i Atmega 8. Co obsłuży wszystkie preskalery podane w tej tabelce. Bo patrzysz...
Zobacz jak dziala kod na jakims debuggerze - masz JTAG? Albo w AVR Studio (nie wiem czy Bascom ma odpowiednik). Sprawdz czy prawidlowo sa ustawiane rejestry odpowiedzialne za wspolprace z XRAM. Moze to jakis blad Bascoma? Swoja droga przy tak duzym procesorze chyba juz warto przejsc na profesjonalne narzedzia? :)
Ostatni raz powtarzam: #define STEP_OFFTCCR1B &= ~(_BV(CS10)) | ~(_BV(CS11)); <--- to jest źle, bardzo źle i niczego nie zeruje Zamień na to: #define STEP_OFF TCCR1B &= ~(_BV(CS10) | _BV(CS11)); <--- to będzie działać, to zeruje bity. Na więcej postów nie odpowiadam bo czuję tutaj stratę czasu.
Dzień dobry. Mnie się dzisiaj udało połączyć z tym falownikiem i go wysterować przez RS-485 MODBUS 8N1 RTU. użyłem o tego aplikacji ModbusMAT 1.1 To co zauważyłem, to że rejestry przesunięte są o 1, tzn. żeby czytać/modyfikować parametr np. 106 musiałem edytować rejestr o adresie 40107. Kiedy próbowałem, wg instrukcji włączać i wyłączać obroty to zamiast...
Rejestr EIFR to rejestr FLAGI przerwania, która jest automatycznie zerowana po zakończeniu przerwania. Badanie jej w przerwaniu musi dac wynik pozytywny. Poza tym masz w tym kodzie błąd: reset eifr.0 if eift.0 = 1 then set led chyba powinno być: if eifr.0 = 1 then set led Napisz jak ustawiasz rejestr EICRA Na końcu przerwania zbadaj If EIMSK.0=1 then...
Ta funkcja musi działać. Albo podajesz błędne adresy albo hardwarowo jest coś nie tak. Przypadkiem nie ustawiaj podglądu rejestrów I2C do poglądu w debugu.
Witam. Do tej pory programowałem uP w czystym C. Jedyne rejestry jakich używałem to te związane z wyjściami, wejściami (DDR, PORT). Tam wszystko przebiegało bezproblemowo. Problemy pojawiły się przy obsłudze kwarcu. Chciałem do CLKPR wpisać wartość bezpośrednio (CLKPR=0x80;) , niestety kompilator nie pozwala mi na to. Podobnie dzieje się gdy próbuje...
Aby uruchomić RTC w trybie zegarka 24 godzinnego należy wpisać do TIMECON=0x41; U mnie działa bez problemu :)
Wersja 12.1 https://gbboptimizer.gbbsoft.pl - Możliwość podłączenia dowolnego inwertera podłączonego do Solarman, o ile tylko zdefiniuje się jak mają być ustawiane rejestry. https://obrazki.elektroda.pl/9928044200_...
Widze ze kolega ma przyzwyczajenia z Bascoma:) Pewnie nie działa dlatego, że wywołujesz źle funkcje "czekaj", a mianowicie musisz ja wywołac z nawiasami czyli : czekaj(). Przy wywolaniu bez nawiasów raczej nie bedzie działac i kompilator powinien zgłosić jakies uwagi. Druga sprawa, by kod był czytelniejszy i by uniknąć błędów lepiej ustawiać rejestry...
atom1477- z bacsomem to masz rację-stale trzeba sięgać do dokumentacji procesora jeśli się chce żeby robił to co się chce. I ustawiać rejestry. A niechęć do bascoma wynika po części z nazwy-Basic. Basic był kiedyś obsługiwany przez interpreter-linijka po linijce-nie miał kompilatora. Pamiętam jak po to aby używać Pascala(kompilator!) na Atari64 kupiłem...
Jeśli dobrze zrozumiałem problem: Ustawiając rejestr OTYPER nie ustawiasz pinu jako wyjście, tylko konfigurujesz wyjście, prawdopodobnie włączają się jakieś wewnętrzne rezystory, skonfiguruj resetr GPIOx->PUPDR (pullup) oraz TIMx->BDTR bit BKP (wyzwalanie stanem niskim lub wysokim). pzdr
W taki sposób to działa, że ten wyświetlacz działa za pomocą multipleksowania. Poczytaj sobie. W skrócie to chodzi o to, że w tym wypadku jednocześnie świeci się tylko jedne wiersz. Czyli najpierw tranzystor Q1 "otwiera się", a na rejestrach ustawia się odpowiednie stany portów. Później Q1 "zamyka się", rejestry są zerowane, Q2 "otwiera się" i rejestry...
No tak, źle spojrzałem... :( czyli powinno być dobrze. Sprawdzałem dodatkowo w wizardzie CVAVR i tak samo ustawia te rejestry (nie mówię, że CVAVR to jakiś wyznacznik bo też nie raz już mnie zawiódł ten rumuński kompilator)... Może rzeczywiście symulator sobie z tym nie radzi. Spróbuj przesymulować pojedynczo te timery (nie wszystkie jednocześnie).
Jesli chcesz wykorzystac sprzetowe I2C (TWI) w ATmega8 to wszystko ustawiasz za pomoca odpowiednich rejestrow. Jesli ATmega bedzie pracowala w jako SLAVE to za pomoca odpowiedniego rejestru ustawiasz jej adres. Poczytaj w doumentacji od uC.
Funkcja gpio_pin_cfg() ustawia odpowiednie wartości a rejestrze AFR[].
Po prostu ustawiasz odpowiednie rejestry w układzie poprzez użycie interfejsu SPI podłączonego uC. To nie jest taki moduł jak ESP, który jest SOB, czyli jest kompletnym systemem komputerowym. Wszystko masz dokładnie opisane w DS. Środowisko programistyczne zależy od procesora, który użyjesz, może to być arm,avr, pic czy cotam preferujesz
Nie zauważyłem w Twoim kodzie, żebyś ustawiał rejestr TWBR i/lub bity TWPS, więc po resecie będą one miały wartość domyślną, czyli 0. Dla takiego ustawienia, przy częstotliwości taktowania procesora 11,0592MHz, uzyskasz na linii SCL częstotliwość taktowania równą 691,2kHz , co jest wartością zbyt wysoką. Maksymalna dopuszczalna częstotliwość np. dla...
Może spróbuj sterowania w inny sposób - za pomocą przerwania INT2 (wywoływanego przyciskiem) uruchamiaj i zatrzymuj licznik TC0 (parametry PWM są ustawione u Ciebie poprawnie) tzn ustawiaj bity TCCR0|=(1<<CS00)|(1<<CS01) kiedy chcesz uruchomić licznik i zeruj je jeżeli chcesz zatrzymać. Samo ustawianie wartości wypełnienia czyli rejestr...
W "Reference manual" masz podrozdział "22.6.8 I2C Clock control register (I2C_CCR)". Za pomocą tego rejestru ustawiasz parametry zegara w odniesieniu do częstotliwości magistrali.
Odczyt rejestru DR przez debugger jest odczytem, a więc resetuje flagę RXNE w rejestrze SR. Wyłącz podgląd rejestru DR to powinno być lepiej.
bsf STATUS,RP0 movlw b'01010101' (miałem 4 diody na porcie A) movwfTRISA ^ 0x080 ( coś się powinno zapalić ) bcf STATUS,RP0 movlwb'00110011' movwfPORTA A skąd znalazłeś ten kod? Bo to dość dziwny zapis, ale sprowadza się do tego ze wpisujesz W pod adres TRISA (czyli w przybliżeniu coś około 0xA0 ) z operacją xor która zamienia wartość adresu, negując...
Ustawianie poszczególnych pinów, czy też w ogóle poszczególnych bitów w rejestrach zależy od tego czy i jak są one definiowane w bibliotekach kompilatora. Zawsze można zapisywać wartości całymi rejestrami, albo używać maskowania bitów. A powyższy kod jest zły po próbujesz ustawiać bity z PORTA w rejestrach PORTB
Sorki panowie Z rozpędu ustawiałem rejestry zamiast bitowo to dziesiętnie. Już wszystko działa.
wszystkie rejestry są na stałe podłączone do linii globalnego resetu i ich wartość jest inicjowana/.../ to prawda, ze obecnie fpga altery i xilinxa maja ustawiane rejestry na 0, ale jest jeden maly haczyk; moze sie zdazyc, ze synteza przesunie negator z wejscia przerzutnika na jego wyjscie i co prawda sam ff po starcie bedzie mial 0, ale na wyjsciu...
W załączeniu pdf z opisem pcf-a po polsku. Masz tam opisane jakie rejestry należy ustawiać.
Ja z tej tabelki rozumiem, że: 1. Rejestry 00h - 04h ustawiasz po I2C, nie musi być zegara na SYSCLK 2. Rejestry 10h - 14h ustawiasz wyłącznie kiedy jest sygnał zegarowy na SYSCLK i jest spełniony warunek 128 fs interpolator clock http://obrazki.elektroda.pl/2511376000_1... Moim zdaniem, żeby operować na rejestrach od 10h do 14h musisz...
PWM ustawiasz na przykład w tryb Fast PWM (patrz tab. 17-8): Mode 3 ustawiając: - bity WGM20 i WGM21, - preskaler bitami CS2x - dla wyjścia OC2A ustawiasz: -- pin jako wyjście rejestrem DDRx -- z tabelki "Table 17-3. Compare Output Mode, Fast PWM Mode " wybierasz tryb bez negacji sygnału ustawiając bit COM2A1 dzięki czemu będziesz miał sygnał w postaci...
1. Nie stosuj niestandardowego połączenia pinów w gnieździe programowania, bo gdy podłączysz programator zgodny z ISP z włączonym zasilaniem układu programowanego, to będzie buuuuuum: http://mikrokontrolery.blogspot.com/2011... 2. Coś pomieszałeś ten układ resetu. Rezystor 330 przy kondensatorze ma ograniczać prąd jego rozładowania...
A o nazwę PWM0A się BASCOM nie "rzucał"? Spróbuj wpisywać bezpośrednio do rejestru OCR0A. I usuń te polecenia Start gdyż są bez sensu. W wersji 1.11.9.5 rezultat kompilacji wydaje się być poprawny. Rejestry ustawiane są prawidłowo. W domu znajdę jakiegoś Tiny i sprawdzę.
Wystarczy wpisać do rejestru licznika zero oraz wyzerować preskaler. Na przykład Timer0: 1. TCNT0 ustawiasz na zero 2. ustawiasz bit PSR10 w rejestrze SFIOR. Ale uwaga! W tym przypadku PSR10 zeruje także preskaler Timer1. Szczegóły w datasheet. Jak już poprawisz program to napisz proszę w komentarzu do artykułu. :)
Proszę o dalsze sugestie Sprawdź ten kod poniżej. W odczycie nie bardzo wiedziałem po co odczytujesz rejestr 2 razy, no ale może to przez ten twój błąd. Dokładnie za pierwszym razem zawsze dostaję 255. Jak daję dokładnie to to dostaję cały czas 255. A powiedz mi co pozmieniałeś bo zobaczyłem że skasowałeś podwójne ustawianie rejestru (tak nie powinno...
Ten program pusta stronę jako stronę startowa potraktował jako nie pożądaną zmianę, w zasadzie błąd w działaniu tego programu, przecież to jest jedna z opcji którą sami ustawiamy.
Ustawiasz bit WGM13 w dwóch rejestrach,a on jest tylko w jednym - TCCR1B. Za to niepotrzebnie ustawiasz bit WGM12, co powoduje, że nii działasz w trybie PWM, a w trybie CTC (tryb 12 zamiast 8).
W rzeczy samej, liczy sobie dalej. W momencie przepełnienia jest ustawiana flaga przepełnienia a rejestr licznika jest zerowany ew. przepisywany zadaną wartością. Szczegóły - patrz dokumentacja.
Więc pojawia się pytanie jak sprawdzać kolejne bity w kolejnych przebiegach "pętli" (w przypadku procedury zapisu) oraz jak ustawiać logiczne 1 w kolejnych bitach przy kolejnych przebiegach "pętli" (w przypadku procedury odczytu). Jeśli chodzi o zapis to zrób tak, że sprawdzasz, czy najmłodszy bit w rejestrze jest wyzerowany, jeśli tak to ustawiasz...
To w takim razie po co ustawiać ten rejestr DDR? jeśli domyślnie jest na wejscie(0x00), ale mogę odczytywać wejscie i sterować diodą? Kiedy używamy jako wejście wówczas wyłączamy driver wyjściowy. Proszę was o cierpliwość xD ale po co wyłączać ten driver wyjściowy skoro i tak to działa Po to, że wejście powinno generalnie mieć możliwie dużą rezystancję...
te rejestry (Fuse Bity) ustawia sie przy programowaniu programu a nie w sofcie. wbudowany programator bascoma ma taką opcje jak właczysz okno programowania to w zakładce "lock and fuse bits"
a gdzie ustawiasz rejestr jako wyjscie? Pozdrawiam
Prawie dobrze. Jeżeli chcesz skasować pojedynczy bit to:[syntax=c]REJESTR &= ~(1<<BIT);[/syntax] natomiast przy ustawianiu pojedynczego bitu:[syntax=c]REJESTR |= (1<<BIT);[/syntax] A tak ogólnie to warto poćwiczyć operacje bitowe, żeby mieć je w małym palcu :) bo przy programowaniu mikrokontrolerów przydają się na każdym kroku.
No chyba to co w każdym: ustawiają parametry taktowania procesora.
W opisie piszesz o rejestrze CNH a w kodzie ustawiasz rejestr CRH. Czy to celowe? Może zamiast struktury IF lepiej w tym przypadku użyć SWITCH?
ulala ... nie wiem czy dobrze zrozumiałem. Jeśli nie chcesz nic odczytywać z wyświetlacza (flaga zajętości, wyświetlane dane) to możesz ustawić wszystkie porty jako wyjściowe np. PORTB który możesz podłączyć pod DB0-DB7 wyświetlacza i trzy piny portu D np PD0-PD2 podłączone do pinów RS, R/W, E wyświetlacza. Jeśli jednak będziesz chciał odczytać np....
Masz podciagniecie resetu do VCC? Spróbuj sam ustawiać rejestry od watch doga.
może Timer2.initialize Nie można tak, nie ma klasy Timer2. Poza tym od razu radzę zrezygnować z biblioteki TimerOne przy używaniu więcej niż jednego timera. Zamiast tego samemu można napisać konfiguracje timerów i wektory ich przerwań. Oto kod demonstrujący jak to zrobić. Powinno migać diodą i niezależnie wysyłać napis. Twoim zadaniem jest teraz dobrać...
robisz to za każdym razem tak : 1. Zerujesz rejestr/zmienna w której chcesz miec wynik. 2. Przesuwasz rejestr/zmienna o 1 bit w lewo bez rotacji. 3. Jeśli P1.1 = 1 to ustawiasz najmłodszy bit w rejestrze/zmiennej, jeśli nie to zerujesz (poprostu dodajesz zawartość pinu do rejestru/zmiennej) 4. Jesli ni eodebrałes jeszcze 8 bitow to skocz do 2. Pozdrawiam...
int i; for(i=0;i<=255;++i) { OCR0B=i; } a żeby powoli, to byś musiał delay funkcje zastosować. #include <util/delay.h> ... for(i=0;i<=255;++i) { OCR0B=i; _delay_loop_2(100); } gdzie 100 w funkcji to jest odstęp (chyba cykle procesora razy cośtam, ale nie mam pewności) Dodano po 12 funkcja for(xxx;yyy;zzz)...
Kod łatwiej byłoby analizować gdybyś dał komentarze. Bez tego trzeba szukać w nocie jaki preskaler ustawiłeś. Kod nie zadział z każdym serwomechanizmem. Okres powtarzania impulsów ma ok 4ms a powinien być ok 20ms. Na timerze 8 bit będzie jeszcze gorzej. Gdy ustawisz 16ms (więcej się nie da) to rozdzielczość wyniesie 64us. Zakres regulacji to od 512us...
A może Nokia E52?:) ja używam i jestem zadowolony,ustawiam rejestr na 30dni i nie ma problemu.
Czyli jeśli chcę z taktowania 16,5MHz zrobić 20kHz to preskaler 512 i OCR1C=159? Wyłączać PWM można tym PWM1A? I po włączeniu już przez PWM1A nie trzeba ponownie ustawiać rejestrów (oczywiście bez wyłączania zasilania)?
jeden przyklad zamiast dziesiatek slow ... [syntax=verilog] module clk_divider ( input clk50, output reg clkdiv = 1'b0, input cnt_en, output [7:0] cnt_out ); reg [7:0] cnt = 8'h0; always (at)(posedge clk50) clkdiv <= !clkdiv; always (at)(posedge clkdiv) if (cnt_en) cnt <= cnt + 1'b1; else cnt <= cnt; assign cnt_out = cnt; endmodule ///========================...
A rejestr FLASH_ACR i latency to ustawiasz jakoś? Albert
mam taki problem , otóż namieszałem troche w rejestrze i potrzebuje domyślne ustawiania rejestru... czy jest taki program do tego ? czy ktoś podrzuci mi ustawienia rejestru w pliku .reg ?
Jesli rozumiem chodzi o przerwanie INT aktywowane oadajacym zboczem a nie poziomem. W INT0 ustawiasz bit IT0 w rejestrze TCON na 1 jesli ma byc od zbocza a 0 jesli od niskiego poziomu. w INT1 bit IT1
Gdy program odpalam na sprzęcie i podglądam rejestry debuggerem, okazuje się, że przedstawiona funkcja oprócz ustawienia wymaganych bitów w rejestrze MCR ustawia jeszcze dodatkowo przerwanie dla Mach3 i reset dla Mach2 A co stoi na przeszkodzie, aby obejrzeć krok po kroku kiedy one się ustawiają? Albert
Witam W dokumentacji napisane jest, że preskaler dla TIMER0 i TIMER1 jest wspólny. Ustala się go w TCCR0 (TIMER0) albo TCCR1B (TIMER1). Nie mogę znaleźć informacji z którego rejestru ustawianie ma wyższy priorytet (jest ważniejszy) czy TCCR0 czy też TCCR1A. Sprawdziłem, że kolejność ustawiania rejestrów nie ma znaczenia. Może ktoś wie jak to działa??
Czyli pisząc programy w tym środowisku i nie znając go dogłębnie, wykorzystując bezpośrednie ustawianie rejestrów należy brać pod uwagę, że bity mogą nie mieć wartości domyślnych po resecie.
No widzisz- jak zostałem zmuszony do takiego ręcznego ustawiania rejestrów w bascomie to pomyslałem sobie- dlaczego nie robić tego samego w C? Skoro mam i tak ręcznie się dobierać do wnętrzności procesora. Zwłaszcza że ustawianie rejestrów rozumiem. Najpierw myslałem że Bascom będzie mi jeszcze służył do napisania prostych programów i szybko. Ale tak...
margas- nie w padaj w panikę. Najpierw trzeba pomyśleć- a potem pisać kod. Po co w pętli głównej while(1) wpisujesz #define albo ustawianie rejestrów? Zrób to schematycznie. Najpierw #define- po #include. Potem main(). Potem ustawianie rejestrów w main(). Potem pętla while(1). Może być pusta na początek. Przecież pisanie programu nie polega na pisaniu...
A czym ustawiasz rejestr UCSRA = ? . W nim jest bit odpowiedzialny za podwojenie prędkości usarta.
O podwójnym buforowaniu wiem, datasheet oryginalny i polski mam ale niewiele mi on tłumaczy w tej sprawie. Chodzi mi konkretnie o to, że mam niby ustawiony tryb 14 czyli zgodnie z tabelą w datasheet'cie wartość TOP ustawiam rejestrem ICR1 natomiast w kodzie programu wygląda to tak, że rejestrem ICR1 mam ustawioną maksymalną wartość licznika, a rejestrem...
Niestety jak używam w konfiguracji słowa PCINT4 to kompilator generuje błąd i twierdzi że to nieznane źródło przerwania. To dlatego, że w tym procesorze są tylko 3 przerwania tego typu (w innych raczej nie będzie lepiej). Piny oznaczone PCINT0...PCINT7 mogą ustawić tylko pierwszą z wspomnianych 3 flag przerwań (o numerze 0). Kolejne osiem pinów PCINT8...PCINT15...
Błąd masz w każdym obliczeniu. Ustawienie rejestru PSC na wartość x powoduje podzielenie zegara przez "x + 1". Ustawienie rejestru ARR na wartość x powoduje odliczenie "x + 1" taktów zegara. Z tego względu tego typu rejestry zawsze ustawia się na "x - 1" względem tego co sobie obliczyłeś. 4\/3!!
A w czym problem wystarczy zerknąć do datasheet-a można uaktywnić zarówno sam odbiornik jak i nadajnik. Żeby uaktywnić sam odbiornik należy ustawić bit RXEN w rejestrze UCSRB bez ustawiania bitu TXEN,
No, całego na zaliczenie nie zrobisz chyba. To Lcd to będzie trudne do przetłumaczenia. Na poczatek- w drugiej linijce masz 7bit- a nie wiadomo jaki to procesor. A reszta- ustawianie rejestrów.
Płytka powinna wytrzymać ponieważ ta poniżej ma wytrzymałość do 20A chciałbym zmniejszyć rezystor do 8A. Zwróć uwagę że wcale nie musisz obwodu prądowego przepuszczać przez PCB. Wygodnym i stosowanym w praktyce od dawna jest stosowanie czterozaciskowych boczników, gdzie samo połączenie Kelvina jest realizowane w wygodnym do mocowania elemencie a część...
Od bajtu CB zaczynają się wszystkie rozkazy Z-80 dotyczące operacji na bitach: ustawianie (SET), zerowanie (RES), testowanie (BIT) oraz przesywanie bitów (RR,RL,SR,SL i pochodne). Bajt DD dotyczy operacji na rejestrach IX, a FD na rejestrach IY. Stąd operacje na bitach rejestrów IX rozpoczynają się od DD CB, a na bitach rejestrów IY rozpoczynają się...
D-to rejestry. Można je ustawiać z poziomu programu (device monitor) lub z panelu operatorskiego Mogą być zmieniane w programie np. za pomocą wejść analogowych ,wejść liczników . To tak najprościej mogę Ci podpowiedzieć.Ściągnij sobie manuala. Czy to jest tylko fragment programu?
ustawiasz rejestry oc1b dokładnie tak jak oc1a. Oczywiście ustaw tez timer, żeby działał na wyjściu oc1b. A dokładniejsze info jak pokażesz kod/podasz kompilator...
Stos nie jest ustawiany na r16. Rejestr r16 służy do zapisania w rejestrach wskaźnika stosu SPH i SPL (jeden odpowiada starszemu bajtowi, drugi młodszemu) odpowiednich wartości. RAMEND to zmienna zadeklarowana w plikach *.inc dla każdego procka. Oznacza ona ostatni adres w pamięci RAM. HIGH(RAMEND) i LOW(RAMEND) służą do 'wyciągnięcia' z tej wartości...
Jak najbardziej, licznik 2 ma wyjście OC2. Rejestr = _BV(cos); to przypisanie wartości, a Rejestr |= _BV(cos); to tak jak by Rejestr = Rejestr | _BV(cos); gdzie | jest bitową alternatywą. Taki zapis służy do ustawiania bitu numer cos, niezależnie od jego wartości i wartości innych bitów w tym rejestrze. OC2 jest na PB3, więc nie ma po co ustawiać PORTD...
Nie pisałem tu dość długo, bo "walczę z jakimś dziwnym zjawiskiem", a dokładniej, czytałem co tylko znalazłem, sprawdzałem system antywirusami, pousuwałem wiele różnych programów, ustawiałem rejestr, itp. - i nic nie pomogło. Po prostu jak pisałem, potrafi dziennie zniknąć mi nawet 3 - 5 GB z dysku D, ale co dziwniejsze, jak się okazało, co kilka dni...
Witam, to jednak nie wygląda dziwnie ... bo najprawdopodobniej pomimo to, że użyłeś zwenętrznego kwarca do procka to nie przestawiłeś fusebitów tak aby to on taktował procka. W związku z tym procek taktowany jest chyba tak jak fabrycznie ustawione są fusebity - czyli za pomocą oscylatora wewnętrznego o częstotliwości 1MHz. I dlatego masz ten jak piszesz...
Masz przecież w rejestrze UCSRxA bit TXCx który jest ustawiany po zakończeniu transmisji.
Uruchomiłem debugger, jutro będę patrzył co tam się ustawia w rejestrach od i2c.
Przyczyna leży zapewne w tym, że nie ustawiasz odpowiednich bitów w rejestrze MCUCR. Te bity to ICS00 i ISC01. Domyślnie są ustawione na wyzwalanie przerwania stanem niskim, więc procesor zlicza całą serię przerwań w czasie trwania stanu niskiego. Przestaw te bity na zbocze (tab 32 str 67 DS)
W procesorach 51 ustawiasz parametry pracy w rejestrze TMOD i np. gdy bit GATE=0 dla danego tajmera to start licznika następuje poprzez ustawienie bitu TR w rejestrze TCON , analogicznie stop poprzez wyzerowanie tego bitu. A tak wogóle to polecam książkę Piotra i Pawła Gałki Podstawy programowania mikrokontrolera 8051. Lepszych opisów nie znalazłem.
Chodzi o to, że po pierwszym przerwaniu TCNT1 będzie miał wartość 0, czyli zliczy potem 65536 impulsów. Zaś do generowania, jak Ty chcesz, przerwań co określony odcinek czasu służy tryb CTC. Wtedy w rejestrze OCR ustawiasz ilość impulsów, które chcesz zliczyć, i wygenerować odpowiednie przerwanie.
Ok Freddie, ale przecież jest w odpowiedniej kolejności, najpierw resetuje, potem ustawiam peripheral clocka dla I2C, a dopiero potem ustawiam rejestry I2C. Nawet jeśli wykomentuję te resety to i tak BUSY jest cały czas ustawione, a na pewno linia jest wolna.
Widzę że bardzo oszczędnie ustawiasz rejestry cc1000. Ja przy inicjacji cc1000 korzystam z danych wygenerowanych przez SmartRF Studio tak jak wspomniał kolega pawelwiniarski0 jest to sprawdzone i działa bez problemu.
Dla licznika TIM1 trzeba dodatkowo dodać polecenie: [syntax=c]TIM_CtrlPWMOutputs(TIM1, ENABLE);[/syntax] Ustawia ono bit MOE w rejestrze BDTR, polecenie dotyczy liczników 1, 8, 15, 16 i 17 .
a moze po prostu zacząć od programiku, w kostce, wysyłającego dane bez sprawdzania, co przychodzi? Czy wtedy coś się pojawia na terminalu ? Można też próbować ustawiać rejestr UBBR na 25 ręcznie.
Reset ten co ty chcesz robi się rejestrem TIM->EGR. Ustawiaj bit UG, on wyzeruje się sam. To zresetuje cnt i preskaler. To co ty robisz nie resetuje preskalera, więc co zapis zera w CNT mylisz się o wartość w preskalerze.
Nie wiem, ale Cię naprowadzę: http://www.atmel.com/Images/doc2543.pdf strona 115 dokumentu, jest napisane: Frame Formats: - 1 start bit - 5, 6, 7, 8, or 9 data bits - no, even or odd parity bit - 1 or 2 stop bits Potem kilka przykładowych kodów i od strony 129 masz opisy rejestrów. Konkretniej na stronach 132 i 133 masz opisane bity rejestru UCSRC...
Jesli jest ustawiony tryb CTC- Clear Timer On Campare to wystarczy do rejestru porownawczego wpisac tylko raz. Gdy licznik osiagnie wartosc rejestru porownawczego, zostaje ustawiana flaga przerwania i licznik jest zerowany. Wszystko odbywa sie automatycznie i uzyskuje sie duza dokladnosc. Pozdro Dexter
To jecze sie cos zapytam:P Program pisze w C. Jakie są sposoby sprawdzania stanu np. PB3. Znam takie: bit_is_clear(PINB,PB3); albo sprawdzić jaki jest stan portu... np czy PORTB == 0x0F... Problem mam w tym że albo nie znam jeszcze sposobów odczytania stanu pinów,albo w książce jest błąd w opisie ustawiania rejestrów portów. pozdro
Do standardowych prędkości RS232 lepszy będzie kwarc 11059200Hz. Prędkość ustawia się zadając początkową wartość licznika w rejestrze TH1 oraz odpowiednio ustawiając flagę SMOD. MAX232 służy do konwersji poziomu napięć TTL 0/5V do RS232 -12V/12V
Zlecę napisanie programu do obsługi mikrokontrolera z rodziny PIC18F który to ma w głównej mierze: - wysyłanie i odbieranie danych przez usb - sterowanie układem przez odpowiednie linie danych (ustawianie rejestrów) - odbieranie i przetwarzanie danych z przetwornika a/c Więcej informacji na pw.
astosowanie watchdoga tylko że skończyło mi się miejsce na nowe linie kodów. Masz miejsce wystarczy, że wywalisz: Na początku programu następuje zerowanie programowe wszystkich rejestrów procesora, ustawianie rejestrów portów Pokaż ten kod realizujący programowy reset. Może wiem w czym problem.
1. rezystory muszą być. 2. A stosujesz I2C sprzętowe? Jak tak to nic nie musisz ustawiać. Jak programowe to w ustawiasz PORT na 0 a stany logiczne ustawiasz rejestrem DDR. 3. Tak. Bo "1" w DDR to "0" na linii I2C.
Mam dziwny problem. Kompilator nie "widzi" rejestrów odpowiedzialny za PWM w dsPIC33F. Np. PWM1CON2 (lub PWM1CON2bits). Środowisko zaznacza je na czerwono i program się nie kompiluje. Zakładam że to brak biblioteki ale nie wiem jakiej. W pwm.h i pwm12.h nie ma definicji tych rejestrów. W pliku procesora (p33FJ64GP804.h) również nie ma nic podobnego...
O ile pamiętam wersje A mają mniejszą wydajność prądową portów i pinów. Sygnałowo są zgodne ale mają kilka rejestrów więcej np. do ustawiania parametrów zegara wewnętrznego i opcji sleep. N.
A propos sposobu ustawiania rejestrów USART przyglądnij się funkcji: usart_inicjuj() http://mikrokontrolery.blogspot.com/2011... i wykorzystuj ten sposób używając oryginalnego nagłówka <util/setbaud.h>
ustawianie rejestrów atmega banki rejestrów badanie rejestrów
antena kierunkowa huawei excel porównywanie kolumn cannot convert
saeco picobaristo saeco picobaristo
Lexus NX 350h 2024 – licznik nie wyświetla się w całości, nie działają przyciski kierownicy Lodówka MAN poza ciężarówką – zasilanie, akumulatory, instalacja plenerowa