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)...
Możesz czytać zarówno PORTC jak i PINC. Temat brzmi PINC służy do odczytu stanu PINU .
instrukcja Pinx.y służy do odczytu stanu portu natomiast Portx.y do ustawienia stanu na porcie
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.. :)
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.
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.
a co jest niezrozumiałe?
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ć...
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 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
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....
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...
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...
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...
To L oznacza zegar wyzwalany poziomem nie zboczem. Wszystko sprowadza się do synchronizacji wejścia do zegara systemowego. Chodzi o to, że napięcie wejściowe wchodzi na bramkę Szmidta. potem masz synchronizer. Zapobiega on zmianom sygnału wejściowego podczas zbocza sygnału zegarowego (inaczej cuda miałbyś na wejściu). Pamiętaj, że sygnał wejściowy nie...
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 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 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...
Tak słyszałem ale nawet gdy zrobię wcześniej przed if'em PORD=0x00 lub PIND=0x00 to dioda mi się zapli a niby ustalilem stan niski !!! Na PIND możesz pisać do woli ;) - jest tylko do odczytu. Jeżeli na PORTD wpiszesz 0, a jest ustawiony jako wejście, to tylko wyłączysz pull-up, ale nie wymusisz stanu niskiego. Pull-up załącze poprzez wpisanie stanu...
#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...
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.
Link poprawiony. Czekam 5 us - odnosiło się do 5 nop - czyli do 5 taktów = 5 us. ;) Zgłupiałem totalnie. Czyli, krótkomówiąc w jaki sposób mam: - ustawić stan niski (wysyłanie sygnału reset)? DDR=1, PORT=0? - zwolnić magistralę tak aby zewnętrzny rezystor mógł podciągnąć linię do stanu wysokiego? - w jakim stanie powinien być port (DDR, PORT) tak aby...
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.
Przy konfiguracji jeśli wejście to pin, ale alias zawsze robię port. Zdarzało się, ze jeśli alias pin, to program nie działał.
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)....
Cytat z Forbotu: "Jeśli linię we/wy skonfigurowano jako wejście, poziom napięcia na wyprowadzeniu, niski czy wysoki, sprawdza się odczytując wartość odpowiadającego tej linii bitu w rejestrze PINx (Port Input Pins Address), oczywiście wartość 0 oznacza stan niski, 1 stan wysoki. Dodatkowo, gdy linia jest wejściem i odpowiadający tej linii bit w rejestrze...
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)...
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...
Tak jak napisał kolega mirekk36 port posiada rejestr do konfiguracji kierunku ddrx, podciągania lub sterowania stanem wyjścia portx i odczytem stanu na wejściu czyli pinx . Proponuję zerknąc w notę katalogową ;)
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 ?
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...
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...
...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
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...
w tym te od 16-31 z możliwością wpisywania zmiennej jako wartości (ldi r16,0x12 ) Ja uhm... Bardzo zmienna... "Load Data Immediate" czyli albo natychmiastowa albo stała jak dla mnie ze zmienną to ma tyle wspólnego co... Co do portów to jest PINx jest do odczytu realnego stanu na porcie. Ja kolego proponuję ksiażkę Baranowskiego uC avr Atmega w praktyce...
Skąd Ci przyszedł do głowy taki zapis?[syntax=c]!(PINB, PB0)[/syntax] Ja się domyślam, co chciałeś uzyskać :) ale dla kompilatora jest to równoważne !(PB0), co w rezultacie daje 1. Poprawne sprawdzenie, czy port jest w stanie wysokim robisz przez odczyt i "wycięcie" właściwego bitu:[syntax=c](PINB & (1<<PB0))[/syntax] Poczytaj jak działa operator...
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ć:...
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.
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ął...
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...
Witam wszystkich. Mam problem z obsługą DS18B20 na Atmega16. Zacznę od tego, że obsługę tego czujnika i wyświetlacza segmentowego mam opanowaną, bo na Atmega8 wszystko mi działa, także sam czujnik jest w porządku. Czujnik mam podłączony w trybie NORMAL z użyciem rezytora 4,7k(takie samo podłączenie mam dla Atmega8), do PD0. W bibliotece do obsługi czujnika...
Dla kazdej nozki masz 3 rejestry: DDxn, PORTxn, PINxn, gdzie x to nazwa portu, a n to numer pinu. DDxn. DDxn to kierunek portu, tzn czy port ma byc wejsciem czy wyjsciem. PORTxn odpowiada za stan portu (czy 1, czy 0). PINxn to rejestr tylko do odczytu, tam jest zapisane co jest na nozce. Jesli chcesz dokladnie wiedziec jak dziala taka nozka to odsylam...
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...
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;...
Bez programu i schematu można tylko wywróżyć przyczyny: - może brak jest rezystora podciągającego dla MAX'a? - może port uC zostaje skonfigurowany jako wyjście i wymusza stan niski? . . . Próbowałeś zasymulować MAX'a (podać impuls na uC)? to zaczy czy przerwanie jest wykrywane i obsługiwane prawidłowo.
Witam! Siedzę nad tym już od kilku dni i nie mogę znaleźć rozwiązania. Chcę sterować pętlą (język C), konkretniej kończyć ją w momencie pojawienia się stanu logicznego 0 na jednym z bitów np. portu B. Napisałem program ale nie mam pojęcia jak odnosić się do wartości stanów tych bitów - zamiast 0 lub 1 wyświetla mi tylko wartość np. dla PB7 daje 7, PB6...
Zmień w ogóle koncepcję na prawidłową: - połączone końcówki microswitchy nie do masy tylko do INT0, - po starcie programu porty microswitchy jako wyjścia ze stanem 0 a INT0 jako wejście podciaganiem, potem usypiamy procek i czekamy na przerwanie INT0 wyzwolone stanem niskim - LOW LEVEL, - po wejściu do przerwania port INT0 jako wyjście ze stanem 0 a...
A najprościej stworzyć w RAMie tablice zawierające stan poszczególnych bitów IO w kolejnych cyklach. Zajmie to trochę miejsca, ale bez przesady. Dtedy 8 kanałów to tylko 2 instrukcje - odczyt z tablizy i zapis do portu IO. W tym trybie to wyrobi się nawet AVR taktowany z kwarca zegarkowego :)
http://obrazki.elektroda.pl/6569522000_1... Przedstawiam projekt urządzenia (konwertera), umożliwiającego używanie dżojstików od konsoli Pegasus na popularnym komputerze Commodore 64 (C64). Urządzenie opiera się na mikrokontrolerze Atmega 8. Motywacja Jakiś czas temu zakupiłem komputer Commodore 64. http://obrazki.elektroda.pl/1500263400_1...
Jest błąd nr 92 w tej linii Shift Temp, Left 8 Już poprawiłem brakowało przecinka przed 8, Wyświetla nadal same 000. Sprawdzałem czujnik na moim termometrze z zegarkiem i budzikiem w którym była poprzednia wersja procedury odczytu i jest ok. Zauważyłem jeszcze, że przy tej procedurze odczytu co teraz zamieniłem stan portu Pc5 się wcale nie zmienia,...
Witam. Przymierzam się właśnie do budowy Joysticka DIY na atmega8. O ile odczyt potencjometrów i przycisków nie stanowi problemu , to chciałbym żeby mój joystick był widziany przez PC-eta jako domyślny kontroler gier. Wiem że jest to możliwe z wykorzystaniem dwóch portów uC jako interfejsu USB . Ma ktoś może jakiś pomysł ? Z góry dziękuję za wszelką...
Czy stan wysoki na tych wyprowadzeniach może być z takiego zakresu jak podałeś (0.2 - 1.0 s)? Stan wysoki na tych wyprowadzeniach ma się utrzymywać przez czas dobrany doświadczalnie po stworzeniu całego układu. Lecz będzie on wybrany z przedziału 200ms-1s. Prąd cewek elektromagnesu ma być dobrany tak by magnesy zawsze działały z pełną, możliwą do uzyskania...
Ten układ będzie jakoś tam działać - Tylko daj rezystory do masy na wszystkie wejścia włącznie z INtem. Potem w przerwaniu tylko robić skan portu i widać co zostało naciśnięte. Można użyć najzwyklejszych diód. Ma tylko jedną wadę, jeśli któraś z lini wymusi stan 1 na dłużej to wtedy zablokuje odczyt z innych lini. Można spróbować te stany zróżniczkować...
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....
Jeżeli używasz Bascoma i opcji Config to czy napiszesz pin czy port to dla niego bez różnicy. Różnica jest wtedy gdy robisz np. alias oraz wtedy gdy wystawiasz na daną końcówkę dany stan. Wtedy korzystasz z żelaznej zasady. Rejestr PIN służy do odczytu stanu z danej końcówki zaś PORT do wystawiania danego stanu na daną końcówkę. Do sp3ots: Jeżeli dajesz...
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...
Config Pinc.6 = Input Config Pind.2 = Input Config Pind.3 = Input W1 Alias Pinc.6 W2 Alias Pind.2 W3 Alias Pind.3 Do If W1 = 1 Then Locate 1 , 38 Lcd "S" Else Locate 1 , 38 Lcd "N" End If If W2 = 1 Then Locate 1 , 34 Lcd "S" Else Locate 1 , 34 Lcd "N" End If If W3 = 1 Then Locate 1 , 30 Lcd "S" Else...
Zanim zaczniecie mnie odsyłać do funkcji szukaj, prosiłbym o przeczytanie postu do końca, ja nie znalazłem w archiwum odpowiedzi na moje pytanie. Mam ATmega8 połączonego z CC1000 na porcie D: PALE - PD2 PDATA - PD3 PCLK - PD4 Używam biblioteki ze strony chipcona i winavr. Musiałem poprawić plik nagłówkowy, ale teraz już się wszystko kompiluje, ale nie...
ad1. Jezeli wykorzystujesz je wylacznie do programowania to nic z nimi nie rob. Co najwyzej mozesz ustawic je jako wejscia z pullupem. ad2. Obowiazkowo z pullupem. Mase prcesor rozpozna a jakby mial rozpoznac stan wysoki?? Na wiszacym pinie w powietrzu generuja sie zaklocenia i rezultat odczytu jest nieprzewidywalny. ad3. Nie ma sensu ad4. Ja ustawiam...
Jeśli chciałbym zrobić sterowanie zamiast jednym portem, to np.: 10 portami, odczyt stanu z 10 innych + 3 termometry, to wystarczy zaopatrzyć się w "większą" atmegę? Czy większa atmega i sprzętowy stos? .... to zrobiłbyś to spokojnie nawet na procku typu ATmega8 !!! ale .... w trybie komunikacji np po UDP czy TCP ... no ale to trzeba umieć sobie samemu...
Cześć !!! Pomysł bardzo dobry i ciekawy. Ale propnuje przesiąść się na jakiś procesorek ze sprzętowym I2C np. Atmega8 lub któryś z grupy nowych procków Philipsa. Dlaczego. Komunikację Mikroprocesorów z i2C w trybie Slave najłatwiej jest zbudować, gdy masz możliwość obsługi protokołu w przerwaniu. Tzn. procek dalej się kręci , coś czyta czym się zajmuje...
najprościej? bierzesz procek ATmega8 - szt.1 , progrmator STK200 - szt.1 (np z allegro za ok 15zł) , bierzesz BASCOM wersję demo (do zassania z netu www.mcselec.com) na PC i piszesz w nim program do obsługi tego rejestratora, w Bascomie będzie to dla ciebie chyba najmniejsza pestka. Jeśli chcesz się dowiedzieć jak pisać programy w Bascomie to kupujesz...
Config Portc = Input ' ten wpis nie jest potrzebny - by default- port jest input DDRC = &B0000000 ' ten wpis jest to samo co wyżej (nie potrzebny) PORTC = 0 ' by default wszystkie piny portu mają stan niski (0), więc nie jest konieczne Pozwolę sobie nie zgodzić się z takim podejściem (nie z faktem). "Kiedy coś jest niepewne, jest pewne" (cytat z filmu...
Można trochę bajtów zaoszczędzić :) Dodaj bibliotekę obsługującą hardwarowe TWI: [syntax=basic4gl]$lib "I2C_TWI.LBX" ...... I2cinit Config Twi = 100000[/syntax] Odczyt danych z EEPROMU, zamiast: [syntax=basic4gl] Dim Mz1 As Byte Dim Gz1 As Byte Dim Mz2 As Byte Dim Gz2 As Byte Dim Mz3 As Byte Dim Gz3 As Byte Dim Mw1 As Byte Dim Gw1 As Byte Dim Mw2 As...
Stany nie ustalone i inne dziwne rzeczy . Dmucham na zimne jak to elektryk a nie elektronik . Ksarim podesłał mi kod działający ale po modyfikacjach portów LCD i 1Wire wyświetla mi Temp. : 0 °C (nie znam się ale po mojemu nie widzi ds ale powinien pokazywać jak zobaczy ds'a 82,5 o ile dobrze pamiętam ) PS czytam Datasheet'y :D Zapodałem oscyloskop i...
Mozliwe. Ale skoro mam ustawiony PORTD (piny danych wysylanych do wyswietlacza) ustawione na OUT, to jak czytac stany wymuszone na nich przez LCD (status)? Uzywam CodevisionAVR. bardzo prosto, w momencie kiedy chcesz czytac dane z tego pinu portu, ustawiasz go na wejscie. Po skonczeniu odczytu ustawiasz go spowrotem na wyjscie. Kierunek danych portu...
Na wstępie widzę, że popełniłem straszną gafę. Zczytywałem stan portu przez PORT zamiast PIN:) Napisałem dwie kolejne wersje. ISR(TIMER0_OVF_vect)// { TCNT0=39; //1.728ms if (bit_is_set(PORTD,IR)) {IR_CMD[i]=1;} else {IR_CMD[i]=0;} i--; if (i==0) {TCCR0=0x00; i=13; _delay_ms(1000);...
Ja korzystałem z przerwania INT0 ( najczęsciej ) i nie miałem problemu Nie miałem też problemu z Timer0 i Timer1 . Procesor który programuje to ATmega16 (lubię go). A jeśli chodzi o TINY 24 to Port B jest 4-ro bitowy ale DATA REGISTER jest 8-mio bitowy. Bity 4...7 są podane jako tylko odczyt. Podstawiając wartość portu Pod zmienną typu BYTE ( bo mniejszej...
No to próbuję: [syntax=c] //* \section OA Original author //* Andy Gayne is the original author of this application note. //*/ //program z noty Atmela 136 //przerobiony na ATMega8, kwarc 11059200 i okrojony program #include <avr/io.h> #include <avr/interrupt.h> //! Pin mappings #define CHMAX 6 // maximum number of PWM channels #define PWMDEFAULT...
Tak, mam inne sugestie. Odczytaj rejestr statusowy kontrolera T6963. Prawidłowy odczyt potwierdzi właściwe podłączenie wyświetlacza i przy okazji dowiesz się czy kontroler jest prawidłowo zainicjowany. Jeżeli odczytasz 0xFF, to pewnie coś jest źle podłączone. Jeżeli odczytasz 0x00, to najpewniej źle jest skonfigurowany port w uC. Inna sugestia. Podepnij...
Witam No to tak...: 1)jeśli port jest wejściem możesz bezpośrednio odczytać jego stan z rejestru (np w Atmega8 masz rejestr np PIND dla PORTD i tam odczytujesz stan logiczny... '1' lub '0'), jeśli wyjściem - to też możesz odczytać jego stan w tym samym rejestrze....tylko po co ?:). Jeśli chcesz odczytać liczbę 8 bitową na która jest na porcie to odsyłam...
wiem że niektóre uC potrzebują kilku taktów zegara aby ustawić stan logiczny na porcie. W starszych LPC opartych o ARM7 porty IO były bardzo wolne... W nowszych LPC21xx poprawiono to. Chciałem się dowiedzieć jak w tej kwestii wypadają STM32 (przy różnych zegarach) i chciałbym mieć porównanie do Atmegi8 bo na razie takie programuje. Zależy mi na szybkim...
przewlaczylem podobny problem. Jezeli na magistrali sieje, albo są inne problemy (np zwiecha mastera), uklad slave moze pozostac w trakcie odczytu / zapisu danych. W tym momencie nikt nie moze sie podlaczyc do magistrali jako ze SDA jest low. Nie da sie nic wtyslac (zadnych START, STOP ani nic innego). Program wiesza sie na sprwdzeniu flagi TWINT po...
Tryb jest 4 bitowy(chyba),bo korzystam z programu powyżej kolegi sp3uqw piny ma mam podłączone nastepująco PD0->D0.....PD7->D7(atmega8) to chyba nie nie przeszkadza że mam podłączone wszystkie 8 pinów w trybie 4 bitowym?? a mój program wygląda tak: #include <avr/io.h> #include "funkcje.c" #define RS_ON sbi(DDRC,PC5);sbi(PORTC,PC5) #define...
Witam po dłuższej przerwie. Więc tak. "Wrzuciłem" program podany przez kolegę arktik1 w ten, który obsługuje termometr jednak nie wiem czy zrobiłem to dobrze, tzn czy w dobrym miejscu. Objaw jest taki że termometr działa ale zmiana stanu średnio. Objawia się to jakby niestabilnością programu odpowiadającego za przesuwanie stanu. Działa jakby z opóźnieniem,...
zrobilem sobie taki zegarek RTC na I2C i LCD 16x2 na zestawie uruchomieniowym zl2avr jednak nie wiem jak sie zabrac za podlączenie LCD pod I2C myslalem zeby uzyc pcf8574 tylko nie wiem jak podlaczyc LCD do tego ukladu i czy nie trzema jakiejs dodatkowej biblioteki ?? co by to obslugiwala ?? oto moj programik jaki mam do tej pory bez LCD na I2C : $regfile...
Mniej-więcej tak, ale zawsze można to zrobić w "prostszy sposób": [syntax=c] ADMUX = (ADMUX & 0xF8) | (nrKanałuADC) [/syntax] gdzie za nrKanałuADC wstawiasz cyfrę stojącą przy pinie ADCX. U Ciebie będzie to 5: [syntax=c] ADMUX = (ADMUX & 0xF8) | 5 [/syntax] A z tym "PS" to chodzi Ci o taką sytuacje że jeśli na pin zostanie podane napięcie większe niż...
Na szybko przeglądając kod, to nigdzie nie stosujesz podciągania portów. Np tutaj void send(char value) { CLEAR_1WIRE; _delay_us(5); if( value == 1) { SET_1WIRE; } _delay_us(65); SET_1WIRE; } Robisz tylko SET_1WIRE, a więc ustawiasz kierunek na wyjściowy i nic więcej. Musisz też ustawić port w stan...
tak programator jest odpięty... u mnie pod SPI podpięty mam też wyświetlacz graficzny jednak jego inicjalizację robię dopiero po próbie dostępu do karty. wybór wyświetlacza podpięty jest pod nóżkę SS w atmedze a kod który inicjalizuje kartę to : PORTB = 0xEF; DDRB = 0xEF; //MISO line i/p, rest o/p a więc port SS jest ustawiony w stan wyjścia, w stanie...
Rozumiem tylko myślałem, że da się to jakoś zdefiniować bez poprawiania w programie. Skoro funkcje w programie wyglądają np. tak: [syntax=c] //odczyt zawartości pojedynczego rejestru unsigned char SpiReadReg(unsigned char adres) { unsigned char x, maska, wartosc; /*01*/ SCLK_RF_PORT =0; /*02*/ CS_RF_PORT =0; /*03*/ while (SO_RF_PIN !=0);//oczekiwanie...
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...
Do odczytu stanu portu służy instrukcja PINx a nie PORTx , zmieniłem też sposób wyświetlania informacji bo przy Twoim nawet nie wiesz co było i co jest bo czyścisz za każdym razem wyświetlacz $regfile = "m8def.dat" $sim $crystal = 8000000 Dim C As Byte Dim B As Byte Dim Freq As Byte Config Pinc.5 = Input Config Pinc.4 = Input Config Pinc.3...
Witam Mam problem z EEPROM, chcę odczytać zadeklarowaną wartość z pamięci EEPROM i porównać ją w warunku (if) z wartością zmiennej SRAM, spełnienie warunku ma włączyć stan wyskoki na porcie PC4 (powiedzmy zapalić diodę). Przedstawiam napisany przez mnie kod, który niestety nie działa. Proszę o konstruktywne uwagi i zrozumiałe porady, zaznaczam że nie...
Witam! Mam taki problem. Poskładałem sobie pilot i odbiornik IR. Oba na ATmega8. Diody IR i odbiornik TSOP1136 (podpięty na INT0) są do siebie dopasowane. Problem mam przy odczytywaniu wartości z odbiornika. Co robię: •ustawiam przerwanie na zboczu opadającym: MCUCR = (1<<ISC01); // zbocze opadające GICR |= (1<<INT0);...
Pozwolę sobie nieco odgrzać temat. Podobnie jak Autor wątku natknąłem się w sieci na stronę radzio.dxp.pl w poszukiwaniu bibliotek do obsługi wyświetlacza z KS0108 - bo po co odkrywać koło na nowo jeśli inni już to zrobili. Mój wyświetlacz też nie chciał działać. Dziesiątki prób, sprawdzanie poprawności podłączenia i ciągle nic. Nagle po dotknięciu...
Od kilku dni staram się uruchomić pomiar temperatury czujnikiem ds18b20. Pomiar niskich temperatur przebiega poprawnie. Po przekroczeniu temperatury 54stC na wyświetlaczu ukazuje się wartość 127. Poniższy kod jest skopiowany z tego forum, poza tym napisałem własne funkcje obsługi 1wire lecz skutek był taki sam. Programując uC bascomowymi procedurami...
no ok jestem troszke lamerem w kwesti programowania ale taki przykład jak by mi ktoś zarobił a chodzi mi o to ze.mają być cztery przyciski i kazdu bedzie sterował zew. portem zeby sie diody zapalały i teraz nacisne przycik 1 to na np. pinie PD0 pokaze sie stan wysoki po czym po 10ms bedzie stan niski i następnie jak wcisne 2 przycisk to na pinie PD1...
Nie rozumiem po co dioda LED ukazująca stan nawiewu jest podłączona do osobnego pinu. Nie ma takiej potrzeby, a nawet jest to nie wskazane. Stan wejściowy pinu portu D, nawet kiedy w DDRD jest on ustawiony jako wyjście, można odczytać z rejestru PIND, natomiast wyjściowy z PORTD - tak, ten rejestr można również odczytywać. Nie programuję w Bascom, ale...
z grubsza tak, choc zapis logiczny jest bledny - (1<<0) to 1, a (1<<1) to 2 - tutaj nic sie nie zmienia. po prostu: 1. odczytujesz port 2. odwracasz jego stan, dzieki czemu przycisk puszczony to 0, a nacisniety to 1 (jesli przyciski masz podlaczone odwrotnie i maja pull-down'a to ten krok pomijasz) 3. maskujesz nieistotne bity 4. poniewaz...
https://obrazki.elektroda.pl/4073785200_... Cześć. Z początku miał powstać prosty termometr zaokienny z zasilaniem bateryjnym. Miał wisieć za oknem i być tylko na czas odczytu załączany... No właśnie! Obudziłam się, że mam całą szufladkę diod i fototranzystorów IR. Będzie fajnie kiedy zbliżając dłoń do szyby, wyświetlacz pokaże nam...
W ogóle to źle realizujesz I2C. Powinieneś się zabierać za rejestry DDR a nie PORT. Masz tutaj kawałek kodu: ;=======================================... I2cstart: ;=======================================... cbi i2cport,sda ;sda = 0 inicjalizacja Portów cbi i2cport,scl ;scl = 0 inicjalizacja Portów cbi I2Cddr,sda ;sda...
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...
Witam Zapraszam wszystkich zainteresowanych do publikacji swoich chocby najbardziej niepewnych pomysklow na zbudowanie urzadzenia skanujacego odleglosc w jakims zakresie katow: radaru. Od bardziej doswaidczonych uzytkownikow oczekuje konstruktywnej krytyki pomyslow i podzielenia sie wiedza :). Moj pomysl: Moznaby zbudowac obrotowa glowice (obracana...
Witam, wymyśliłem swego rodzaju zdalne sterowanie, jednak mam kilka pomysłów na zrealizowanie tego. Sprawa wygląda tak: 1. AVRek (Atmega8 lub Attiny2313) w zależności od stanów portów generuje jakąś częstotliwość. 2. Częstotliwość ta "przesyłana jest" za pomocą "medium transmisji" w tym przypadku będzie to Krótkofalówka (prawie bezpośrednie podłączenie...
Przeczytałem to co jest wyżej napisane i... nie rozumiem co chcesz zrobić :) Co to znaczy: Potrzeba mi zapamiętać max. 4 liczby które będą następować po sobie dość szybko jednak Atmega potrafi je zdekodować bo jak dobrze się przypatrzę to liczby się zmieniają dobrze, i więc właśnie niech ktoś podpowie, co dopisać by procesor zapamiętał liczby i ustawił...
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...
Zmienna _a1 to pomost pomiędzy biblioteką a programem użytkownika. Tak, to zawartość tej zmiennej odczyta lub zapisze układ Master. Procedura I2C_master_needs_data wykona się, jeśli kod z biblioteki wykryje operację odczytu z magistrali (zostanie zaadresowany Twój Mega8). Jeśli zatem w treści tej procedury zapiszesz cokolwiek do zmiennej _a1 to ta wartość...
Jeśli dobrze rozumiem komunikację PS/2 to na porcie B powinno być wysokie napięcie gdy kliknę jakikolwiek przycisk na klawiaturze. A tak się nie dzieje. Dlaczego? PS/2 to nazwa zarówno złącza jak i protokołu komunikacyjnego. Klawiatura jest urządzeniem, którego złącze PS/2 jest dwukierunkowe, to znaczy że z i do kontrolera klawiatury można wysyłać...
atmega8 odczyt portu sprawdzanie stanu portu wyświetlanie stanu portu
schemat lusterko elektryczny silnik dymić biały schemat pozycjoner
wiertarka celma kondensator lenze naprawa
Czy rozdzielczość 1440x1080 wpływa na wzrok? Jak podłączyć kolumny Altus 200 - instrukcja krok po kroku