Napisałem zanim się domyśliłem - dlatego wykasowałem pytanie o optymalizację :) Takie rzeczy ćwicz w Cmaniaku, bo kod kompilatora dla AVR może robić różne uproszczenia.
1. Kod można skrócić o połowę. 2. Stosuj sobie przesuniecie bitowe zamiast liczb szesnastkowych bo można się pogubić. 3. To nie C++ tylko C.
Dzieki wielkie, ustawilem przesunięcie bitowe tak jak powiedziales i zadziałało :)
A może inaczej panowei... Jaki to uC...?.?.? Pytanie dość istotne bo może być problem z głowy... W AVR przy konfiguracji ADC jest rejestr który za to odpowiada... I tak np w ATmega8 rejestr pod tytułem ADLAR ustawiony na 1 powoduje przesunięcie wszystkih bitów w lewo... Większość czyli 8 bitów zostaje w ADCH i tylko ten rejestr czytamy a dwa najmniej...
jednak nie potrafię zrozumieć tego zapisu Jak przesuniesz jedynkę o 3 pola w lewo to masz wartość 8 (innymi słowy to jest *2^n). | to suma logiczna (OR) - czyli zapis (1<<3|1<<5) oznacza ustawienie jako 1 bitów 3 i 5 licząc 0:7. czyli sprawdzać czy jest wciśnięty Negacja logiczna.
Twój LM75 jest na I2C, zakładam więc że umiesz odczytać z niego te dwa bajty z wartością temperatury. Sprawdzasz najstarszy bit, starszego bajtu w odczytanym z czujnika wyniku. jeśli jest równy 0, to znaczy że temperatura jest dodatnia i wynik liczysz poprzez: 1. przesunięcie otrzymanego z czujnika wyniku o 5 bitów w prawo 2. pomnożenie rezultatu tej...
UCSRC = (1<<URSEL)|(1<<U... // z manualna Atmegi zapożyczone:) i działa jako 8b czyli UCSZ0 = 1 oraz UCSZ1 = 1 ;) (3 << UCSZ0) to jest 11 przesunięte o miejsce w rejestrze bitu UCSZ0 Dodano po 8 01 to raczej 7b po mojemu:]
XOR to nie jest odejmowanie. negacja z dodaniem jedynki a pozniej OR to jest odejmowanie. Żebyś lepiej zrozumiał, xor nie daje ci przesunięcia, w związku z tym jeśli przesuniecie w działaniu powinno nastąpić to xor nie zadziała jak odejmowanie. przykład: 12 - 8 = 4 i 12 xor 8 = 8, to tak jak byś w systemie dziesiętnym próbował odjąć od 2 liczbę 8. Jeśli...
Witam 1. Proszę w google wpisać słowo klucz "AVR operacje bitowe" ( >> << & ^ ~) 2. Dobrze użyć #define do opisania co to jest LED0, LED1, jeśli zmieni się miejsce przyłączenia diody to później trzeba będzie pilnować każdego odwołania do takiej diody. 3. Nie ma potrzeby zmieniać stanu wszystkich 8 bitów portu D, wystarczy przesunąć ten...
Jak teraz patrzę to źle napisałem wartości w ADCH :) Ale mnie więcej o to mi chodziło. Tak czy siak, zależy od ustawienia ADLAR. Jeśli ADLAR ustawiasz na "0" to wynik masz przesunięty do prawej dwóch 8-bitowych rejestrów. A więc jeśli interesuje cię wynik 8 bitowy to nie możesz wziąć ADCH, bo będziesz miał tylko 2 MSB a co z resztą? Jeśli ustawisz ADLAR...
Tak, ma. Proponowałem Ci we wcześniejszym poście przeczytanie strony AvrSide. Gdybyś mnie posłuchał to wszystkiego byś się dowiedział. Jest tam taki fragmencik: Avr-gcc nie posiada składni bezpośredniego dostępu do bitów zmienna.numer_bitu. Operacje na bitach wykonujemy używając iloczynu i sumy bitowej, np. dla bajtu: zmienna |= _BV(numer_bitu); //...
Możesz wysyłać jako 16-bitowe SPI. Musisz tylko pamiętać, że kilka ostatnich bitów będzie ignorowane i odpowiednio przesunąć dane
AtTiny2313 nie ma wbudowanego przetwornika AD, więc w prosty sposób się nie da. Można zawsze używając kilku elementów zrobić prosty przetwornik, ale patrząc na ceny innych uK, np. AtMega8, który ma dużo większe możliwości, nie ma to sensu. A wystarczyłoby uruchomić PWM w rozdzielczości 10 bitowej i bezpiśrednio przypisywać mu wartość odczytaną z przetwornika,...
Witam, Szybki, banalny problem z którym nie mogę się uporać ani nigdzie znaleźć rozwiązania - w jaki sposób mogę zmienić stany 4 najmłodszych bitów/pinów Portu B ATMegi nie ingerując w żaden sposób w stan pozostałych ? Np chce ustawić coś takiego, gdzie X to bity których nie chce zmieniać : [syntax=c]PORTB=0bXXXX0101;[/syntax] Probowałem rozwiązać problem...
Witam, Problem (o ile wogóle istnieje) przedstawia się następująco: mam wyjście szeregowe na jednym z pinów PORTB, na tym samym porcie chciałbym zrobić wejście, wszystko byłoby ok, gdyby nie fakt, że "przesuwanie" będzie mi raz włączało, raz wyłączało podciąganie na tym pinie, czy nie będzie z tym żadnego problemu ?? Zastanawiałem się nad zewnętrzym...
Witam. Mam problem z przesunięciem bitowym. Mam taki kod: long int wire_temp(void) { long int zmienna_w; int temp1, temp2; temp1 = 0xCBCF; temp2 = 0xEBAA; zmienna_w = ((temp2 << 16) | temp1); return zmienna_w; } i wynik działania jest błędny. zamiast 0xEBAACBCF jest 0xFFFFCBCF. Widać, że dwa najstarsze bajty się...
Witam, jakiś czas temu zacząłem zabawę z AVR no i w końcu natrafiłem na problem, którego nie mogę rozgryźć. Mam w programie (multipleksowany wyswietlacz 7 seg) linijkę o treści : DOKŁADNIE o ten zapis, wiem ze lepiej uzyć całego portu a nie mieszać jak powyżej D i C, ale nie rozumiem DLACZEGO zapis, który nie powinien ruszać bitów PD2 i PD3 generuje...
czy jest możliwość wyprowadzenia 8 bitów z atmega8 szeregowo na jednym wyjsciu?
Mam drobne pytanie - wykonuję przesunięcie bitowe o zmienną: uchar a,b; a = 1<<b No i ta operacja zajmuje jakies 26 cykli procesora. Przesunięcie o stałą trwa jeden cykl bo raczej jest to zamieniane w czasie kompilacji a tutaj jest 'troszkę' wolniej. Czy można to jakoś przyspieszyć? Procesor - avr atmega32, kompilowane i analizowane w avr studio.
Witam serdecznie! Jestem początkującym programistą, więc liczę na pomoc doswiadczonych kolegów. Ponieważ moje programy zaczęły się "rozrastac" muszę zrobic przesiadkę na ATmega32 a ATmega8. Tak więc mam kilka pytań: - jeśli chcę używać magistrali I2C w ATmega32 to czy linie muszę podpiąć pod końcówki PC1 (SDA) i PC0 (SCL) czy mogę je dowolnie skonfigurować...
Witam, chciałbym przerobić zegarek z tego projektu http://www.avr-tutorials.com/projects/at... na Atmega8. Chciałbym również usunąć odliczanie sekund ponieważ dysponuję tylko wyświetlaczem czterocyfrowym. Po skromnych przeróbkach mój kod wygląda tak: [syntax=c] #define F_CPU4000000UL #include <avr/delay.h> #include <avr/io.h>...
Witam! Chciałbym przenieśc mój projekt z napisany w Arduino IDE na mikrokontroler Atmega8. Gdzieś w internecie dowiedziałem się, że wystarczy plik hex wgrać przez programator USBasp dp procka i wszystko będzie działało. Mam jednak pytania. Czy wgrywanie bootloadera nie jest potrzebne? Czy piny będą się zgadzały(tzn. w arduino ide pin 13 to ten sam pin...
Zmagam się z rejestrem, którego ma ATmega8 symulować, ale nie przyjmuje Danych na rosnącym zboczu CLK. http://obrazki.elektroda.pl/2487102600_1...
Witam serdecznie, mam problem który polega na dostosowaniu programu działającego na AT90S8535P do Atmega8. Dokładniej problem polega na tym że Atmega8 nie posiada wyjść tosc1/2. Poradzono mi aby sam uC pracowal na wewn. układzie RC a zegar na zewnetrznym oscylatorze. Szukałem info na temat zmiany konfiguracji ale nie mogę wymyśleć co zmienic w kodzie...
Witam, Postanowiłem dobudować sobie do zasilacza taki oto woltomierz: http://romanworkshop.blutu.pl/elec/autov... Ponieważ szkoda mi 8zł na nową Atmegę 48 zwłaszcza że mam kilka Atmeg 8 postanowiłem przerobić kod (wstawiam już po zmianach) [syntax=avrasm];Automatyczny 2-zakresowy woltomierz panelowy z 4-cyfrowym wyświetlaczem LED ;Wersja 1.02 dla...
Uczę się programować mikrokontrolery z książki Pawła Borkowskiego: "AVR&ARM7. Programowanie mikrokontrolerów dla każdego" . Ćwiczenie, które mam do wykonania, wygląda tak: To ćwiczenie należy do trudnych, gdyż wiedzę konieczną do jego wykonania należy zdobyć samodzielnie. Na rysunku 7.9 widać schemat z podłączoną tylko jedną diodą. Należy układ obsłużyć...
Witam Będę wgrywał program do tego układu robię to pierwszy raz, w "instrukcji" podano że ma pracować na 8 Mhz fabrycznie ma ustawiony wewnętrzny na 1Mhz. Jak przestawić mu wew., mam program PonyProg i program Atmel AVR Tools i już zgłupiałem bo ani w jednym ani w drugim nie doszukałem się takiej opcji zmiany częstotliwości zegara wewnętrznego:cry:
Witam. Proszę o pomoc w zamianie kodu programu na .hex. Mój program(WinAVR) pokazuje jakiś błąd i nic nie mogę zrobić :| [syntax=c] #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> volatile unsigned char kod_instrukcji=0x00; unsigned char kroki[4]={0x01,0x02,0x04,0x08}; ISR(SIG_INT0) { static unsigned char n,...
Witam kolegów nigdy nie miałem większych problemów żeby zaprogramowac jakiś procek ale tym razem jest masakra ale do rzeczy: Program do wgrania to http://mariuszelektro.elektroda.eu/anali... analizator widma akustycznego który był omawiany już na forum Problemem jest to że trzeba zmienić taktowanie procesora z wew na zew niby proste a...
Dodano po 5 Nie napisałem o co chodzi Bo bardzo rzadko zakładam nowe tematy i nie wyszło mi to chodzi o to że napisałem kod nawet późno i chciałem go spróbować załadować do atmegi 8 ale jest troszkę za duży czy ktoś mógłby sprawdzić czy jest jakaś możliwość ewentualnie mamy jeszcze jeden który jest trochę mniejszy. Proszę o pomoc jeśli to możliwe....
Czesc W czasie programowania w Bascomie zmienilem cos w opcjach przez przypadek i nagle program przestal widziec mikrokontroler. Przy wchodzeniu w oknie programowania do zakładki Lock and Fuse Bits pojawia się komunikat "READLB entry not found". Co się stało i jak mogę uratować ten mikrokontroler? Dziekuje za pomoc.
(at)ElektrodaBot Mam Atmega8A czy potrafisz przekształcić kod asemblera na język maszynowy i go wytłumaczyć?
Tez mi sie wydaje dziwne ze nie mozna tak zrobic ale niestety tak jest.Zrozumielem dokladnie o co ci chodzilo jako ze kiedys sam lamalem sobie glowe nad asmem ale w razie jakby chciec to zrobic w ten sposob lepiej jest dac przesuniecie bitowe bo bedzie ono efektywniejsze.
Nie wiem też po co to dzielenie przez 16 w kodzie, przecież wystarczy przesunąć zmienną o 4 bity w prawo, a kod zmaleje w oczach :) Jeśli chodzi o C to przesunięcie bitowe liczby ujemnej jest niezdefiniowane w standardzie. Albert
Kłopot w tym, że ja wcale nie rozumiem tego fragmentu kodu: [syntax=c] if ((przechowuje = ((przechowuje << 1) & 0x0F) | ostatnia) == 1) { keypin_pressed = 1; } [/syntax] operator "&" - bitowa koniunkcja (AND), << przesunięcie bitowe. Wartość zapisana w przechowuje musi być możliwa do zapisania w formie zero jedynkowej, aby można...
Na mój gust to tam jest byk bo na rysunku nr 2 jest jak wół 1 bajt komendy, 1 bajt danych więc z tym oscylogramem coś nie halo. A jesli ma być zwrócone słowo 11,12,13 ect bitowe to trzeba nieznacząe bity zignorować i np. przesunąć w w prawo o tyle ile bitów będzie brakowało do slowa 16 bitowego.
Tak. Gdybyś chciał wprowadzić przesunięcie o p.cz. to trzeba byłoby wstawić Czestotliwosc = Czestotliwosc +/- Pcz W tym programie Timer1 (16 bitowy) zlicza czas 1s. w jednym przebiegu dla zwiększenia dokładności pomiaru. Impulsy liczone są przez Counter0.
TCCR0 = _BV(x<<CS00); Źle użyłeś makra _BV. _BV(x) jest równoznaczne z ( 1 << x ), czyli w Twoim przypadku próbujesz wykonać podwójnie przesunięcie bitowe. Jeżeli x = 3 (CS00=0): _BV(3<<CS00) = _BV(3) = (1<<3) = 0b00001000 czyli TCCR0 będzie równe 0b00001000 . Innymi słowy, próbujesz ustawić bit tylko do odczytu, zamiast...
To od razu mu trzeba wytłumaczyć co taki zapis oznacza, bo widać, że zaczyna. PD0, PD1..PD9, PC0,PC1..PC8 itd to są zdefiniowane numery pinów w porcie. Definicje te znajdują się pliku nagłówkowym który załączasz na początku każdego projektu pośrednio poprzez: [syntax=c]#include <avr/io.h>[/syntax] Pośrednio, bo dla wygody załączasz io.h, natomiast...
Witam. Przeglądając elektrode znalazłem temat w którym opisana jest funkcja obsługi przetwornika ADC , jednak jest on 10-bitowy. Można programowo zmienić jego dokładność na 8-bit ?(prosiłbym o przykład w basic) Owszem można. 1. Przesunąć wynik o dwa bity w prawo. 2. Skonfigurować przetwornik tak, by podawał wynik wyrównany w lewo - wtedy wystarczy...
Troszkę nieprecyzyjnie się wyraziłem. Chodziło mi o to jak będą wyglądały operacje po rozbiciu tego złożonego wyrażenia i chyba sam sobie odpowiedziałem :-) Otóż: - bajt high będzie rzutowany na wartość 16 bitowa i przesunięty o osiem bitów - bajt low będzie rzutowany na wartość 16 bitową - oba operandy zostaną poddane operacji sumy logicznej - wynik...
Jeżeli masz kwarc 4MHz i baud (czyli prędkość transmisji) 9600, to do UBRR musisz wpisać liczbę dziesiętną 25 (UBRRH = 0; UBRRL = 25;). czyli dla kwarcu 8MHz (bo taki mam załozony aktualnie) UBRRH =0 i UBBRL = 51 ..... czyli rozumiem, że zamiast tego kawałku kodu: UBRRH = (unsigned char)(baud>>8); UBRRL = (unsigned char)baud;...
Przetwornik ADC w ATMega może mierzyć napięcia nie wyższe, niż napięcie zasilania. Ponieważ korzystam z wbudowanej referencji, napięcie mierzone nie może być większe, niż 2,56V. W trybie 8-bitowym daje to rozdzielczość 10mV, zaś w trybie 10-bitowym 2,5mV. Pomiar prądu miał być w zamierzeniach realizowany na boczniku 0R1 wpiętym w masę pomiędzy zasilaczem,...
Tak eliminacja wpływu niestałości długoterminowej (dryftu) to zaleta takiego pomiaru, podobnie w metodzie mostkowej eliminuje się wpływ zmian napięcia zasilania na wynik. Czytanie pojedynczych rejestrów jest możliwe, lepiej jednak od razu czytać cały rejestr. Kompilator zadba o odpowiednią kolejność i zoptymalizuje kod. Można porównać jak to wygląda...
PORTB=0xFF; czyli PORTB= 1111 1111 PINB = 0001 0000 Używając & przycisk PB4 powinien otrzymać wartość 1, czyli, że jest wciśnięty. Dobrze będę stosować przesunięcie bitowe. Niestety, ale kompiluje na razie w Programmer's Notepad, ale fusebity ustawiłem w twoim programie na 12 Mhz i taki oscylator mam wpięty do nóżek XTAL1 i XTAL2 (czyli 1 nóżka kwarcu...
"a >> b" jest przesunięciem "a" o "b" bitów w prawo. "&" to nie porównanie tylko maskowanie (iloczyn logiczny) bitów. Wyrażenie "var>>(3*4)" przesunie zmienną o 12 bitów w prawo, czyli zwróci czwarty nibble (trzeci licząc od zera - stąd trójka, nibble ma 4 bity, stąd czwórka). "(var>>(2*4))&0xf" przesunie zmienną o 8 bitów w prawo i zamaskuje 4 najniższe...
co każda z nich oznacza? Oczywiście, chętnie wyjaśnię znaczenie każdej z tych instrukcji dla mikrokontrolera Atmega8: 1. Instrukcje arytmetyczne i logiczne: - ADD (dodawanie): Dodaje wartości z dwóch rejestrów i zapisuje wynik w jednym z nich. - ADC (dodawanie z przeniesieniem): Dodaje wartości z dwóch rejestrów oraz bieżącą wartość przeniesienia (carry)...
Trochę przekształciłem mój kod, wg wskazówek tu był kod Nadal nie działa. Może mój zamysł w ogóle jest zły. po otrzymaniu impulsu uC ma odczekać 0,45ms i jeżeli nadal na wejściu jest stan wysoki ma rozpocząć się próbkowanie, w tym celu timer ma odmierzać czas dokładnie 1,788ms czyli tyle ile trwa jeden jeden bit rozkazu, Wywołanie przerwania ma następować...
Podoba mi się układ podany przez kolegę Urgon, tylko co jeśli zasilanie jest 12V? Można zasilić wzmacniacz z 12V, zmniejszyć wzmocnienie tak żeby na wyjściu było max 3V, ale czy wtedy nie traci się za dużo rozdzielczości? Przydałby się drugi wzmacniacz żeby przesunąć zakres pomiarowy bez zmniejszenia czułości. Osobiście ja bym się nie martwił o dokładność...
Czołem! trochę odgrzewam kotleta, jednak walcze teraz z tym samym czujnikiem w wersji SPI i mam problemy z ogarnieciem konwersji danych. Zgodnie z notą AN3785 Freescale pobieram i usadawiam współczynniki w zmiennych int16_t (justowanie do lewej). Staram się ogarnąć umysłem kolejne kroki przeliczeniowe i mam wrażenie, że w 1 kroku jest błąd. Mianowicie...
żeby po samym naciśnięciu switcha Co Masz na myśli ? By zmienić kolejność przesuwania bitów Musisz albo nacisnąć drugi raz ten sam przycisk, lub też nacisnąć inny, ewentualnie jeśli skończy się przesuwanie w lewo, nastąpi przesuwanie w prawo. Jeśli ma być to ten sam przycisk to Musisz dodać informację, która będzie widoczna dla podprogramu, który z...
1) Po ustawieniu WS_1 chce by na porcie PD1 była ustawiona wartość 1 logicznej, a po wykonaniu WS_0 wystawienie 0 logicznego na PD1 - według mnie odpowiada to ustawieniu kanału lewego bądź prawego na wyjściu TDA1343a 2) 1<<PD1 to przesunięcie bitowe w lewo co zmieni wartość pinu PD1 na wartość po lewej w PD7 zależało by to od wartości wcześniej...
Dziękuję bardzo za odpowiedź chodź przyznam, że nadal nie jest to dla mnie do końca jasne. Nie pasuje mi to matematycznie. Skoro dzielenie przez 16 to przesunięcie w prawo o 4 pozycje więc wypada jakby 4 na jedną pozycję. Więc dlaczego przy przesunięciu w lewo wartość jest aż tak znacząco różna ? Przesunięcie (shift) o jedną pozycję ozacza pomnożenie...
Wszystko zależy od tego ile masz wolnego czasu i pamięci mikrokontrolera. Ja np. często wysyłam napięcia w postaci szesnastkowej, bo to nie kosztuje praktycznie nic po stronie uC, a program odbierający na PC odczyta je łatwiej niż z postaci dziesiętnej. Samo dzielenie przez 10, potrzebne do konwersji na postać dziesiętną, zajmuje grube dziesiątki instrukcji...
OOPS już wiem. Przesunięcie bitowe to przesunięcie wszystkich bitów a nie tylko jednego. #define HC_TX_OFF HC_TX_DDR |= (1<<HC_TX);HC_TX_PORT &=~ (1<<HC_TX); zamiast #define HC_TX_OFF HC_TX_DDR |= (1<<HC_TX);HC_TX_PORT &= (0<<HC_TX); i już jest OK. To nie USART wyłączał wentylator tylko odczyt_odległości, który był uruchamiany...
Pytanie czy xmega czy bibioteka. Biblioteka, której użyłeś, sama odpowiednio ustawia adres ale adres w parametrze ma być 7 bitowy: [syntax=c] twi->address = (address << 1); <<-- tutaj z przesuwa aby zrobić miejsce na R/W twi->writeData = writeData; twi->readData = readData; twi->bytesToWrite = bytesToWrite; twi->bytesToRead...
Dziex, ale już wpisałem ldi bitcount, low(CRC16poly). Wcześniej mi to nie działało. Może zrobiłem jakąś literówkę. PS. Żeby wywalić starszą połówkę to trzeba przesunąć 8 razy z nie 4. Wiem że LDI działa tylko na liczbach 8-bitowych. Assembler AVR mam w jednym palcu. Dziwiłem się tylko że kompilator automatycznie nie wstawia młodszej połówki jak widzi...
Mógłbyś opisać to dokładniej Typowy 8 bitowy rejestr ma 1 szeregowe wejście (czyli pin na który podajesz albo 0, albo 1). 1 pin na "zegar" gdzie (często) zbocze narastające inicjuje przesunięcie zawartości rejestru o 1 (i aktualny stan wejścia D wskakuje do rejestru). 2 szeregowe wyjścia (jedno zanegowane - do łączenia kilku urządzeń), jeden pin strobe/latch...
Obawiam się, że nie rozumiem pierwszej części pytania. Jeżeli natomiast chodzi moment zapisu, to powiedzmy, że to się odbywa zaraz po uruchomieniu uC. Jeżeli, w momencie zapisu, do adresu komórki dodam przesunięcie bitowe w prawo, to wszystko pięknie się zapisuje i odczytuje. Zapis: [syntax=C] i2c_start(Dev24C256+I2C_WRITE); 2c_write(0x02); i2c_write(0x02...
Po co tak kombinować...?.?.? Jeżeli piszesz w WinAVR (nie wiem jak w innych) to możesz nizależnie od tego jak masz ustawione przesunięcie w rejestrach ADCL i ADCH możesz pobrać wartość 10-bitową w jednej operacji (chodzi mi tylko o zapis a nie o kod wynikowy) czyli np... volatile unsigned int adc; ... int main(void) { for(;;) {...
Witam Zmontowałem sobie prosty układ do ćwiczeń na kodzie wraz z najważniejszymi informacjami. Taki można powiedzieć sandbox do zabawy z operacjami na bitach. http://obrazki.elektroda.pl/5931791900_1... (pewnie dostane mały opie...rz za 1 rezystor na 8 diod - nie posiadam więcej!) Przejdę do sedna sprawy, zastanawia mnie sposób zapisu...
to jest dobre miejsce żeby sensownie zacząć: http://www.mikesflightdeck.com/diy_airco... Co do drivera to robi sie to inaczej. Cztery rezystory podciągające cewki do plusa. Cztery tranzystory ściągające cewki do masy. Osiem rezystorów sterujących tranzystorami (połączenie szeregowe po dwa) Do tego dwa sprzętowe wyjścia PWM (jedno na jedną...
http://obrazki.elektroda.net/23_12536510... Wszystko zaczęło się od wyświetlacza od kasy fiskalnej IBM 93F1090, który w roku 2006 dostał się w moje ręce. Chciałem go uruchomić lecz niestety nigdzie nie mogłem odnaleźć informacji jak się do niego dobrać. http://obrazki.elektroda.net/46_12536505... http://obrazki.elektroda.net/18_12536509...
Przepraszam, że odgrzewam stary temat, ale uznałem, że warto przypomnieć o tym projekcie. Nie chcę tu rozpoczynać dyskusji nt. jak zbudować profesjonalny wzmacniacz cyfrowy, ani też kłótni dot. sensowności tego projektu. Mój post, jak i mój projekt ma charakter czysto edukacyjny, służy pogłębieniu wiedzy na temat samych uC jak i cyfrowego przetwarzania...
Faktycznie działa tak samo, ale problem pozostał. Nadal 1. kolumna jest przesunięta na koniec. Dodano po 34 Problem rozwiązany, wystarczyło dodać delay po zmianie stanu na porcie B. Niby 1 us ale wpływa na działanie programu. Najwidoczniej bez opóźnienia nim stan się ustabilizował to pętla przeszła już do następnej iteracji. Niby drobnostka, a zabrała...
1.Masz błąd w kodzie Zauważ, że jak czujnik wyśle wartość 100,200,300,400,505 to wszystkie diody się zapalą i tak zostanie. PORTC musisz zerować przed każdym zapaleniem diod, bo inaczej one nie zgasną dopóki W nie przyjmie wartości z zakresu 506..1023. 2.Lepiej gdyby kod był taki Do W=Getadc(5) Portc= &B00000000 //ustawiamy wszystkieg diody na 0 Portc.4=(W/512)...
:cry: Nie ma szans aby działało bo jak się robi takie błędy sorrki ale uczę się #include <avr/io.h> #include <util/delay.h> #define F_CPU 1000000L #define CLK_1 PORTD|=_BV(4) //bit CLK=1 #define CLK_0 PORTD&=~_BV(4) //bit CLK=0 #define STB_1 PORTD|=_BV(5) //bit STB=1 #define STB_0 PORTD&=~_BV(5) //bit...
Aha, operacje tego typu: PORTC&=(0<<5)+(0<<4); nie przynoszą efektu takiego jaki oczekujesz. 0 się nie przesuwa bitowo w C. W praktyce ta komenda zostanie zrealizowana tak: PORTC &= 0; Powinieneś napisać tak: PORTC &=~((1<<5)+(1<<4));
Chcąc wykluczyć czy popełniłem błąd w programie czy układ max6675 jest uszkodzony napisałem obsługę programową SPI. max6675.h: [syntax=c] #ifndef MAX6675_H #define MAX6675_H #define CLK_OUT DDRC |=_BV(PC0) //ustawia PC0 jako wyjście #define CLK_LOW PORTC &=~_BV(PC0)//stan niski na PC0 #define CLK_HIGH PORTC |=_BV(PC0)//stan wysoki na PC0 #define...
przesunąć bitowy operacja bitowy przesunąć przesunąć bitowy reszta
citroen pompa krata ekran podłączyć kamera okablować
prądy wirowe pomiar iiyama prolite b2403ws
Jak wejść w menu pieca Immergas Victrix EXA? Schemat zamka master w Peugeot 405 - szczegóły i diagnostyka