Możesz czytać zarówno PORTC jak i PINC. Temat brzmi PINC służy do odczytu stanu PINU .
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.
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)...
do odczytu portów służą rejestry PIN
W void DS_SEND ( int value ) nie strujesz kierunkiem portu
Czyli dla PC5 (ADC5) to będzie MUX3..0 (0101) więc: ADMUX |= _BV(MUX0); ADMUX &= ~_BV(MUX1); ADMUX |= _BV(MUX2); Bądź krócej ADMUX |= _BV(MUX2)|_BV(MUX0); Tak? PS. Jeżeli urządzenie ma zakres woltarzu 0-4.8V a mnie insteresuje i tak zakres 0-2V to czy moge użyć do tego celu wewnętrznego źródła napięcia odniesienia o nominalnej wartości 2,56V?
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.. :)
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.
To są linie RxD, TxD od portu szeregowego. Jeżeli port szeregowy jest włączony, to nie ma możliwości korzystania z tych linii jak ze zwykłych we-wy.
Ja tu, układ tam... Człowiek uczy się cale życie, a do C niedawno się przesiadłem.
a co jest niezrozumiałe?
wartosc = PORTB&0b00000011; PORTB jest portem wyjściowym. Odczytu portu powinno się dokonywać z rejestru PINB, tak jak jest to robione tutaj bit_is_set(PINB, PIN0). Użyteczne może być także makro _BV(), które upraszcza tworzenie maski. Przykładowe użycie: wartosc = PINB & ( _BV(PB1) | _BV(PB0) ); pozdrowienia
a ten pull-up to po prostu przypisać do portu jedynki ??
Zależy w jakim procesorze. Nowsze ATMega wykonują wtedy dodatkową funkcję - Toggle . Zatem proszę nie pisać, że tylko do odczytu. Być może. Ale w tym wątku mówimy o ATmega8. A w nim jest tylko do odczytu.
Na porcie D.6 i D.7 masz zworkę, w sensie zwarcie jednego lub drugiego do masy przestawia program w tryb odczytu jednego lub drugiego rodzaju czujnika.
Jezeli chcesz mierzyć napiecie zasilania procesora czyli te 5V to nie musisz żadnych oporników podłączać do niczego takiego jak ADC. Robi sie to czysto programowo nie tracąc portów,
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ć...
damn... przez caly czas myslalem ze ADC jest na porcie A [; fakt - jest na porcie C. 4\/3!!
No program źle napisany - jakbyś dał sprawdzanie CRC to byś wyelimonował błędny odczyt.
Można wyświetlać temperaturę w podmenu "wybór_Ds" ale trzeba zmienić cały program. Chyba nie jest tak trudno zapisać sobie cztery ID czujników i wiedzieć później który gdzie przypisać. Najlepiej osobno podłączać każdy czujnik i na naklejce na kablu przy czujniki zapisać jego ID. Wiedząc gdzie jakie jest ID czujnika można już mu w podmenu przypisać odpowiednią...
1. portD jest 8-bitowy 2. nie mam żadnej deklaracji Open.... Kompitalor też nie pozwala mi zamknąć nieotwartego portu (Close, Close #1, etc)
AREF odłączyłem całkowicie. Cały czas mam ten problem. Już serio nie wiem, co jest. Z innymi portami takiego problemu nie mam
Atmega8 ma przetwornik ADC na Porcie C, natomiast Attiny25 ma ADC na Porcie B który deklarujesz jako wyjście i tu może być problem. Internal_2.56_extcap Czy w związku z tym na AREF masz podłączony kondensator do masy? Tak w ogóle to daj schematy, bo Atmega8 i Attiny25 to dwa różne układy więc napisanie że są tak samo podłączone jest mylące i błędne.
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ć...
Może jeszcze nie do utylizacji. Bascom najlepiej współpracuje z programatorem STK200. Albo z takim na drutach i opornikach- chyba simple się nazywa. Z portu LPT obydwa. Jak masz LPT to zamów STK200 albo zrób.
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...
ja moze przypomne o moim poscie, ktory podaje opcje najbardziej optymalna, bo w waszych przykladach sa dwa odczyty z portu, a wystarczy jeden. 4\/3!!
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
//procedura odczytu bajtu z urzadzenia unsigned char wire_read_byte(short int czujnik) { unsigned char bajt, tmp, i; bajt = 0; for(i = 0;i<8; i++) { tmp = wire_read_bit(czujnik); tmp = tmp << i; bajt = bajt | tmp; } return bajt; } Chciałem zrobic na 2 innych pinach czytanie temperatury, mozliwe ze...
Dokładnie wygląda to tak że komunikacja działa tylko raz. Tzn po podłączeniu USBASP do portu. Można zrobić odczyt, zapis, czy co tam, ale tylko raz. Za drugim razem i za n-tym już wywala błąd. potwierdzam, u mnie dokładnie takie same efekty w USBASP, a próbowałem programować ATmega32, ATmega168, ATmega8.
#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...
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...
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...
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.
Witam, Mam takie pytanko: czy mozna podlaczyc wyswietlacz LCD [HD44780] pod porty PC0...3 w ATMega8, jesli jednoczesnie wlaczony jest przetwornik A/D [ale odczyt jest ustawiony z portu PC4]. Zrobilem tak, i niby dziala, ale strrrrrasznie wolno pojawiaja sie znaki na wyswietlaczu, wszystko jest powolne. Czy to wina samego przetwornika [mam wlaczone przerwanie...
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...
Być może procedury które piszesz są poprawne a problem tkwi w prędkościach portu. Mikroprocesor pracuje z inną prędkością niż com komputera.
martin20023, wg kodu masz MOD i SHD wpięte w działający port szeregowy.
Nie masz wyjścia, jak zacząć bawić się AVRStudio ... :D Bascom potrzebuje SRAM-u, którego ten procek nie posiada... A kodzik, proszę bardzo, ale za jego kompatybilność z Bas-monster nie odpowiadam ;) : #include "m8515def.inc" ; Prohibits use of non-implemented instructions (ATmega8515) .cseg ;—————R...
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....
Chciałem podłączyć 2 czujniki jak w temacie. Kiedyś wyczytałem że można podłączyć je na osobnych portach i w trakcie programu po poleceniu config 1 wire przełączać z którego chce się robić odczyt. Napisałem prosty program i niestety prawie działa. Mimo polecenia 1 wire z kolejnym portem odczyt robiony jest tylko z jednego. Najdziwniejsze że jest to...
W terminalu masz podgląd na port RS232, który jest portem wirtualnym. Nie sądzę aby ATMega to ruszyła musiałbyś napisać hosta usb i dopiero próbować czytać dane z urządzenia. Jedyne rozwiązanie to GPS z wyjściem RS232 w standardzie NMEA-0183. Dostępne moduły OEM lub inne odbiorniki typu Garmin, Trimble, Motorola i pewnie kilka innych. p.s.: możesz zainteresować...
Bajki piszesz. Mam AVR i działam z SHT na zewnętrznym rezystorze 10k. Rezystor w strukturze można wyłączyć i nie będzie miał on żadnego wpływu na port.
napięcia nie przekraczają Vcc , a w programie : V = Wart_ac * 0.039 - czyli 0.039 * 1023 = 39,897 V Jak masz skonfigurowany port C ?
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...
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.
Chcę zaprogramować mikrokontroler ATmega8 tak, żeby można było odczytać przesunięcie myszy PS2. Wiem, że mikrokontroler posiada wbudowany UART, ale nie znam standardu PS2 (nie licząc podłączenia do komputera). Proszę o pomoc: jak podłączyć PS2 do wejść UART oraz jak odczytać dane o przesunięciu myszy (jaki format danych, szybkość transmisji itd.) oraz...
Witam Gdzie szukać przyczyny ? Poza obudową Atmega8 (DIL - TQFP) wszytskie elementy są takie same. Podciągnięcie 1820 do zasilania 3k3 . Za mocno jest podciągnięta linia danych. Zwiększ ten rezystor, w trakcie transmisji tranzystor zwiera do masy tą linię i może powodować dodatkowe dogrzewanie struktury. I dla pewności wyłącz podciąganie portów w procesorze...
kolego tylu ludzi już pisało abyś wypróbował PonyProg'a albo inny podobny program żeby przekonać się gdzie leży błąd. Nie mów, że to taka tragedia nauczyć się obsługi tych inny prostych programów, które służą tylko do programowania procków i nie mają wbudowanych kompilatorów jak Bascom. Nie próbuj robic tego przez AVR Studio bo to całkiem inna bajka....
Witam cos mi sie zdaje ze masz zle napisana instrukcje odczytu, bo powinienes robic odczyt po minimum 15us, no chyba ze zle zroumiałem tego delaya tu masz linka z opisem tego ale peniwe i tak juz cos patrzyles http://mikrokontrolery.net/ogolne_1-wire... wiec ten czas oczekiwania po zmieniniu portu wyjscia na wejscie pownien zajmowac jak najmniej czasu.To...
Hey czyli problem jest w instrukcji Ss = Format(ss , " 0.0") wrzuć ten program i powiedz czy wszystko gra jeżeli tak będę pisał co zrobiłem. [syntax=basic4gl]$regfile = "m8def.DAT" 'deklaracja procesora, w tym wypadku Atmega8 $crystal = 1000000 'deklaracja cześtotlwiości pracy (wew oscylator 1MHz w zupełności wystarcza) 'Deklaracja portów od wyświetlacza...
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)...
Kombinuję z programem obsługującym DWA termometry DS18B20. Używam ATmegi8 i programuję pod C. Chodzi o odczytywanie temperatury na dwóch magistralach onewire - dwóch pinach. Przerobiłem standardową, powszechną bibliotekę do obsługi DS18B20 zmieniając to, że normalnie adres bitu portu magistrali 1W jest definiowany jako makro, a ja zrobiłem z tego parametr,...
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...
Wyswietlam go na porcie b. Na forum tego nie umiescilem, bo szkoda miejsca i nie chcialem tego dodatkowo gmatwac.
Co to znaczy wyświetla jedną linię?? Opisz dokładnie albo zrób zdjęcie. Ekran startowy się pokazuje, czyli "Witaj ..." a w drugiej lini "Temometr.." itd. Gdzie staje program? Co dokładnie pokazuje LCD od momentu włączenia do końca? Prawdopodobnie masz coś na magistrali 1W zwarte albo któryś czujnik poleciał lub port w procesorze. Mogłeś zmienić tylko...
Siemka! Nie ma większego problemu i z paroma czujnikami. Rozwiązania tego problemu są conajmniej dwa. 1. Wrzucasz czujniki każdy na innym pinie portu mikrokontrolera i odczytujesz wynik korzystając właśnie z algorytmu dla jednego czujnika. Jedyna kwestia to tylko sekwencyjne przełączanie interface'u 1-Wire pomiędzy połączonymi z czujnikami pinami portu....
spróbuj na innym porcie. np. w mega 32 trzeba wyłączyć interfejs ( w bezpiecznikach) żeby móc prawidłowo korzystać z portu C. i napisz co ci nie wychodzi? masz złe odczyty , wogóle ich nie masz? Jednym słowem zobacz co siedzi sprzętowo na tym porcie którego używasz i wyłącz to.
Czy dobrze odczytuję, że RX i TX mogę podłączyć do pinów PB0 i PB1? Tak dobrze odczytujesz na PB0 i PB1 jest USART3. I wtedy możesz używać PWM na pinach portu A. I tu masz przykładowy program z TB3216 który przerobiłem aby wykorzystywał UART na pinach PB0 i PB1. [syntax=c] #define F_CPU 3333333 #define USART3_BAUD_RATE(BAUD_RATE) ((float)(F_CPU * 64...
Może to jest usbasp? Jedna zworka do zasilania z USB druga do spowalniania ISP (przynajmniej w usbasp tak jest). Nie pamiętam czy USBasp był wykrywany w komputerze jako port COM dodatkowy.
Po pierwsze to zajrzyj do pdf'a odbiornika IR, bo na Twoim schemacie brakuje konda i rezystora przy podłączeniu TSOP'a. http://pdf1.alldatasheet.com/datasheet-p... Ma być w programie: Wygaszacz (godzina + temperatura), - Czasomierz najprościej na programowym RTC: str. 244 w książce Wiązni, zaś temperatura - str. 293. Wszystko...
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...
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.
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 :)
Otóz tak wygląda pewien program do zczytywania komend z czujnika podczerwieni do którego wysyłane są sygnały za pomocą pilota w standardzie RC5: Poprawiłem tytuł. LordBlick
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...
Pomysł z tym programikiem jest dobry ale lepiej zrobić tak aby wykorzystać przerwanie od uart'u od danych przychodzacych. W obsłudze tego przerwania robimy taki myk że gdy przyjdzie znak "$" to niech sie zeruje licznik (wskaźnik pozycji) i każda nastepna dana z portu niech będzie zapisywana do nastepnej zmiennej. Potem można z tych zmiennych wyciągnąć...
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...
Sekwencja inicjalizacji wywietlacza jest nastepujaca: 1. Wlaczenie zasilania 2. Oczekiwanie min. 45ms (wewnetrzna inicjalizacja) 3. Wyslanie komendy : RS R/W D7 D6 D5 D4 0 0 0 0 1 1 przed ta operacja nie wolno sprawdzac znacznika busy 4. Oczekiwanie min 4.1 ms 5. Powtorz poprzednia komende 6. Oczekiwanie min. 100us 7. Powtorz poprzednia komende 8. Wyslanie...
Jak wszyscy krytykują to i ja się przyłączę: - PWM pracujący w częstotliwości akustycznej i to bardzo nieprzyjemnej to zły pomysł - albo setki Hz albo dziesiątki kHz, - brak uśredniania odczytu z ADC to zły pomysł, - bezpośrednie sterowanie bramką MOSFETa dużej mocy z portu procesora to zły pomysł, - nieprzemyślany tor zasilania procesora, - mało innowacyjny...
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)....
Jak myślisz co tu jest nie tak: #define OW_PORT PORTC // port na ktorym jest termometr #define SET_1Wire DDRC&=~_BV(OW_PIN) #define CLEAR_1Wire DDRD|=_BV(OW_PIN)
zerknąłem w datasheet i okazuję się, że faktycznie. Myślałem, że PORT jest tylko do zapisu, a PIN tylko do odczytu. O ile PIN faktycznie jest tylko do odczytu, to jednak PORT jest typu R/W przepraszam za bezpodstawny opieprz :) człowiek się uczy całe życie :P
Deflcdchar 1 , 14 , 17 , 17 , 14 , 32 , 32 , 32 , 32 ' definicja znaki stopnia Config 1wire = Portd.5 ' konfiguracja portu PD.5 jako wejcia magistrali 1-wire Dim Odczyt(2) As Byte , A As Byte , Licznik As Byte , T As Integer , T1 As Single , Napis As String * 5 'Deklaracja wszystkich zmiennych potrzebnych do pracy programu Do 1wreset 'reset...
Witam W swoim komputerze mam sprawny port LPT. Można by spróbować. Pytanie tylko czy zadziała to na kabelkach włożonych do samego portu i rezystorach 220ohm lub 470ohm bo 330 nie mam ? http://1.bp.blogspot.com/-UdV4WvTqVyo/Ta... Dodano później: Witam Postanowiłem tak dla profilaktyki sprawdzić ten...
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...
Witam, Od wczoraj zmagam się z przetwornikiem. Odczyt z jednego kanału mam opanowany :D Ale schody zaczęły się gdy chce odczytać dane z kilku kanałów. Na początku wpisywałem wartości rejestrów ADCSRA i ADMUX w postaci 0b11111111, bo tak mi wygodniej i ten zapis rozumiem. Ale wyczytałem gdzieś na elce, że to może być błędem, no wiec teraz ryzykuje zapisem...
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...
Najprościej byłoby chyba w tej sytuacji użyć Atmega8, by sterować silnikiem krokowym za pomocą PWM-a. Do tego część portów wykorzystać do sterowania wyświetlaczem LCD 1x16 znaków, lub wyświetlaczem 7 segmentowym LED, aby możliwy był dokładny odczyt pomiaru Do tego jakieś ewentualnie wyprowadzone klawisze aby było możliwa szybka zmiana ustawień linijki...
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...
jakies pomysly? Przestać używać wartości numerycznych i zacząć używać symbolicznych z odpowiednimi operatorami bitowymi, takich, jak w plikach nagłówkowych. Nie ma wtedy prawa się nic p... w kodzie... ;) Niestety jestem bardzo początkujacy w programowaniu i tych operatorów logicznych nie rozumiem... A dajac wartosci liczbowe przynajmniej poczesci rozumiem...
Napisane na szybko nie sprawdzałem ale chyba powinno działać. [syntax=basic4gl] $regfile = "m8def.DAT" 'deklaracja procesora, w tym wypadku Atmega8 $crystal = 1000000 'deklaracja cześtotlwiości pracy (wew oscylator 1MHz w zupełności wystarcza) '*************************************WA... 'Pamiętać o podłączeniu...
Taaa ja to bym napisał jako odczyt całego portu żeby kodu nie powtarzać, z maskowaniem, ale nic by z tego nie zrozumiał :D Tutaj pewnie przy puszczaniu przycisku nawet po długim naciśnięciu może wykonać się procedura krótkiego wciśnięcia.
"że nie powinno się wykorzystywać pozostałych pinów tego portu" Wykorzystałem wszystkie piny Atmega8/168p. Zbudowałem miernik VU, 2 pierwsze piny są używane jako ADC reszta portu jest używana do sterowania przekaźnikami. Nigdy nie zdarzyło mi się, by coś nie działało. Nie wiem tylko jak jest z I2c ( TWI ), nie podłączałem tego razem. Wydaję mi się też,...
Witam wszystkich. Podoba mi się prostota tej konstrukcji i dokumentacja. Więc tak jak kilku innych użytkowników postanowiłem sobie taki zegarek złożyć. Postawiłem sobie jednak troszkę inny cel. Zamiast maksymalizować chce go zminimalizować do wersji naręcznej. Diody w obudowach 0603 i inne malutkie podzespoły. Dlatego chciałem zapytać: - czy, pierwszy...
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 ?
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, Udalo sie uruchomic. Czesc pinow z jednego portu czesc z drugiego. Zrobilem termometr na ds18s20 i atmega8. Zauwazylem ze podczas odczytu temperatury nastepuje chwilowe wylaczenie wyswietlaczy. Czym to moze byc spowodowane, Wiem ze jak przypisuje wartosc bezposrednio to nie ma takiego problemu, wiec podejrzewam ze chodzi o odczyt temperatury....
Witam Wiecie może jak odebrać dane z portu RS232 i wyrzucić na wyświetlacz 2x16? Jak wyeliminować problem odczytu znaku z portu RS232, gdy wykonuję funkcję UART_Receive (z manuala atmegi 8) i nic nie przychodzi na port to program w tym miejscu wisi, ponieważ wpada w nieskończoną pętlę? Pozdrawiam
"- a nie mówiłem :), pulling to pulling". czytaj dokładniej bo o tym na samym początku mówiłem i ja i inni i sam Osamu Tamura - tak więc z tego typu twoich wypowiedzi wynika tylko to co w skrócie zamieściłem w kilku linijkach poniżej: ... a nie mówiłem, że mówiłeś iż mówiłem o tym, że mówiłeś - to ty nie wiedziałeś że mówiłem o tym, że mówiłem ...................
Błędnie zadeklarowałeś definicję portów LCD. Deklarację pinx.x używa się do adresowania odczytu informacji z rejestru potru. Jeśli chcesz sterować zapisem do tego rejestru używasz polecenia portx.x. Zmień w deklaracji z pin na port i powinno być OK.
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...
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 serdecznie, potrzebuje pomocy w napisaniu programu dla atmega8. Chodzi mi o pomoc w jego napisaniu. Z programowania nie jestem najlepszy. Problem polega na:Sczytaniu wartości z przetwornika (http://www.wobit.com.pl/download/pdf/pr... konwersji z kodu Gray`a na kod binarny oraz przesłaniu za pomocą rs232 na PC. Wszystko to na...
Rozumiem, że każdy wentylator daje Ci jeden impuls. Odczytuj stan portu, którego każdy bit jest zapisanym stanem z danego wentylatora. Odczyt ten zapamiętujesz i porównujesz z poprzednio zapamiętanym odczytem z portu. Jeśli jest różnica, to znaczy że któryś z wentylatorów podał impuls. Sprawdzasz który/które to bity i odpowiednio zwiększasz liczbę zliczonych...
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, 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.
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ą ;)
odczyt stanu portu atmega8 atmega8 odczyt odczyt portu rs232
renault ręczny hamulec skrzynia crunch pianka klimatyzacja
wiertarka celma kondensator lenze naprawa
Napęd na koła w traktorku kosiarce 12 KM: mechaniczny vs hydrostatyczny Niedziałający dotyk na tablicy MyBoard - co zrobić?