https://obrazki.elektroda.pl/2823437700_... Motywacja Naprawiając różnego rodzaju joysticki od konsol retro, niezbędną potrzebą była diagnoza stanu takiego urządzenia. Każdorazowe wyciąganie innej konsoli z szuflady, podłączanie do niej kontrolera, włączanie TV, szukanie odpowiedniego kartridża z grą, aby móc przetestować wszystkie...
https://obrazki.elektroda.pl/5658669200_... Chciałbym przedstawić opis prostego woltomierza pseudoanalogowego. Odczyt wartości zmierzonej następuje w formie punktu świetlnego diody LED, stylizowanej na wzór wskazówki miernika analogowego (opcjonalnie w formie linijki LED), lecz pomiar następuje drogą cyfrową, z wykorzystaniem mikrokontrolera....
Możesz czytać zarówno PORTC jak i PINC. Temat brzmi PINC służy do odczytu stanu PINU .
Witam wszystkich. Zaprojektowałem i uruchomiłem zegarek z wyświetlaczami LED(SA10-21GWA) i układem PCF8583 współpracującym z mikroprocesorem Atmega8 oraz układami PCF8574AP na szynie TWI(i2c). http://obrazki.elektroda.net/21_12497604... http://obrazki.elektroda.net/58_12497606... http://obrazki.elektroda.net/95_12497605...
http://obrazki.elektroda.pl/5677505400_1... Konwerter USB I/O współpracujący z programem ProfiLab-Expert 4.0 Chyba każdy początkujący elektronik spotkał się w swojej naukowej karierze z koniecznością lub też chęcią zaprzęgnięcia swojego komputera do sterowania różnymi urządzeniami zewnętrznymi. Prezentowany układ spełnia wszystkie te...
DZIĘKI za dokładne opisanie :) A czy mógłbyś mi napisać dlaczego PIND =&B00100000 =32 ? Skąd te 32, czy to był tylko przykład, czy faktycznie po wpisaniu jakiejś formuły stan poszczególnych bitów przelicza się na jakąś tam wartość, w tym przypadku 32? To nie są przypadkowo wybrane liczby! Jedynie przykładowo został wybrany numer portu (B.5) albo (D.5)...
Pomijając fakt, że twój odczyt ADC nie ma prawa działać (słyszałeś o rozpoczęciu konwersji PO ustawieniu kanału? oczekiwaniu na jej koniec? w ogóle ciekawe od kiedy 0 w ADMUX odpowiada kanałowi 3...) to chciałbym tylko napisać, że wynikiem czegoś takiego: ~_BV(ADEN)|~_BV(ADIE)|~_BV(ADFR)|~_BV(AD... Jest na 99% 0xFF (ewentualnie...
Przetestowałem wszystkie powyżej wspomniane opcje i nadal nic. Odczyt dokonywany jest tylko jeden raz po włączeniu zasilania mikrokontrolera, później nie ma reakcji na zmianę stanu pinów portu B. A przecież zarówno ADC jak i presostat muszą być kontrolowane w wielu miejscach w programie.
Witam Jezeli chcesz odczytac stan logiczny portu to musisz to zrobic przez pinX, a nie PortX, poniewaz uzywajac PortX odczytasz tylko stan wew. zatrzaskow, a nie aktualnego stanu na lini portu... Oczywiscie zeby zapisac do portu musisz miec kierunek portu ustawiony na wyjsciowy i analogicznie jezeli chodzi o odczyt... Jezeli odczyt i zapis ma byc na...
zmodyfikowałem kod ale dalej dioda miga tylko przez chwile, a jak odłączę całkowicie mikrofon to cały czas świeci Przyczyną jest " PORTB |=(1<<led1);" Pierwsze klaśnięcie ma nic nie wykonywać, a warunek if powoduje wyjście z funkcji while lub dopuścić do wykrycia drugiego, czy kolejnego klaśnięcia. Wtedy nastąpi TOGLLE(zmiana stanu diody na przeciwny)....
Witam. Mam problem z komunikacją mikrokontrolera Atmega8 z komputerem przez port LPT. Do komunikacji wykorzystuje sprzętowy interfejs SPI mikrokontrolera. Atmega8 pracuje jako Slave, a laptop jako Master. Slave ma za zadanie wysyłać kolejno liczby od 0 do 255 (dla testów). Master steruje transmisją i odbiera te dane. Problem w tym, że nie za każdym...
Przeczytałem wasze uwagi i doszedłem do wniosku, że na razie zrezygnuje z trzech czujników i zostanę przy dwóch . Postanowiłem uruchomić układ żeby w ogóle coś liczył. Na razie dopracuje metodę liczenia aby błąd był jak najmniejszy lub całkowicie zerowy. A więc uC na razie pozostanie bez zmian czyli atmega8. Czujniki jak wcześniej wspomniałem TCRT5000....
Do czego to doszło ;p Może od nowa, wersja z i2c chce dopiero teraz wprowadzić jak na razie jest po Bożemu znaczy sie wyswietlacz ze sterownikiem znajduje się na 2pietru kamienicy układ wykonawczy i wyłącznik (countera) znajduje się w piwnicy. Z i2c to dopiero mam zamiar zrobić bo zależy mi na dwóch wyswietlaczach jednym w piwnicy drugim na 2pietrze....
Witam Forumowiczów. Od dłuższego czasu staram się uruchomić wyświetlacz LCD GDM1602a , jednak nie udaje mi sie , problem leży w inicjalizacji jego , bo podłączenie mam poprawne. czytam na forach ze niby GDM1602a jest kompatybilne ze sterownikiem HD44780 , lecz chyba nie do końca bo w GDM1602a jest sterownik o nazwie : Built-in controller (S6A0069 or...
Do odczytu stanu przycisku podłączonego do pinu, używa się PINx. np. Ale czemu są stany wysokie? Przecież nic nie jest naciśnięte. Ponieważ włączone są wewnętrzne rezystory pull-up, podciągające pin do Vcc. Naciśnięcie przycisku powoduje zwarcie do masy, czyli zero na pinie. Innymi słowy przycisk naciśnięty to 0, przycisk puszczony to 1. Reszty dowiesz...
Witam. Mam następujący problem z niedziałającym TWI. Mam kod na atmegę w C. /* Czujnik ultradzwiekowy sterowany z magistrali i2c C= 2010 Grzegorz Eliszewski grzegorz(at)eliszewski.pl esio.eu */ #define F_CPU 12000000UL // czestotliwosc kwarcu 12MHz #include <avr/io.h> #include <util/delay.h> // obsluga opoznien #include <compat/twi.h>...
Witam, Zbudowałem taki układ: http://obrazki.elektroda.pl/9541154400_1... Czy zasilanie mikrokontrolera jest prawidłowe oraz czy nie za mało dałem kondensatorów ceramicznych bo mam pewne problemy z uC. Program się co prawda wgrywa ale moim zdaniem nie funkcjonuje poprawnie. Np. ustawiam wszystkie porty C na wyjścia oraz w stan wysoki...
Witam wszystkich. Na początki zabawy z elektroniką cyfrową, skonstruowałem sobie moduł testowy dla ATMega 8 z procesorem wg poniższego schematu: http://obrazki.elektroda.pl/4315815300_1... http://obrazki.elektroda.pl/7599519000_1... http://obrazki.elektroda.pl/8860755700_1... I napotkałem na pewien problem:...
Witam. Dopiero zaczynam przygodę z mikrokontrolerami(konkretnie ATmega8), więc problemy na moim stopniu zaawansowania to pewnie normalka :) Problemem jest to, że ze zdefiniowanych portów(PB1, PB2 i wszystkie PD) działają tylko PB1 i 2. Na zdjęciach podpiety jest tylko PB2, ale to nie ma znaczenia. Poniżej zdjęcia mojej płytki stykowej i kod programu(w...
Mam problem z portami Atmegi8. Mianowicie, gdy ustawiam na nich "1" to wartości napięć na różnych portach są losowe, na niektórych jest normalnie 5V, a na innych 4,3V, 1,3V, 0,4V albo inne. Za to jak wystawiam "0" to jest ładne 0V. Nie wiem w czym może tkwić problem. Kupiłem nową Atmegę, bo myślałem, że może padła, ale druga zachowuje się tak samo....
Witam!!! Mam problem z ATmega8 ponieważ strasznie się grzeje. W pewnym moim projekcie musiałęm wykonać sprawdzanie stanu wyprowadzeń zewnętrzych PORTU C. Program jest bardzo prosty. wystawiam na PORTC same jedynki i kabelkami zwieram wyprowadzenia portu do masy. Zależnie od tego który kabelek odłącze od masy program wykonuje żądaną instrukcje. Wszystko...
Witam, Przyznam, że powoli wymiękam, dlatego postanowiłem tutaj poszukać pomocy. Prosta sprawa: do PD2 (INT0) podpięty przycisk ściągający do masy. Przerwania uruchomione, działają, aktywują się na zmianę poziomu, jednak w kodzie poniżej wykonanie nigdy nie wpada w warunek if. [syntax=c]ISR (INT0_vect) { if(PORTD & PORTD2) zgas_diodke1(); else zapal_diodke1();...
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. Próbuje napisać program do atmegi8. Atmega ma sterować 2 silnikami przód tył. Program działa Config Pind.0 = Output Config Pind.1 = Output Config Pind.2 = Output Config Pind.3 = Output Config Portc = Input Do Reset Portd.0 Waitms 60 Set Portd.0 Reset Portd.1 Waitms 60 Set Portd.1 Reset Portd.2 Waitms 60 Set Portd.2 Reset Portd.3 Waitms...
instrukcja Pinx.y służy do odczytu stanu portu natomiast Portx.y do ustawienia stanu na porcie
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.
W zasadzie tak, ale można też programowo zrealizować port dwukierunkowy (poprzez modyfikację rejestru DDRx), czyli np. po wysłaniu jakiejś danej z linii portu B, te same linie przechodzą w stan odczytu.. :)
Nie podałeś na których portach ma przyciski i domniemam że na PC2 i PC5 Jeśli tak to wszystkie warunki powinny wyglądać mniej więcej w ten sposób: [syntax=c]if( !( PINC & (1<<2))) { Send_Packet(w7w); } if( !( PINC & (1<<5))) { Send_Packet(w8w); }[/syntax] A problem może wynikać z wysokiego stany PC7 przy odczycie.
Dokładnie tak jak kolega mankinen napisał. To jest jedna z pułapek przy stosowaniu aliasów. Zazwyczaj z tego powodu nie stosuję aliasów, a jak już to zawsze daję aliasy podwójnie np. [syntax=basic4gl]OPrzycisk alias pinb.0 Zprzycisk alias portb.0 [/syntax] Pierwszy kiedy mam coś odczytać z pinu, a drugi gdy zapisuję jego stan.
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...
Aby mieć pewność, że problem nie leży w zależnościach czasowych pomiędzy wysłaniem na port adresu do multipleksera a odczytem stanu bitu, wstaw pomiędzy ustawianie portu i warunek IF opóźnienie np. 1ms: PORTB = PORTB | 0b00000001; waitms(1); if ( Pozdrawiam Mariusz Dodano po 9 Dodano: 74151 ma wyjścia 2 wyjscia komplementarne, więc dobrze by było opisać...
Jeżeli nie masz włączonych pull-up-ów na porcie i port "wisi w powietrzu" to, z uwagi na wysoką imedancję wejściową, port "łapie" śmieci i przy odczycie masz przypadkowe wartości. Szansa, że odczytasz same zera i dioda zgaśnie jest raczej nikła. Jeżeli włączysz pull-up-y, to oczywiście wymusisz stan wysoki.
Przeczytaj sobie część pdf-a od dowolnego AVRa poświęconą typowemu portowi, doczytasz że typowy pin jest sterowany dwoma rejestrami i ma jeden służący do odczytu stanu, odpowiednie kombinacje ustawień pozwalają na uzyskanie kilku stanów. A było na forum o tym tyle razy....
Witam Nie znam schematu dlatego trudno mi jest powiedzieć czy program jest napisany dobrze. Być może jest tam klawiatura matrycowa i obsługuje się ja nieco inaczej niż klawisz podpięty pod port. Druga sprawa to deklaracja portu na początku programu. Najpierw deklarujesz cały port jako wejście a następnie deklarujesz każdy pin z portu C osobno. Tak być...
Dziękuje za zainteresowanie. Udało się, wszystko chodzi na atmega8 . Niestety w przypadku Atmega168 to nie działa. Co może być nie tak? Nap. referencyjne jest ustawione na wewnętrzne i zastosowany dzielnik rezystorowy. Korzystam z portu PINC.0 Pozdrawiam
TAK, bo jak kolega TME wspomniał sygnał wejściowy jest przekazywany poprzez przerzutnik po sygnale zegarowym do rejestru PIN, nie ważne czy z innego zwartego wyjścia nie ważne czy z zewnątrz i nie ważne czy tego samego pinu. W sumie można przyjąć, że ( co może lepiej ci to uzmysłowi) ze stan portu (napięcie na nim jest poza procesorem - to tak jakby...
Piny PB4 - PB7 są wyjściami, dodatkowo w PORTB bity 4 i 7 mają wartość 1 czyli na wyjściu tych pinów będzie stan wysoki. Tzn. jakie napięcie? Napięcie zasilania? tak - będzie napięcie bliskie napięciu zasilania. Nie ważne jest czy będzie to np 5V czy 4,8 czy nawet 4.5V - to wszystko w technice cyfrowej będzie cyfrową 1. Wartość stanu na tych wyjściach...
W helpie opisane jest ze nazwa Alias portc.2 a prwidlowo jest nazwa alias pinc.2 Właśnie. Nie zauważył kolega, że Portc i Pinc to są różne rejestry AVR'a. Znowu nie chodzi o kolorowe tylko o zrozumienie filozofii portów µC. Przypomnę: Portx - rejestr, do którego zapisujemy stan portu jeśli jest zdefiniowany jako wyjścia, lub podłączenie rezystorów...
Tylko że powinieneś przyspieszyć, a nie opóźnić moment odczytu. http://obrazki.elektroda.pl/7392689500_1... Chodziło mi raczej o coś takiego: [syntax=c]// zczytanie bit z magistralii unsigned char read(void) { unsigned char PRESENCE = 0; CLEAR_1Wire; // ustawienie w stan niski DQ _delay_us(2); // odczekanie 2us SET_1Wire; // zwolnienie magistralii...
Witam Otóż chciałbym odczytać stany portów B na uC. Mam zrobione 8 przycisków o wspólnej masie (podłączonej do GND uC) i 8 wyprowadzeniach (do każdego z portu B). Znalazłem w manualu uC ATMEGA8 fragment kodu do odczytywania stanu portów lecz mimo kilku prób i kombinacji...nic :). unsigned char i; ... /* Define pull-ups and set outputs high */ /* Define...
W lipcowym numerze Elektroniki Praktycznej opisany jest konwerter USB-IO. Układ składa się z mikrokontrolera ATmega8, kwarcu 12 MHz, diody oraz paru kondensatorów i rezystorów. Możesz wykorzystać go do sterowania diodami, choć jego możliwości są znacznie większe (np. odczyt stanu portów, dostęp do przetwornika ADC). Układ jest widziany przez system...
#define speaker_pinA_DDR DDRC co oznacza (chyba) ustawienie portu jako wyjście Nie! To tylko zwiększenie czytelności i elastyczności programu. Ta linijka nie ustawia kierunku portu. Każdy port ma swoje trzy rejestry: PINx (do odczytu), PORTx (do zapisu) i DDRx (do ustawienia kierunku). X to literka oznaczająca dany port (np. A). W rejestrze DDRx każdy...
Pozmieniałem sporo w programie. Zastosowałem się do sugestii skrócenia głównej pętli teraz praktycznie jest bardzo krótka a na końcu ma instrukcję waitms 400. Zauważyłem że program jest bardzo wrażliwy na długość głównej pętli gdy tylko znalazła się jedna linijka za dużo program odczytywał tylko wartość sekund z PCF8563P. Stosy ustawiłem na 128 a i...
Ta gałąź z wyłącznikiem jest dość nieszczęśliwie zrobiona... cóż... Jeśli nie zależy Ci na pewności działania a LED nie jest biały ani niebieski podłącz do portu A.0 rezystor pull-down sporej wartości, wyzeruj bity DDRA.0 i PORTA.0. PINA.0 może zostanie ustawiony po przyciśnięciu przycisku. Ale nie na pewno, bo producent gwarantuje stan niski dla napięć...
Witam, Dziękuję za wyjaśnienie różnic związanych z = oraz |= faktycznie mogłem przeoczyć bo czytam książkę bardzo zachłannie :) Wracając do odczytu stanu linii 1 portu d. moons napisał w swoim kodzie [syntax=c] while(PIND & 0x01); /*czeka na wciśnięcie przycisku*/ [/syntax] Czy to jest również poprawny zapis ? Pozdrawiam.
Ale to właśnie jest komplikowanie sobie życia! Nie wykorzystujesz podstawowej cechy 1-wire, mianowicie możliwości swobodnej komunikacji przy wykorzystaniu tylko jednej linii portu uC. Gratis masz kontrolę numerów układów, ich ilości, stanu itp. Programując "po okrężnej" wolniej rozwijasz swoje umiejętności! DS18B20 mają unikalny, 64 bitowy numer ID...
Witam wszystkich Poniżej zamieszczam kod który przeraża mnie swoją wolnością znaczy się brakiem szybkości. To jest STM32 a działa wolniej niz ATMEGA8. Osobiście nie sprawdzałem oscyloskopem taktowania ale jesli wierzyć konfiguracji PLL to zegar główny to 64MHz while zajmuje 16 albo 18 cykli - MASAKRA. Jak to przyśpieszyć? Czy jest możliwe wykorzystanie...
Do zmiany stanu na porcie "D" służy "PORTD". A "DDRD" zmienia czy to ma być wejście albo wyjście. laki_17 masz rację tylko w przypadku linii 1wire jest akurat dobrze ponieważ wpisując na początku programu zero do rejestru PORTD i ustawiając port jako wyjście ściągamy linię 1 wire do zera. Ustawiając go jako wejście (port w stanie wysokiej impedancji)...
Nie. DDRx określa kierunek pinu, czyli czy jest wejśceim czy wyjściem Jeżeli pin jest wyjściem to jego stan ustawiasz za pomocą PORTx czyli w Twoim przypadku PORTD bo korzystasz z pinów w porcie D.
...i na portc jest jtag... ... a nadal nie wiemy jaki to procek... Otóż to właśnie... Prawdopdobnie (?) autor praktykuje na Atmega8, a ten nie ma JTAG. Jeżeli faktycznie jest to M8 to jest szansa że kol. autor nie doczytał dokładnie w DS uwagi o zasilaniu portu C i nie podłączył AVcc do Vcc. e marcus
DDRB, PORTB i inne są rejestrami, ale co znaczące można uzyskać ich adres. Utwórz sobie strukturę, w której będziesz przechowywał wskaźniki na rejestry oraz jakąś maskę bitu nad którym chcesz operować. [syntax=C]#include <avr/io.h> #include <macro.h> #include <stdint.h> struct ow_pin { volatile uint8_t* pin; volatile uint8_t* port;...
Ciekawe to jest w ogóle, bo w zestawie instrukcji AVR nie jest napisane dosłownie, że sbi/cbi wykonują cykl read-modify-write, można by się tego natomiast domyślać z ilości cykli. Analogiczne (operujące na rejestrach I/O) instrukcie odczytu i zapisu (in/out) zajmują jeden cykl. Natomiast sbi/cbi dwa cykle. Dopiero w notach mikrokontrolerów można przeczytać:...
kol. MirekCz chodzi o to abyś zobrazował sobie pomiar przetwornika za pomocą diod Led , dokładniej nie całe słowo tylko 4 najstarsze bity na dowolnym porcie , osobiście polecam jednak LCD bo szybciej i prościej sprawdzisz faktyczny stan , czy sprawdzałeś układ z dodaniem opóźnienia ?
Cześć, dopiero zaczynam przygodę z Atmegą8 i mam kilka (podstawowych zapewne) pytań: 1. Co to znaczy, że pin uC jest w stanie wysokiej impedancji? Tzn jest tam logiczne 0, czy 1? 2. W assemblerze jest taka operacja jak NOP , w C jest np _delay_us() Czy można przyjać, że wywołanie _delay_us(..) odpowiada iluś tam operacjom NOP ? 3. W mojej Atmedze mam...
W zwiazku z tematem znalazlem project AVR309 autorstwa Igora Cesko pozwala on na odczyt do 15 linii sygnalowych (chyba sie nie myle?). Na predce zmontowalem i dziala ;) Pracuje teraz nad programem pobierajacym stany logiczne z portow Atmega8. Nie znam C++ Zalaczam to co udalo mi sie sklecic ;) (odczyt 1 portu). Tyle na poczatek prace trwaja baaaaaaardzo...
Kolejny błąd jest taki, że stan pinu na każdym z portów odczytuje się poprzez rejestr Pind.1, a nie Portd.1 - tylko zmiana stanu (niemożliwy jest jego odczyt). Odczyt Pin, a przypisanie Port. Jeszcze jedno, bo przedtem nie zauważyłem - konfiguracja portów jest następująca: Config Portd.1 = Input, lub Reset Ddrd.1 Jest to w tym przypadku ustawienie pinu...
Tutorial do avr taki znalazłem: http://avr.elektroda.eu/?q=node/8 Jak byś czegoś w sieci szukał, to raczej unikaj tutoriala z patron.net, uczy złych nawyków i jest nieco nie na czasie. Pomiar częstotliwośći na AVR realizuje się w miarę łatwo, przy wykorzystaniu timerów, jeden timer pracuje jako licznik impulsów z zewnątrz, a drugi odmierza czas, mozna...
poszukuje prostego programu w delhpi, oraz prostego kodu w bascom avr na ATMega8, program miałby komunikować sie z procesorem, tj wysyłac jakieś dane, które np powodowałyby zmiane stanu na jakims porcie procesora, mógłby również miec możliwość odczytu stanu dowolnego poru procesora, potrzebuje tego wszystkiego w celach edukacujnych, gdyby ktos posiadął...
atmega8 odczyt portu sprawdzanie stanu portu wyświetlanie stanu portu
western digital reset sygnał centrala głośniej wyłącza
telewizor manta beretta usterki
Moduł zasilania do telewizora Samsung 59 cali - gdzie kupić? Jak zrobić uziemienie do płytki głośnika - poradnik