Nadal brak podciągania, ponadto.sprawdzasz stan wysoki a nie niski.
Nie wiem jak inicjujesz te porty. Atmega ma 3 rejestry. Jeden określa czy port jest wyjściem czy wejściem, drugi czy domyślnie jest stan wysoki czy niski, a trzeci o którym mało kto pamięta używa się do komunikacji i obsługi klawiatury. Ustawiasz port jako wejście lub wyjście i włączasz wbudowane oporniki podciągające i ten stan jest utrzymywany przez...
Witaj Twoje obliczenia wyglądają na poprawne jednak wydaje mi się, że to cli() jest w złym miejscu. Z ustawień timera widze, że mierzysz "powolne" sygnały. Zatem twój program może nie zdążyć złapać przerwania od INT lub złapie tylko zbocze opadające, ale narastającego już nie, bo zostanie wyłączone globalne przerwanie. Poniżej przedstawiam mój kod który...
wiem że można to zrobić za pomocą toggle ale czy w takiej postaci ten kod jest poprawny i będzie działał zgodnie z założeniem? .................. Nie. Ten code nie jest porawny(!) Począwszy od configuracji i ustalenia stanów spoczynkowych portów wejściowych masz w konsekwencji cały program wymagający korrecty, albo tworzenia go od nowa... Wejście nie...
genetix -> no tak rozpędziłem się ;) ... a chodziło mi o to przede wszystkim aby nie pozostawiać wejść bez tegoż pull-up'a (czyli bez wpisanej jedynki na PORTx) - święta racja. Albo drugie wyjście aby uniknąć zakłóceń to ustawić nieużywane porty jako wyjściowe a bezpieczniej wg mnie wtedy dać na nie stan wysoki niż stan niski. Teraz może to precyzyjniej...
nie działał ale po kilku godzinach siedzenia przy kodzie udało mi sie utworzyć kod przy którym udało mi się załączyć układ. Przyczyną załanczania przy innej temperaturze było to że nie brałem rzeczywistej temperatury tylko odczyt z czujnika przed obliczeniem temperatury. Jeszcze tylko nie rozumiem czemu jak daje Set Portb.0 podczas warunku T<35 to...
Witam Dzięki za wskazówkę odnośnie wyświetlania wartości napięcia (poziomu wody) Próbowałem dzisiaj przez kilka godzin pozbyc się tego wait=10 W sumie udało mi się uzyskać to co chciałem ale z małym błędem. poziom się podnosi, osiąga wartość 2,10 i buzer zaczyna się odzywać w takt timera1 (1Hz) zmienna D zwiększa swoją wartość aż osiągnie 20 i buzer...
Dodam, że teoretycznie programator mógłby działać, ale wtedy pracujemy na granicach technicznych rozpoznawania przezeń stanu wysokiego i niskiego - i czasem właśnie nie zaskakuje. Tak czy inaczej mam nadzieję, że uda Ci się szybko uporać z problemem i będę dalej ogłaszał, że nie ma co się łakomić na te 20zł za USBasp, który stwarza więcej problemów...
Witam Właśnie próbuję opanować PCF8583P i jakoś mam problem. Podłączyłem wszystko tak jak ma to być i na wyświetlaczu LCD pokazują mi się różne liczby najczęściej zera lub jakieś liczby. Ściągnąłem już kilka listingów z neta i dalej nic mi nie wychodzi. Oto mój program, może ktoś znajdzie sposób na mój problem i pomoże mi. Układ PCF raczej chodzi dobrze...
Czasy nie są tak istotne ,stosuje wewnętrzny oscylator 8Mhz. Jest istotne żeby program zareagował na zatrzymanie stanu Wysokiego lub Niskiego fototranzystora. Czy zrobi to po 1 sec. czy po 3 to nie bardzo istotne. Jeśli miał bym taki kod w BASCOM z resztą bym sobie poradził. Mam czym zaprogramować i przetestować.
tak właśnie podejrzewałem że bascom nie lubi operacji z dokładnym czasem.Zmiana polecenia z Toggle na not nic nie zmienia.Pozostanie przy sprzętowej generacji.Mam tylko jeszcze jedno pytanie,bo fala którą generuje to będzie nośna dla pilota SIRC.I teraz przy włączaniu i wyłączaniu T1 raz zostaje stan wysoki ,a raz niski na PB1. Na razie załatwiłem to...
Witam odrazy mówię ze dopiero zaczynam programować i juz mam problem. Musze (chce) napisać program który będzie narzazie sterował pinami z 4 przycisków a ma to wyglądać ta Pierwszy przycisk (porty b pin 4 akcja za pomocą dawania stanu niskiego 0 ) służył będzie do wybierania pinu jakim chcemy sterować (piny b0 i b1) Przycisk 2; 3 i czwarty (pin b7 b6...
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...
Witam pisze program do procesora atmega8 i mam problem bo chciałem skorzystać z 4 przetworników ADC a kolejne piny ADC czyli tak gdzie jest ADC4 i dalej chciałem wykorzystać jako wejścia, problem polega na tym, że jak uruchomię przetwornik odczytam dane z rejestru przetwornika i wyłączę go to potem w dalszej części programu nie mogę odczytać nic na...
Sterowanie MOSFETa bezpośrednio z Megi nie może być skuteczne - rezystor na bramce ma zbyt dużą wartość, a napięcie stanu wysokiego (~5V) zbyt niskie do pełnego odetkania kanału. Zobacz PDF-a tranzystora: Rdson podają dla Ugs=10V przy 9A. Przy Ugs=5V prąd poniżej 5A (patrz ch-ka Output Characteristics).
Troche mnie niepokoi że wszedzie gdzie komentarz (i specyfikacja i2c) mowi o ustawieniu stanu wysokiego, Ty ustawiasz niski i na odwrot. Tak chyba nie ma byc? Poza tym mowisz o adresie 0x94 a wysylasz 0x96..?
No to nie wiem co włącza ale dioda podłączona pod PWM mignie zaraz po resecie (sterowanie stanem niskim jeśli steruje stanem wysokim dioda nie mignie)
witam jest proste w asm ale w c też nie powinno być problemu. Przerwania INT0 i INT1 mogą być wyzwalane zmianą stanu napięcia wysokim lub stanem niskim . Odpowiednio ustawić bit w rejestrze MCUCSR. Ustawić bit aktywujący przerwanie w rejestrze GICR. mierzysz czas przez odczyt TIMERa
Nie no jeśli chodzi o mnie to chciałem się upewnić co do założeń bo w związku z przedstawionym schematem wydawało mi się bardzo niejasne. Ale ok - to teraz zauważ, że zakładając iż chcesz odseparować sygnały diodami, to musisz przyjąć założenie, że wejście INT będzie w stanie wysokim poprzez np podciągnięcie programowo wewn. rezystorem do VCC. A zatem...
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;...
Gotowca nie dostaniesz bo zaraz zaczną krzyczeć. Zasada jest prosta PWM to modulacja szerokości impulsów. W Atmega8 szerokość impulsu jest regulowana za pomocą wartości w rejestrze OCRn. Po włączeniu trybu PWM timer zaczyna liczyć gdy wartość rejestru TCNTn (licznika) przekroczy wartość zapisaną w rejestrze wtedy na wyjściu PWM OCn nastąpi zmiana ze...
Witam Co do ustawienia histerezy na 0 – to powinna być pomijana i wtedy również dogrzewanie impulsowe zostanie pominięte (ale nie testowałem tego). Oczywiście należało by zmienić fragment na : Mniej_hist: Decr Histereza Waitms 70 If Histereza = 0 Or Histereza > 20 Then Histereza = 0 Waitms 10 Writeeeprom Histereza , 6 Waitms 10 Goto Poczatek3...
Witam, Jestem w trakcie uruchamiania układu, który zaprojektowałem z myślą o sterowaniu grzałką oporową. Część niskonapięciowa działa dobrze, ale niestety nie mogę sobie poradzić z załączeniem grzałki... Część odpowiedzialna za sterowaniem grzałką została zbudowana w oparciu o scalak MOC3021 oraz triak BT136. Program poprawnie wysyła stan wysoki i niski...
a ja wprowadzę mały zamęt twierdząc ze raczej to jest RC5 ;) No rzeczywiście zamęt wprowadzasz ;) masz rację - bo gdzieś ty widział ramkę RC5, która ma różne długości połówek nadawanych bitów , czyli stanów wysokich i niskich ? może czas jednak poczytać o kodowaniu Manchester/bifazowym ?
Nie chcę transoptora, skoro fotorezystor ma dużą bezwładność (bo ma) użyję fototranzystora, będzie go oświetlała dioda laserowa 5mW. To nie jest transoptor (!)..., mimo że jest zbudowany z podobnych elementów. Transopotor (opotocoupler) jest w obudowie zamknietej, a z tego tytułu odległośc od foto tranzystora do diody emitującej (IR) jest niewielka,...
Witam Mam taki oto problem do rozwiązania. Do Atmegi8 do wyjść OC1A, OC1B oraz PB3 podpięta jest trzywejściowa bramka "OR" (4075). Wyjścia OC1A oraz OC1B pracują jako PWM, natomiast wyjście PB3 przyjmuje stan wysoki lub niski w zależności od potrzeby jako kluczowanie bramki "OR". Sygnały z wyjść OC1A oraz OC1B są doprowadzone w układzie do oddzielnych...
Napisałem właśnie kilka minut temu program którym sterowałem diodami tylko stany wysokie na niskie pozmieniałem ale nie działa;/ Dodano po 2 Gdyby wyświetlacz miał wspólną katodę nie byłoby problemu ponieważ podłączyłbym jako diody, a tutaj trzeba dać inne stany czego nie potrafię bo nigdy ich nie zmieniałem.
Witam , postanowiłem zrobic swój pierwszy zegarek na zew,kwarcu zegarkowym . kwarc podłaczyłem do tosc1 i tosc2 , wyswietlacz led do portów D i zasilanie wyswietlacza do portów C a do portów B przyciski , wyswietlacz jest dobrze podłączony jak i przyciski , ale pojawia sie problem z przerwaniem , program nie wykonuje przerywania(kod z niego działa testowałem...
Zrób sobie detektor kodów. Użyj dobrej biblioteki: Implementacja jest bardzo prosta. Od czasu gdy zacząłem stosować to już się nie bawię wpisanie tego od podstaw. Brzmi fajnie, tylko boję się czy nie spuchnie mi kod. Aktualnie mam 75% zapełnienia pamięci flash (wiadomości tekstowe i tak już są przerzucone do wew. eeproma także nie za bardzo jest z...
witam Mam pewien problem ze skonfigurowaniem przerwania w Atmega8. Program ma wysyłać dane przez UART w zależności od stanu na końcówce PD2 ( INT0 ). Jeżeli ma stan niski to sprawdza jedną zmienną i w zależności od niej wysyła dane. Jeżeli ma stan wysoki to tak samo. Ale tylko jednorazowa zmiana powinna powodować wysłanie danych. Wymyśliłem, że obsłużę...
Witam, potrzebny jest mi generator fali PWM o zmiennej częstotliwości i wypełnieniu. Górna częstotliwość wynosi 150kHz, dolna 10kHz. W programie wykorzystuję dwa kanały adc (tj. adc1, adc2) oraz jedno wyjście dla wspomnianej fali (tj. PC5). Atmega8 pracuje z zewnętrznym kwarcem 16MHz. Górna częstotliwość wymaga 106 cykli zegarowych, dolna natomiast...
Witam. Zakupiłem uC ATMEGA88 (Dokładnie pisze na nim: ATMEGA88-20PU). Napisałem najprostszy z możliwych programów: #include <avr/io.h> int main(void) { int i = 0; DDRD = 0xFC; //1111 1100 PORTD = 0x00; while(1) { if(!(PIND & 0x01)) PORTD = 0x08; if((PIND & 0x01)) PORTD = 0x04; }...
Witam, wymontowałem z drukarki enkoder razem z silnikiem, znalazłem diodę LED, fototranzystory i wszystko śmiga, napięcie waha się od 0 - ok. 5V. Jednak problem zaczyna się kiedy podłączę kanał do pinu uC, bo napięcie nie spada do 0, a do jakichś 3V... w związku z czym procesor uznaje to za ciągły stan wysoki. Pin ustawiony jest jako wyjście ze stanem...
Witam. Próbuje zainicjalizować proces przesyłania danych pomiędzy Nokią 5110, a Atmega88. Schemat połączeń: RX - 10k[Ohm] - TXD RXD - 10k[Ohm] - TX GND - GND Całość zasilana ze stabilizatora 3.3[V] Kod programu: [syntax=c] #include <avr/io.h> uint8_t frames[] = {0x1E, 0x00, 0x0C}; //inicjalizacja void uart_init(uint16_t ubrr) { // ustawianie prędkości...
Tego procesora akurat nie miałem w rękach, ale podejrzewam że idea pewnych rozwiązań (w tym sposób generowania przebiegu PWM) jest taka sama jak w serii TINY, z którą mam do czynienia. Otóż w nocie katalogowej można znależć fragment odnośnie generatora PWM i po chwili zastanowienia już wiadomo jak to działa. O ile dobrze pamietam to: Każdy kolejny impuls...
No to opowiedz własnymi słowami: sbi DDRB, 0- ustawiamy port B jako wejście- oB 00000000 sbi DDRB, 1- ustawiamy port B.0 jako wyjście- oB0000001 sbi PORTB, 0 - ustawiamy stan niski na PORTB.0 cbi PORTB, 1 - kasujemy stan wysoki na PORTB.1- czyli wpisujemy stan niski. Czyli wszędzie stan niski- 0. Ponieważ nie jestem dobry w asm to opowiedz co chcesz...
Witam, pomału uczę się programowania w C AVrów. W sumie to nawet napisałem to co chciałem ale teraz napotkałem problem. Opiszę o co chodzi. Mikrokontroler ma reagować na różne impulsy wejściowe i to jakoś opanowałem. Ale przy niektórych powinien zmierzyć czas przez jaki pojawia się stan wysoki lub niski na wejściu i zależnie od czasu trwania tego stanu...
Więc tak. Skoro łączysz oba układy RSem to po co ci jeszcze jakieś przewody do wywoływania przerwań? Pewnie dlatego, że na tyle ile umiem obsługiwać RS tak sobie radzę :P ogólnie miałem taką wizje, żeby oba układy pracowały normalnie w spoczynku bez siebie. Na panelu np mam godzine, a na tym drugim układzie temperature odczytaną z LM35. A przerwania...
Mój problem jest dość dziwny i nie wiem co robię źle. Pisze sobie program w assemblerze jako jedna wielka wstawka assemblerowa w Bascomie. Chcę odczytywać karty MMC. Utknąłem w punkcie kiedy muszę odczytać dane z karty. Mam kilka kart MMC o pojemności 32MB, wszystkie zachowują się tak samo, zwracają odpowiedź &H80. Korzystam ze sprzętowego SPI, dzielnik...
Ta dioda ma za zadanie szybko rozładować kondensator po wyłączeniu zasilania układu. Bez tej diody kondensator może nie zdążyć się rozładować przy krótko trwających zanikach zasilania. Jeżeli nie będzie rozładowany, to nie będzie opóźnienia czasowego koniecznego do bezbolesnego przeprowadzenia inicjalizacji stanu przerzutników układu 4094. W programie...
No napisałem właśnie, że użyję Atmega8L, ale nie mogę kupić u siebie (wyprowadzenia pinów me takie same chyba jak zwykła Atmega8), jak czytałem o zasilaniu to napisano, że przy zbyt małym napięciu procesor może działać niepoprawnie, albo nawet się uszkodzić, dlatego warto dac stabilizator, który przy zbyt małym napięciu baterii poprostu odłączy zasilanie,...
Cześć, zbudowałem pewien układ i mam do niego 2 pytania. Jedna część układu uruchamia buzzer na 0.5 sek. Buzzer podłączyłem : plus do zasilania, drugą nóżkę bezpośrednio do pinu mikrokontrolera i aktywuje go stanem niskim. (Parametry buzzera to Rated Current 5V i Rated Current to <30mA). Teraz moje pierwsze pytanie czy mogę to mieć tak podłączone...
Juz czaje :) dzieki wielkie :) Teraz zabiore sie za soft :) Jak chce zeby nie swiecil segment to daje stan wysoki na pin, a jak chce, to niski a anode wysoki :) tak jak jest w specyfikacji wyswietlacza ;) Pozdrawiam P.S.: Jescze musze pomyslec nad ustawieniem godziny ;) mysle o jakims przelaczniku po ktorego przelaczeniu wywolywal bym inna funkcje w...
Musial byś dokladnie poczytac informacje na temat konfiguracji portów a AVR.Po krótce wyglada to tak: Powiedzmy ze masz AVR ATmege8 - ktora ma 3 porty B C i D. Kazdy z portow posiada po 3 specjalnme rejestry ktore konfiguruja ten port. I tak port B posiada rejestry DDRB, PORTB i PINB, port C : DDRC. PORTC, PINC, to samo port D. Rejestr DDRB słuzy do...
Witam, proszę o pomoc bo nie wiem jak sobie z tym problemem poradzić. Napisałem program, który mierzy czas trwania poziomu wysokiego impulsu za pomocą funkcji przechwytywania na proc. ATmega8. Sygnał jest podawany na wejście PB0 (ICP). Kiedy pisałem ten program nie miałem generatora, dlatego dopisałem jeszcze dwie linijki programu i na jednym z wyjść...
Czesc, Jak zrobic zeby na wejsciu np. Pinc.1 ustawionego na input mozna bylo podlaczyc +5V i to odczytac oczywiscie - kompil. Bascom. pozdrawiam Nie wiem czy dobrze cię zrozumiałem, no może. Gdy chcesz aby pin był wyzwalany minusem, czyli złączeniem z masą to robisz tak. Config pinc.1=input i set portc.1 powoduje to przez wewnętrzny rezystor podciągnięcie...
to mowie komparator, otrzymujesz stan wysoki i niski na wyjsciu nie potrzebujesz zadnej przetwornicy a/c ja zastosowalem to do attiny2313. tu masz linka do tematu: a tu link do schematu: oczywiscie wszystkich wejsc komparatora nie musisz uzyc i tez nie musisz dawac diod ir a zamiast fototranzystorow zastosuj fotorezystory dziala tak samo sprawdzalem
Trochę chyba się nie rozumiemy. Jeszcze raz. Masz np. taki kod: while(OFF!=0){PORTC=0x00;} PORTC=0xff; A więc: while(OFF!=0){...} czyli while - dopóki OFF różni sie od zera (!= - różny) wykonuj to co jest w {... }, czyli PORTC=0x00; A gdy OFF==0, czyli np. na jakimś tam pinie pojawia się stan niski, to wychodzi z pętli czyli wogole z tego całego polecenia...
Witam, Z pewnoscia pytanie z tematu jest dla was bardziej niz podstawowe. Do tej pory opieralem sie na moim intuicyjnym rozumieniu i bylo ok. Teraz jednak chcialbym sie upewnic o znaczeniu tego sforumuowania. Zaczyna, wlasnie programowanie wyswietlacza lcd z nokii 3310. Podobno jest wazne, aby na poczatku na nozke resetu tego wyswietlacza podac stan...
Podaję działający kod na atmega8. U mnie chodzi na kwarcu 8 MHz, ale zmieniałem na 1 MHz wewnętrzny rezonator i też działało. DS18B20 na PB2. rezystor (u mnie potencjometr) ma mniejszy opór niż 4k7, bo przy wyższych temperaturach świruje. LCD: DB4 - DB7 odpowiednio PB4 - PB7. Potrzebna obsługa LCD jest w kilku linijkach, co nie wygląda najlepiej, ale...
Witam, Jestem zupełnie początkującym, stworzyłem mały i prosty układzik oparty na mikrokontrolerze atmega8. Ma on za zadanie obsługę 48 diod. Parametry diod to: 2mA, 1,8V. Problem polega na tym, iż dioda w dolnym prawym rogu (patrz schemat) świeci zdecydowanie ciemniej od pozostałych. Mam również drugie pytanie. Czy jeżeli podpinam diodę (+) do portu...
Witam. Projektuję czujnik koloru na kontrolerze Atmega8. Mam już schemat oraz program w języku C, ale jestem początkujący w programowaniu i dlatego proszę o sprawdzenie programu lub ewentualne porady. Program starałem się napisać jak najprościej nie jestem pewien końcówki tego programu związanego z porównywaniem zmiennych i wystawianiem stanu wysokiego...
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ć...
Jednak nie czuje tej podpowiedzi odnośnie rezystorów i przycisków, chciałem sterować w taki sposób że gdy przycisk wciśnięty na pinie np PD0 powstaje stan wysoki, może się myle ale dając w poniższy sposób: przycisk równolegle do masy cały czas na wejściu PD0 uP bedzie stan wysoki niezależnie od tego czy wcisne czy nie. Chciałem wprowadzić rezystory...
1) Gdy wartość PWM wpisujesz jako 0 dobrym zwyczajem jest je poprostu wyłączyć, tzn wyłączając PWM całkowicie (powrót funkcji tego pinu jako zwykłe I/O) i ustawienie stanu niskiego. Odłączenie zegara od PWM nic ci nie da bo nie wiesz w którym momencie go zatrzymasz, więc nie wiesz czy tranzystor zostanie włączony czy nie. Zrób test - zwykłe miganie...
Witam, Zacznę od tego, że jestem początkujący jeśli chodzi o mikrokontrolery i elektronikę dlatego proszę was o łopatologiczne wytłumaczenie działania rezystorów podciągających na podanym przeze mnie przykładzie bo to co do tej pory przeczytałem w internecie jakoś do mnie nie dociera. Układ jest prosty mikrokontroler -> termometr DS18B20 połączony linią...
Dodano po 2 to był program główny a teraz plik RS_232_i_INT0/rs_232_int0.c Dodano po 1 przepraszam że przez dłuższy czas nie wstawiałem kodu i schematu ale miałem przeprowadzkę i nie mogłem
Komparator masz wbudowany w MCU. Co do ADC - po prostu odpalasz ADC i przy jego pomocy samplujesz ADC6 i 7 - wartości ADC w okolicach 0 to stan niski, w okolicach 1023 to stan wysoki. Ot cała filozofia. Przy okazji, jak korzystasz z ADC do pod jeden port można podpiąć wiele przycisków - podpowiedź - drabinka R2R.
Zgadza się.Każdy przycisk jest podciągnięty do zasilania rezystorem 3K , więc nie wciśnięty powoduje że jest zawsze na nim stan wysoki, a wciśnięcie powoduje stan niski. I wszystko byłoby OK gdyby nie to że czy mam Loop Until Pinc.5 = 1 czy też Loop Until Pinc.5 = 0 Pomiar pokazuje tylko jedną zmierzoną wartość a nie , jak to powinno być, mierzyć w...
Witam! Opisywany przeze mnie problem dotyczy przykładu z książki Pawła Borkowskiego "AVR i ARM7 - programowanie mikrokontrolerów dla każdego", a dokładniej sposobu podłączenia wyświetlacza zgodnie ze schematem na dołączonym zdjęciu. Warto wspomnieć, ze mikrokontroler jest zasilany poprzez programator USBasp (napięcie 5V). PC0 i PC1 są ustawione w stan...
Witam, mam taki problem, że nie mogę przypisać do zmiennej np. t innej wartości niż na sztywno ustaloną. Mogę zrobić t=30; ale już t=t+30 nie chce skompilować. Jak zrobić aby czas oczekiwania _delay_ms(t); wydłużał się z każdą kolejną pętlą? Dodano po 4 Funkcja _delay_ms przyjmuje tylko wartości wpisane wprost, trzeba zrobić pętlę np taką: [syntax=c]...
Witam, proszę mnie upewnić co robię nie tak. Mam program który (działa :), ale nie do końca) jest termostatem z dodatkowym termometrem (jeden czujnik sprawdza temp na piecu i steruje przekaźnikiem, drugi tylko mierzy temp. zewnętrzną): [syntax=basic4gl]$regfile = "m8def.dat" 'Atmega8 $crystal = 1000000 'taktowanie 1MHz Config Lcd = 20 * 4 'rodzaj wyświetlacza...
Witam, 3 tygodnie temu postanowiłem poznać zasady programowania mikroprocesorów, aby przygotować inkubator (coś na wzór projektu, który znalazłem na niniejszym forum ATmega8A ustawiony na 2MHz i czujnika DS18B20 . Do tego wyświetlacz LED 3-cyfrowy, 7-segmentowy. Program napisałem w C. Nie da się ukryć, że więcej było w tym "wklejania: niż "pisania",...
Napięcie zasilania podane mam non stop, niezależnie od trybu programatora. Reset wzbudził moją ciekawość, jednak nie mam z czym porównać. Na oscyloskopie raz mignął mi tylko jeden pik w stan wysoki, W manualu ISP jest napisane, że przed programowaniem reset powinien być uaktywniony, czyli stan wysoki powinien przejść w niski. U mnie non stop jest stan...
Pomoże Ci mój mały projekcik na szybko: Napisałem tam dekoder rozkazów w bliźniaczym standardzie. Dekoder jest w plikach ir.c oraz ir.h Używany też jest timer (inicjalizacja w main). Program do super eleganckich nie należy gdyż nie korzysta on ze sprzętowego przerwania (akurat nie miałem na płytce wyprowadzonych odpowiednich pinów procesora). To co...
..a ja Ci kolego powiem co jest z Twoim kodem ale nie zmieszczę się w jednym zdaniu. Coś już widać wiesz jak działa mikrokontroler tylko na spokojnie musisz połączyć wiedzę. Mikrokontroler ma do jednego portu przynajmniej trzy rejestry. Jeden służy do tego żeby wybrać czy port służy jako wejście czy jako wyjście. Nazywa się DDRx gdzie x to litera portu....
dondu , dziękuję za radę, bardzo pomocny okazał się również odnośnik do bloga który podałeś. Poniekąd udało mi się rozwiązać problem ale nie do końca. Otóż te napięcia o których pisałem w poście pierwszym, a które nie zgadzały się z tym co ustawiałem w programie wynikały z mojego głupiego błędy - masę podłączyłem do masy innego układu zasilania która...
Witam. Na załączonym fragmencie schematu widać jak mam podłączony przekaźnik(s3-5 5V). Podłączenie to wymyśliłem już jakiś czas temu nie wiedząc nic o tym jak należy podłączać przekaźniki (chodzi o zabezpieczenia). Przekaźnik jest sterowany atmegą8 stanem niskim. Układ zasilany jest z akumulatora 12V. Czas podtrzymania przekaźnika wynosi 4 sekundy po...
Witajcie forumowicze, może nie udzielam się tu zbyt często, ale tym razem potrzebuję pomocy i nie wiem już do kogo mógłbym się zwrócić. Mam 2 x ATmega8. Łączę je między sobą przez SPI. Master posiada dodatkowo UART do rozmawiania z konsolą na PC, slave ma dołożoną jedną diodę do sprawdzania najstarszego bita w przesłanym bajcie (tak w ramach kontroli)....
Witam, proszę o wyjaśnienie zasady działania sygnału PWM [syntax=c]int main(void) { DDRB |= LED1 | LED2; //Wyjścia LED //Inicjalizacja Timer1 (PWM) TCCR1A |= (1<<COM1A1) //Zmiana stanu wyjścia OC1A na niski przy porównaniu A | (1<<COM1B1) //Zmiana stanu wyjścia OC1B na niski przy porównaniu B | (1<<WGM11); //Tryb 14 (FAST PWM, TOP=ICR1)...
Czy zauważyłes co jest źle na tym oscylogramie? Przy minimum 1ms wysoki stan później przez 19 niski. Przy maksimum 2ms wysoki i 18ms niski. Piszemy Ci to już 20sty raz. Wstydziłbyś się taki oscylogram wstawiać. Ja o tym wiem ! Pytam JAK zrobić 1ms niski 19ms wysoki. Rozumiem zasadę działania ale nie wiem jak ją zaprogramować. A z oscylogramem jest...
Wydaje mi się, iż słusznie podejrzewasz...sygnał wymaga pewnych zabiegów. Programu nie przeglądałem ale strategia z przerwaniem zewnętrznym powinna dać rezultaty gdyby mikrokontroler "widział" sygnał. Trzeba by zerknąć dokładnie do noty katalogowej ale tak z pamięci...zakładając, że Twoja ATmega8 zasilana jest napięciem 5V to próg przełączania powinien...
. Zamierzam zrobić tak by mogli wprowadzić korektę (jeśli będzie potrzebna) i zapisać w eeprom. czy to dobry pomysł? Jakoś tak; $Crystal=12000000 Config Timer1 = Timer , Prescale = 8 On Timer1 Inter_1mS Inter_1mS: Counter1 = Counter1 + Licznik (64036 - wychodzi z obliczeń, że da to 1ms) /tu odliczę sobie 103/ Błednie to rozumujesz, albo błednie podałeś...
Chce obsłużyć impulsator przy pomocy mikro procka. Przełącza w taki sposób że po przekręceniu na obu wyprowadzeniach pojawia się stan wysoki, a później znów niski, i tak w kółko. pomiędzy przełączaniem na jednym z wyjść impulsatora jest wcześniej jeden ze stanów. Podłączyłem atmega przez RS. Oto fragment kodu: while(1){ c=PINC; if (c==0x00){valid=1;...
Dziękuję za odpowiedzi obecnie program wygląda tak: „ $regfile = "m8def.dat" Config Portc.2 = Output Config Portb.0 = Input Do If Portb.0 = 0 Then Portc.2 = 0 If Portb.0 = 1 Then Portc.2 = 1 Loop End " Kompilacja i programowanie bez problemu ale wejście portu B.0 (sprawdzałem na B.1 tak samo) nie reaguje na zmiany stanu. Port B.0 jest podpięty...
W zasadzie to dopiero teraz zwróciłem większą uwagę na szczegóły i zauważyłem, że diody LED są wmontowane zbyt mało elastycznie. Będziesz je mógł zapalać z portu tylko jednym stanem. W płytce uruchomieniowej zestawu NE 300-K zrobiono to lepiej. Można tam testować program, w którym stan aktywny na wyjściu dowolnego pinu jest wysoki lub niski. Zapewniają...
Schemat do takiej pierdoly? bez przesady! jest sobie pin (cyfrowe wyjscie) i idzie sobie do to wejsci mostka H i sie pytam czy to dziala i jak obliczyc jaki musi byc rezystor? Bo na wyjsciu cyfraka zawsze cos jest, wysoki lub niski stan no nie?
Jsli pin ustawiony jest jako wyjscie i ustawiony na nim jest stan wysoki to po przycisnieciu przycisku, ktory jest podlaczony do GND, bedzie na czas przycisniecia stan niski, po puszczeniu przycisku stan wroci na wysoki, wystarczy sprawdzac jaki jest stan pinu, jesli zas ustawimy pin jako wejscie to po przycisnieciu stan ustawi sie na niski i bedzie...
Witam, na tamtej stronce masz gotowy cały przykład w asemblerze, fakt dla nieco innej rodziny procków, jednak jak widzisz w asemblerze nie sprowadza się to tak jak w Bascomie do użycia jednego lub kilku poleceń. Tu trzeba wszystko od początku do końca zrobić samemu. Nawet gdybym podał ci cały swój kod wysyłający sygnały IR do moejgo aparatu Olympus...
Witam wszystkich forumowiczow. Za nic na swiecie nie moge sobie poradzic z uruchomieniem komunikacji miedzy ATmega8515(Master) a ATtiny26(Slave). Problem spedza mi sen z powiek:|. Mam kilka pytan: Znalazłem przetlumaczoną instrukcje do SPI Master inicjuje cykl komunikacyjny kiedy wymusi stan niski na pinie Slave Select (/SS) żądanego modułu Slave. Skad...
Witam Od pewnego czasu staram się zrobić prosty programator fusebitow ATmega8 przy pomocy drugiego ATmega8 w opierając się na algorytmach z datasheeta str 224-231. Jednak mój programik nie działa. Jeśli ktoś się kiedyś bawił programowaniem równoległym i byłby skłonny przeanalizować mój kod byłbym wdzięczny. W programie: 1. załączenie zasilania dla programowanego...
robie uklad gdzie chce wykorzystac element max6575lzut.. zapoznalem sie z dokumentacja jednakze nie otrzymuje wartosci zmierzonej.. moze wiecej szczegolow.. uklad podlaczylem do wejscia portd.2 (int0) uP atmega 8... wybralem 5us/K (przez odpowiednie polaczenie wyprowadzene ukladu max).. w programie na wstepie ustawiam port jako wyjscie i ustawiam w...
Cześć Musisz jeszcze trochę poduczyć się z tego materiału, niezbyt uważałeś na lekcjach :) Po pierwsze zgadza się że to jest tranzystor PNP i to jedyne co się zgadza. Opornik między bazą a emiterem w tranzystorze nigdy nie daje prądu :) Jeśli emiter jest na poziomie +5V to jego baza nie zejdzie poniżej 4,3V przy przybliżeniu napięcia Ueb na 0,7V, co...
Jak INTX ma cały czas stan niski to przerwanie jest cały czas wywoływane, a procesor wykonuje jedną instrukcję pentli głównej na jedną obsługę przerwania - czyli działa tylko że bardzo wolno. A rozwiązanie Twojego problemu jest proste. Gdy przyjdzie przerwanie od INTX w stanie niskim to przełączasz to budzisz procesora i przełączasz to przerwanie na...
Chciałem użyć tego przetwornika: [url=]Karta katalogowa Problem polega na długości impulsu wyzwalającego próbkowanie. Czas konwersji to maksymalnie 420ns, a czas trwania impulsu zakończenia konwersji to max 110ns. Dla ATMEGA88 przy 20MHz, jedna operacja wykonywana jest przez 500ns. Po upływie max 530ns sprawdzany jest stan pinu startu konwersji i jeżeli...
Wyłączenie optymalizacji to najgorsze z możliwych rozwiązanie. Nie wiem, czemu próbujesz na nowo "odkrywać Amerykę", ale funkcje do generowania masz już gotowe i to takie, które działają poprawnie niezależnie od poziomu optymalizacji. W katalogu z WinAVR znajduje się dokumentacja avr-libc, tam opisane są dostępne w bibliotekach funkcje. Na początek...
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...
Witam :D Mam problem z obsługą przerwań. Otóż poniżej zamieszczony program w przypadku normalnej pracy wyświetla na wyświetlaczu "1" w przypadku wykrycia stanu niskiego na porcie INT1 wyświetla "0". Niestety program wykonuje 2 - 3 przejścia pomiedzy stanem niskim --> wysokim --> niskim -->... i następnie przestaje reagować na zmianę stanu portu...
Strzelam, że pin SS jest konfigurowany jako wyjście po zainicjalizowaniu SPI, lub nie jest wcale konfigurowany. Żeby SPI działało jako master, pin SS musi być wejściem, na którym panuje stan wysoki, lub wyjściem (tu nie ma znaczenia jaki jest stan), w przeciwnym przypadku przełącza się na Slave - jeśli podczas inicjalizacji SS jest wejściem w stanie...
Jak pobrać dane podczas wykonywania funkcji może i dla was będzie to banalne pytanie ale dla mnie stanowi dość duży problem, mianowicie napisałem sobie program który ustawia na wyjściach uC stany wysokie i niskie, w kolejności od prawej do lewej tak ma się to na przykład w rejestrze pierścieniowym, z konkretnym opóźnieniem przedstawię to na tablicy:...
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...
a jak robiłeś wykrycie stanu niskiego, w jakiejś pętli?, skoro na skopie masz wyraźną różnicę między stanem wysokim i niskim to proc powinien to wyłapać bez problemu.Daj może fragment kodu którym to robisz
ale pojawiają się tam jakieś śmieci, czy nic się nie pojawia, czy czasami ok czasami nie? Jeżeli mówisz ze po uarcie czystym wszystko działa, i na pewno nadając ustawiasz PD2 w stan wysoki i po nadaniu ustawiasz w stan niski (sprawdź multimetrem czy na pewno na tym pinie się stany zmieniają), to 100% masz błąd w hardware. Jakieś zimne luty lub zwarcie....
Mam zbudowany układ jak na schemacie poniżej: w momencie ustawienia portu PC2(załączenie diod D6, D13, D20) na stan niski µK zaczyna szaleć wyłącza inne porty, a na porcie PC2 jest napięcie ok. 3 V, ustawienie stanu wysokiego nie powoduje żadnych anomalii. Wszystkie inne porty działają poprawnie. Jest to wina konfiguracji portu czy może uszkodzony...
może też się podepnę pod temat, na piny na których są bazy tranzystorów w takim układzie powinny być stany wysokie, tak? niby oczywiste ale chciałbym się upewnić, bo widziałem schemat w którym aktywowane były przez stan niski
Witam Jest to moje pierwsze starcie z programowaniem uC i już wystąpił problem. Uruchomiłem już miganie diodami i wyświetliłem coś na wyświetlaczu alfanumerycznym ale nie mogę zmienić stanu linii po naciśnięciu switcha. Sprawdziłem multimetrem po wciśnięciu switach stan na tym pinie zmienia sie z wysokiego na niski natomiast brak reakcji na wyjściu...
startuje, startuje - a twoja dioda LED .... wcale nie ciągle świeci, tylko sobie mruga wbrew pozorom ;) ... ale mruga tak szybko, że twoje oczęta nie potrafią tego zobaczyć i wydaje ci się, że ciągle się świeci zobacz: do portd = 255 ' zapal diodę - stan wysoki waitms 500 ' poczekaj 500ms (cały czas dioda świeci) portd = 0 ' zgaś diodę - stan...
No to tak, według tego co zauważyłem na szybko z Twojego fragmentu i przebiegu umieszczonego na tej stronie co podałeś to, na pewno tak jak masz to wyświetlacz jest cały czas resetowany, bo na pinie z resetem masz zero, czy stan aktywny końcówki z wyświetlacza... Jeżeli wyświetlacz ma działać to reset musi być ustawiony na 1. Zauważyłem też, że masz...
Jeszcze pytanie o przerwanie uartu. Jest ono generowane jak bajt bedzie w buforze. Czy odbiór następnych 2 bajtów mogę zrobić w tymże przerwaniu? (stąd muszę zrobić pętlę opóźniającą ). te 3 bajty potem są jednością i je odkodowuje, więc musze zawsze miec ich 3. Robak Ja mam dokładnie tak: Licznik 8 bitówy odmierza czasy 2,5ms (nie może odmierzać 20ms...
Witam. Artykuł ten pisałem z myślą o wszystkich, którzy dopiero zaczynają swoja przygodę z magistralą TWI (czyli magistralą I2C) w procesorze Atmega8. Jest to program-szkielet, w który trzeba wpisać własne funkcje i procedury i wykorzystać gotowe procedury do komunikacji w magistrali TWI. A na praktyczne zastosowanie magistrali TWI zapraszam na: //--------------------------------------...