Kawałek kodu : #include <avr/io.h> #include <avr/interrupt.h> // funkcje obsługujące przerwania #include "lcd.h" // funkcje obsługujące wyświetlacz LCD // #define DDR_Out DDRB // konfiguracja portu i pinu wyjścia #define PORT_Out PORTB #define Out PB0 #define clr_out bit_set(PORT_Out, bit(Out)) // operacje na pin-u...
Pozostaje problem prędkości. Najlepszym rozwiązaniem byłoby wykorzystanie przerwań OCRxA, OCRxb itp. Jam M32 nie ma odpowiedniej liczby kanałów, użyj Mega324, który ma taka sama pinologię a jest bardziej wypasiony. Wtedy będziesz miał kilka przerwań np [syntax=c]ISR(TIMER0_COMPA_vect) //funkcja obsługi przerwania { PORTD ^= (1<<STEP_X); //zmien...
Co do samego prędkościomierza to sprawa nie jest skomplikowana. Podstawowe założenie zapewne będzie takie: jeden obrót koła = 1impuls. Procek natomiast niech zajmie się pomiarem czasu pomiędzy tymi impulsami (uruchamiasz sobie TIMER na czas pomiędzy kolejnymi imulsami). Mając te dane jesteś w stanie obliczyć prędkość oraz przejechane kilometry. Potrzebujesz...
Wzór na moment obrotowy: M = P/2*pi*f P-moc silnika(na wale, bez uwzględnienia sprawności-która może być od 0.2-0.98-zależnie od mocy silnika). Moc masz podaną na tabliczce silnika(zwykle moc dostarczoną-U*I) Zwykle U=const. A "I" mierzymy na oporniku<<mniejszym niż I-dopuszczalne silnika. To nam daje "prostokąt" I/U w którym mamy się "zmieścić"...
Witam. Mam lcd ks0108b 128x64 i chcę zrobić licznik. Chcę napisać program na atmega 644/16 który będzie zliczał czas między impulsami na int0 po czym 3.6 dzelił przez wynik i mnożył razy obwód koła. Początek programu napisałem, skonfigurowałem port na zbocze opadające ale nie wiem ja liczyć ten okres. Proszę o pomoc w tym programie. [syntax=basic4gl]...
Witam, Od jakiegoś czasu próbuję obsłużyć interfejs SPI na uC ATMega32, ponieważ chcę sterować potencjometrem cyfrowym. Mam problem w sprzętowym SPI. Napisałem program testowy. Ma działać następująco: co 100ms (stała INTERWAL_RAMEK) ma nadać ramkę danych oraz zmieniać stan PA0 na przeciwny. W zależności od odkomentowanej linii w przerwaniu timera nadawanie...
Witam.Jestem początkujący. Mam problem z napisaniem programu w AVRGCC który działał by a ten sposób że zlicza impulsy( np. z kontaktronu) i na lcd miała by sie pokazać prędkość w km/h oraz dystans przejechany w km. - na procku Atmega (8, 16 itp) Wydaje mi się że powinny być uzyte dwa liczniki - jeden zlicza impulsy z kontaktronu a drugi zajmuje się...
t2 może pracować taktowany z CLKio (AS2 w ASSR skasowany) lub zegarem pochodzącym z pinu TOSC1 (który pracuje łącznie z TOSC2). Asynchroniczość polega na tym, że oscylator na TOSC może pracować na innej częstotliwości niż zegar procesora. Np procesor może iść na zegarze 8MHz (wew.RC), podczas gdy do pinów TOSC jest podłączony kwarc zegarkowy i z taką...
To można na wał napędowy - o ile ten jest dostępny dać magnesik i zrobić a'la licznik rowerowy :) obwód koła, znamy, średnicę wału silnika to mamy później już samą matematykę i prędkość gotowa :) Pare wzorków przekształcić. Myślę że to będzie dokładniejsze niż pomiary laserami modelu jadącego z 70km/h (spalinowe podobno tyle wyciągają) to będzie trudno...
Postawiłem sobie zadanie opracowania licznika prędkości. Powiedzmy, że do roweru. Konstrukcję i jej sens odłóżmy na razie na bok :) Zadanie dla procesora niby banalnie proste - liczyć prędkość przez badanie impulsu na pinie. I teraz zaczynają się schody. Mogę to zrobić na kilka sposobów (te które znam): 1) mierzenie czasu między impulsami 2) mierzenie...
Witam. Korzystam z wejść ATmegi8 w sposób pokazany na obrazku, tzn. kiedy wcisnę przycisk to na pinie pojawia sie wartość "0" i mikrokontroler wykrywa zdarzenie (pin programowo ma podciągnięcie do rezystora). Problem polega na tym, że jeśli nie wcisnę przycisku, a przyłożę sondę lub kawałek druta do pinu w punkcie oznaczonym 1 to mikrokontroler reaguje...
Witam. Próbuję napisac program który oblicza czas pomiędzy zboczami. Mój problem polega na tym ze na ekranie noki3310 wartość icr jest z poza jej zakresu czyli np:1213001, naprowadzicie koledzy gdzie popełniłem błąd ? Pracuję nad licznikiem prędkości. Pozdrawiam. [syntax=c]#include <avr/io.h> #include <avr/interrupt.h> #include <avr/pgmspace.h>...
Tak, diody są.właśnie przelutowałem przy '51 kwarc na 12MHz, obliczyłem wartość licznika dla prędkości 9600 oraz 19200. dalej krzaki. Chodziło mi oto czy '51 będzie się dogadywać z przejściówką mimo że są taktowane różnymi kwarcami A w jaki najprostszy sposób mogę sprawdzić czy ta przejściówka w ogóle działa? Bo mam wrażenie że to ona krzaczy. W windowsie...
Miejsce wpięcia u mnie to akurat komputer samochodowy (sterownik), dlatego że jest w dobrym miejscu (pod radyjkiem), a poza tym mam stamtąd dostęp do sygnałów wtrysków i licznika prędkości (cyfrowe). Chce zrobić komputer pokładowy, do liczenia spalania + tam dodatkowe info o światłach, drzwiach, temp. wew. i zew. Ogólnie projekcik na studia:)
Sporo tego ( obsługa SD, PCF8563 + menu do ustawiania daty, obsługa PCF8574 w przerwaniu INT1 )- ale nie ma problemu - zmieniła się tylko zawartość podprogramu Pomiar była taka, jak w pierwszym poście oraz wyłączyłem w wyświetlanie na LCD tych wartości wskazań z DS18B20, oczywiście dostosowałem pozycje wyświetlania do LCD 4*20 - załączniku spakowany...
Witam Ponieważ nie do końca odpowiadają mi podane rozwiązania, zacznę od tego co powinienem na początku podać - ossochosi :) Programuję w bascom. Buduję układ który ma zadziałać jak uproszczony ABS: 1. pomiar prędkości obrotowej każdego koła 2. porównanie tych prędkości 3. min. 10 razy na sekundę reakcja na utratę przyczepności Doszedłem do takiego...
Jak nie radzisz sobie na razie z tym timerem to przynajmniej nie nadużywaj bezpodstawnie Wait. To co Ci zaproponuję nie zwalnia Cię od ogarnięcia timerów! Ustal sobie jakie dopuszczasz maksymalne opóźnienie pętli i użyj go tylko raz np. 10ms. Za rozwiązanie, może nie do końca eleganckie, zaraz zbiorę burę od fachowców ale w wielu przypadkach to naprawdę...
Witam, mam problem z połączeniem po USARCIE tych dwóch procesorów. Sprawa wygląda następująco: atmega1284p ma być docelowo masterem, wysyła ramkę i w odpowiedzi dostaje ramkę zwrotną od atmega8. Obsługa ramek nie jest jeszcze napisana, na razie wysyłam 8 bajtów atmegą1284p i jeżeli wszystkie bajty zostają poprawnie odebrane, to atmega8 odsyła mi 11...
Witam Mimo, że większość proponowanych tutaj rozwiązań podłączenia RFM12 do Atmegi wykorzystuje SPI programowe, ja podłączyłem tradycyjnie, przez SPI sprzętowe - mimo, że nie miałem problemów z wgrywaniem kodu do Atmegi spiętej z RFM12, to uruchomienie ich razem jest problematyczne ( każde osobno działa bez problemu ) [syntax=basic4gl] $include "Config_AVR-DOS.BAS"...
Witam kolegów lub koleżanki Wymarzyło mi się aby pod czas przeglądu motorku dokonać lekkiego upgreatu elektronicznego mojej kosiarki. Jednym z etapów jest modyfikacja licznika polegająca na wysterowaniu na moment wskaźników prędkości i obrotów. Próbowałem już kilka rozwiązań ale to nic nie daje bo brakuje mi kilku sygnałów z poziomu ECU. Rozebrałem...
Witam, Mam pewien problem powiazany z UARTem pod atmega8l... Otoz mam pewnien program ktory pieknie dziala pod attiny2313(UART sprawny, komunikacja rs232<=>pc tez dziala dobrze). Problem narodzil sie, gdy chcialem przeniesc ten program na atmege8l... Podejrzewam, ze problem lezy we flagach... Nie znam sie jeszcze na tyle dobrze na C, zeby problem...
Witam kolegów mam taki problem potrzebuje programu do mierzenia prędkości obrotowej silnika. Idea pomiaru jest znana, wykorzystywany jest do tego transoptor obiciowy. Ale to nie jest celem mojego wywodu. Potrzebuje krótkiego pomiaru obrotów zbudowanego na licznikach. Oscylator zewnętrzny 8MHz. Układ już wykorzystuje globane przerwania pochądzące od...
Wybrać cokolwiek współczesnego, a nie drogi, mało wydajny i kłopotliwy w programowaniu zabytek. Patrz tutaj: Mam wrażenie, że porównujesz 8- i 32-bitowce mając świeżą wiedzę o 32-bitowcach i informacje tak sprzed 10 lat o 8-bitowcach. Z argumentów, które podałeś w tamtym wątku na dzień dzisiejszy ani jeden nie jest prawdziwy: - programowanie - dokłądnie...
Witam Mam układ, który mierzy dwie temperatury ( DS18B20 ), dwa napięcia ( PCF8591 ( pobiera czas ( PCF8563 ), a z powodu niedużego wyświetlacza ( 12 x 4 ) wskazania są zmieniane do 10 sekund po przepełnieniu Timer1. Układy PCF8563 i PCF8591 są podpięte z "zewnątrz" przewodami około 10 cm. Magistrala I2C ma obniżoną prędkość przez Config I2cdelay =...
Bascom - wersja 1.11.95 Kod, no jest tego sporo: - zegar PCF8563 - Zapis na SD - dwa czujniki DHT11 - odczyt z PCF8574AP ( klawiatura ) - RC5 - ma być DS18B20 - ma być DCF77, ale nie doszedłem do tego momentu ( tzn testowałem na innym procesorze i działało ) Działa - zegar PCF8563 - dwa czujniki DHT11 - odczyt z PCF8574AP w przerwaniu ( klawiatura )...
Witam. Buduję układ sterownika tempomatu do samochodu. Wykonałem już wszystko menu z wieloma funkcjami dodatkowymi poza tempomatem (mini komputer pokładowy), zbudowałem układ wykonawczy wraz z zaprogramowaniem sterowania przepustnicą elektroniczną lecz chyba zacząłem od złej strony i utknąłem na pomiarze prędkości z czujnika prędkości samochodu. W aucie...
Dobra. Kod prezentuje się następująco: to jest program w którym wszystko działa jak potrzeba: [syntax=cpp]//Data utworzenie: 20-09-2014 #include <avr/io.h> #include <util/delay.h> #include <stdlib.h> #include <avr/pgmspace.h> #include "MYUART/myuart.h" #include "MK_TERMINAL/mk_term.h" #define REF_256 (1<<REFS1)|(1<<REFS0)...
Witam Od dłuższego czasu próbuje zmusić Atmege do wysyłania znaku. Coś co działało wcześniej teraz się buntuje i zaczynam podejrzewać że uszkodziłem uC. Atmega644p , zewnętrzny kwarc 18.432 MHz Fuses L: 0xDE H:0xD8 Podłączona przez przejściówkę do PC - sprawdzona działa po zwarciu TX i RX Połączenia sprawdzone, płytka wykonana na podstawie schematu...
Davide Gironi skonstruował automatyczną nawijarkę do przystawek gitarowych. Jeśli ktokolwiek z Was wykonywał kiedyś taki pick-up, to wie, jak trudne i jednocześnie, jak ważne jest dobre nawinięcie jego uzwojenia. Zaprezentowana nawijarka CNC pozwala istotnie uprościć ten proces. Układ sterowany jest z pomocą mikrokontrolera ATmega8, który kontroluje...
impulsy najlepiej zliczacz za pomoca wewnetrznych liczników a masz i 8 i 16 bitowy. Więc zakresu z pewnością wystarczy. Przy 8 bitach raczej nie wystarczy . Chyba, że masz patent na zapisanie w 8 bitach liczby 5000 poprzez rozwiązanie mieszane z przerwaniem z licznika. Tam jest także licznik 16-bitowy. A co do patentu to jeśli zmniejszysz interwał...
Powiedzcie chociaż czy dobrze konfiguruje timer, aby działał w trybie licznika. Czy czegoś nie pominąłem, a jeśli są błędy to powiedzcie jakie. Jak ustawić rejestry aby licznik dawał sobie rade ze zliczaniem 360*2500 impulsów na minute. Jak na razie program pisany jest dla atmegi 8 ale docelowo będzie dla atmegi 1280. Ostatnio zmieniła sie koncepcja...
Usunąłem Wait 1 przy konwersji z DS18B20, działa, bez problemu ( na trzech przewodach ), tylko wyniki są opóźnione - tzn. wyświetlany wynik nie jest z aktualnego pomiaru, tylko z poprzedniego. Dodałem jeszcze dwa czujniki DS18B20. Ich zapis razem z godziną i datą na karcie jest jak najbardziej w porządku, tylko wyświetlanie trochę szwankuje - tzn. czasem...
Program bez przetwornika ADC. Program działa prawidłowo Dodano po 42 Od kiedy praca dyplomowa jest tajna? Pytam z ciekawości- kiedyś była jawna na całym etapie pisania. Dlaczego w pętli głównej blokujesz przerwania- potem wykonujesz sporo obliczeń- a potem odblokowujesz? A co będzie jak w tym czasie pojawią się dwa przerwania? Jedno pójdzie się kochać....
OK, rozumiem. Napisałem coś takiego, prosta sekwencja na liczniku do sterowania silnikiem krokowym. Przyciski zwiększają lub zmniejszają prędkość sekwencji, tylko mam taki problem. Muszę zrobić tak, aby jedno wciśnięcie przycisku powodowało przyspieszenie, potem drugie wciśnięcie przycisku kolejne przyspieszenie itd. Z tego co wyczytałem, to najlepiej...
To że nie wchodzi w przerwanie stwierdzam po tym ja procek wykonuje testowy program. Ustawiłem mu odpowiednią wartość TOP dla licznika co odpowiada jakiejś tam częstotliwości, to zaś się przekłada na prędkość mojego silnika krokowego. Przy uruchomionym przerwaniu od tego właśnie licznika zmienna "a" się inkrementuje co każde wejście w przerwanie, odpowiada...
Żeby nie zapomnieć na końcu to już tutaj napiszę, że liczy się to w programach bo one się rzadziej mylą, ale zrozumienie tematu jest oczywiście ważne. Jest kilka, a w pełni darmowych, kalkulatorów do tego. Timer jest urządzeniem sprzętowym wbudowanym w mikrokontroler. Najczęsciej taktowany jest w taki sposób, że sygnał zegarowy taktujący mikrokontroler...
Program ma pobierać dane z tablic i ustawiać odpowiednie bity na PORTB. Timer0 ma co 0,5s pobrać z tabeli aktualną prędkość z jaką timer2 ma zmieniać stan na PORTB. Osobno timer'y działają, razem nie chcą . [syntax=vbnet] $regfile = "m2560def.dat" $crystal = 16000000 Config Portb.7 = Output Config Portb.6 = Output Config Portb.5 = Output Config Portb.4...
No to coś napisałem na AVRStudio 4.05.0.181 (na kolanie) :) . Co prawda na ATmega8 , ale przeportowanie to pestka(niektóre wektory przerwań do skasowania/zmiany nazwy i "2313def.inc" zamiast "m8def.inc" , prędkość kwarcu Xtal też do poprawki...), raczej tu chyba nie ma rozkazów niezaimplementowanych w AT90S2313 . ;included in next file - line ".device...
Witam! Zwracam się do was o pomc w napisaniu programu do Atmeg8 w bascomie, który miałby pełnić funkcję licznika. Korzystałem z kilku programów, ale ilekroć chciałem sprawdzić działanie na symulatorze Bascom AVR tylekroć żadna cyferka nie posuwała mi się do przodu na wyświetlaczu. :(. Nie wiem czy jest to wina programów, z których korzystałem czy poprostu...
Pracuję nad elektronicznym układem wyprzedzenia zapłonu. Układzik elektroniczny z programem typu: PORTD=~PINC działa bez problemu, ale jak już "skomplikowałem program to ni hu hu" Zachowuje się tak jakby nigdy nie występowała jedynka na PINC0, 1, 2. Jak najlepiej wyłapać to zdarzenie W załączniku układ elektroniczny. A teraz kod: #define F_CPU 12800000L...
Szanowni Państwo, wy tu sobie rozmawiacie a ja mam kolejną wersję schematu ideowego wzbogaconą o diody, przyciski, wentylator sterowany tranzystorem, parę wtyczek, stabilizatorek itp bajery ^^. Wentylator podłączony jest do napiecia 12V zasilania, które poprzez stabilizator (5v) zasila reszte układu. Prosze mnie poprawić jęsli się mylę: 1.12V wentylatora...
1. Przycisk do zliczania obrotów silnika? Ile maksymalnie obrotów na minutę będzie miał ten silnik? 2. Piszesz, że miałeś już program, ale nie działał prawidłowo - może go pokaż + schemat Twojego układu. 1 - chodziło o to, że przycisk ma zmieniać stan licznika, następnie licznik będzie zmieniał wypełnienie PWM a tym samym napięcie będzie regulowane...
Witam, męczę się z tym drugi dzień i dalej nic - może któryś z bardziej doświadczonych Kolegów będzie w stanie pomóc. Program ma mierzyć czas przelotu pocisku między 2 bramkami (z fototranzystorami), a następnie wyliczyć z tego prędkość (znana odległość 10 cm między nimi). Korzystam z przerwań INT0 (start) i INT1 (stop) oraz licznika Timer1. Uc jak...
Witam, próbuje zrobić sterownik silnika BLDC z wykorzystaniem uC Atmega8. Schemat i program zaczerpnąłem ze strony mikrokontrolery.blogspot. Układ został złożony zgodnie ze schematem: Jedyną różnice stanowią dolne tranzystory, ja użyłem IRFZ44N oraz zamiast dławika 10uH użyłem rezystor 10ohm. Ponad to zmodyfikowałem trochę program wydłużając czas rozruchu...
Czego nie rozumiesz? 0. Ładujesz wartość do licznika i czekasz na przepełnienie. 1. Przepełnienie generuje sygnał przerwania. 2. CPU musi dokończyć instrukcję, odłożyć na stos adres do powrotu i załadować nową wartość do PC. W tym czasie licznik T0 nadal liczy i czas mija. 3. Skok pod adres wektora przerwania i wykonanie prologu funkcji obsługi. Czas...
Używam poniższego kodu do inicjalizacji połączenia z komputerem samochodu (według protokołu kw2000). Używam tam komunikacji USART 10400baud 8n1. Chciałem zwiększyć taktowanie do 8MHz i usunąłem programowo dzielnik fusebita CLKDIV8 zmieniając na początku funkcji main() rejestr CLKPR w ten sposób: CLKPR|= _BV(CLKPCE); CLKPR&=~ _BV(CLKPS1); CLKPR&=~...
timer zlicza czas w jakichś tam odstępach i dodaje do licznika +1. (wyeliminowano przepełnienia timera) . Jeśli jest impuls z halotronu (magnes kręci sie na łyżkach wiatromierza) to znaczy ze wykonano jeden obrót, i wtedy ten czas jaki zleciał do momentu przejechania magnesu, (np 1/50 sekundy) przeliczam na prędkość. Tylko do tego timera używam. Biblioteka...
Oto reszta kodu. Jak policzyłeś dokładność? Tzn. jak uzasadnić to, że dla 4 impulsów mam 25% dokładności? Rozumiem, że 4 impulsy to w sumie 100%, ale nie rozumiem źródła tej niepewności. Gwoli wyjaśnienia - kilku zmiennych nie używam, to pozostałości po starych kodach (wiem, że powinienem je skasować :) ) a przetwornik ADC jest po to, że uruchamiam...
Jesteś pewien co do tego PWM? Sterowanie wskazówką w licznikach najczęściej zrealizowane jest w oparciu o specyficzny rodzaj silnika - air core gauge. Tam wychylenie wskazówki uzależnione jest od relacji prądów płynących w dwóch przesuniętych o 90* cewkach. Próba odczytu napięcia/prądu tylko z jednej cewki da błędny wynik. Co do najprostszej implementacji...
Witam. Chcę za pomocą Timera1 odmierzyć czas w przybliżeniu 1 s (dokładność do 0,1 s). Wprowadzam następującą konfiguracje: ldi Temp, 0x29 ;załadowanie do r16 wartości ldi R20, 0x29 ;załadowanie do r17 wartości out TCNT1H, Temp ;wpisanie do rejestru TCNT1L wartości out TCNT1L, R20 ;wpisanie do rejestru TCNT1H wartości out TCCR1A,r29 ;wpisanie do rejestru...
Witam. Mam problem, podejrzewam z opóźnieniami w inicjacji LCD. Mam do zrobienia komunikacje szeregową pomiedzy ZL10AVR z ATmega32 a komputerem PC. Program działa tak, że jak nacisnę przycisk 1 (S12) to na komputerze uruchamia sie program notatnik (to zrobilem w programie LabView - ale to nie wazne). Chodzi mi o to - jak nacisnę ten przycisk to na wyświetlaczu...
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. cli() jest w dobrym miejscu jest...
Witam serdecznie. Piszę program, w którym muszę zliczać przychodzące impulsy z licznika energetycznego do procka. Aby nie zliczać impulsów pochodzących od drgań styków wymyśliłam takie rozwiązanie. Jeśli na INT0 przyjedzie zbocze opadające, włącz licznik T0. Gdy licznik przepełni się- minie 32ms i w tym miejscu będzie poziom niski na pinie, to atmega...
Witam ponownie. Mam już wykonany program do pomiaru przyspieszeni, niestety mam spory problem z obliczeniem z tego prędkości. Próbowałem odczytywać wartość z przetwornika ADC co pół sekundy (16000000/256/500/125 = 1, a dla 63 to dwa razy na sekunde) i do tego wykorzystałem: $crystal = 16000000 ... Config Adc = Single , Prescaler = Auto , Reference =...
Witam, po długiej przerwie, przetestowałem parę rzeczy, jednak nadal wszystko nie działa jak powinno :cry: , pomimo tego jestem bardzo wdzięczny więc klikam 'pomógł' osobom które zainteresowały się problemem. Na początek, częstotliwość PWM mam trochę ponad 32 kHz. Testowałem układ z diodą 1N4148, lecz procesor nie reagował na impulsy, tzn. występowały...
Witam. Robię sterownik (do teściowej :) ) do kotła z możliwością regulacji prędkości dmuchawy i jest drobny problem, stosuję wyświetlacz led który wyświetla róże parametry (multipleksowany jest i wykorzystuje do tego celu timer0), jak uruchomię przerwanie zewnętrzne INT0 to zaczyna mi strasznie migotać,tzn. wyświetlacz jest taktowany częstotliwością...
Jeśli chodzi o uC to jestem raczej na poziomie początkującym(odczyt stanu przycisku, zapalanie diody, wyświetlacz LCD, termometr 1-Wire). Niestety jednak muszę zrobić projekt na uczelni, i prawdopodobnie będzie to licznik rowerowy. Dodam że jeszcze nie zacząłem robić, ale już mam kilka pytań(tak szukałem na forum i w internecie, ale nie znalazłem)....
Witam. Mam taki problem. Próbuję skomunikować ze sobą dwa uC. Docelowo będą one skomunikowane po RS485, ale teraz w fazie testów próbuję je połączyć normalnie po UARCie. Skrosowałem TXD i RXD dwóch Atmeg. Wysyłam z Atmega162 znak 0x3A, natomiast na Atmedze32 włącza się przerwanie od odebrania (dioda niezależna od znaku odebranego się zapala ) ale nie...
Podsumowując. Dziękuję za pomoc. Poprogramowałem i trochę słabo to wychodzi. Potrzebowałem 8 kanałów pwm do regulacji jasności świecenia 8 sekcji LED. Pierwszy program jaki zrobiłem o tradycyjne 256 pętli na jeden cały cykl PWM ze sprawdzeniem w każdym przebiegu czy któraś z sekcji ma zgasnąć. Działało to około 100Hz/ Natomiast wadą tego rozwiązania...
Witam szanownych forumowiczów. Temat pracy z modułami BTM był wałkowany setki razy ale nigdy nie natrafiłem na opinie dotyczące osiąganych prędkości i niezawodności transmisji. Otóż chcialbym wypowiedzieć się w tym temacie. Zrobiłem układ testujący prostą komunikację uC ATmegi168 z programem napisanym w Visual C++, na systemie operacyjnym Windows7,...
Witam. Mam problem. Próbuje policzyć drogę ze wskazań akcelerometru, potrzebuje scałkować prędkość w języku c by otrzymać drogę. Być może jest to banalne ale skończyły mi się już pomysły. Scałkowałem przyspieszenie i teoretycznie otrzymałem prędkość, przedział czasowy to 10 ms wyzwalane z licznika. Będę wdzięczny za jakieś sugestie. Poniżej zamieszczam...
Witam, $regfile = "m8def.dat" $crystal = 8000000 Config Pinb.1 = Output Config Pind.1 = Output Config Timer2 = Timer , Prescale = 128 Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Disconnect , Prescale = 8 Cls Cursor Off Portd.0 = 1 Portd.1 = 0 Set Portd.4 On Timer2 Czas1s Dim Licz8ms As Byte Dim Wartoscpwm As...
Podepnę się do tematu. Wykonałem projekt trackloggera rejestrującego dane gps i zapisującego je na karcie SD. Całość wykonałem na atmedze644 i śmiga bardzo dobrze. Pragnąłem dalej rozwinąć ten projekt i podłączyć wszystko do atmegi32, dodając jeszcze wyświetlacz. Podczas testów zmienionego pod atmegę32 kodu zaczęły się dziać dziwne rzeczy. Z gpsem komunikuję...
Jestem początkujący w temacie AVR'ów, niedawno zakupiłem zestaw uruchomieniowy (od GoTronika) No i rozpocząłem naukę, język C szybko mnie do siebie zniechęcił (Nie oszukujmy się jest trudny dla osoby początkującej) więc tymczasowo postanowiłem zająć się bascomem (A potem do C planuję wrócić). No ale dosyć tego wstępu :> Posiadam procesor ATMEGA 32 i...
Miałem ostatnio trochę czasu i udało mi się zrobić wstępny prototyp. Na schemacie tranzystory BC 415 = BC 560 PNP 1. Mam problem ze stabilizatorem 7805 gdyż po podłączeniu do akumulatora 12V, po pięciu minutach pracy jest już dosyć mocno nagrzany nawet przy podłączonej tylko 1 diodzie LED. I nie wiem czy dodać wcześniej jeszcze jeden stabilizator np...
Witam. Napotkałem na pewien problem podczas programowania swojego układu. Otóż w momencie kiedy w pętli while mam tylko: PORTD&=~1<<PD5; , tzn kod pętli while wygląda tak : [syntax=c] _delay_ms(1000); PORTD&=~LED_SYG1; PORTD^=POMPA;[/syntax] Przekaźnik już nie cyka. Nie chodzi tu o zawieszanie się procesora, gdyż jak dołożę linijkę odpowiedzialną...
Pojawił się kolejny etap i niestety wiele problemów. Próbuję komunikować się z licznikiem właśnie w Modbus RTU, ale licznik milczy. Używałam terminala do sprawdzenia komunikacji i okazuje się, że ramka wysyła się dobrze, ale tylko raz na x razy. A nawet po wysłaniu dobrej ramki jest cisza. Oto moja funkcja wywołująca wysłanie (send to funkcja z USARTa...
Sezon ogrzewania domów tuż tuż a kotłów z podajnikiem coraz więcej wpadłem na pomysł zrobienia licznika ilości spalonych kilogramów. Jako wyświetlacz kilogramów zastosować czterosegmentowy wyświetlacz led a cały układ zrobić na atmega8. Zasada działania Podajnik ślimakowy obraca się ze stałą prędkością a więc w określonym czasie podaje tą samą ilość...
Próbuję przeanalizować kod samplowy: $crystal - częstotliwość rezonatora $baud - prędkość transmisji po UART $regfile - deklaracja typu procesora b). konfiguracja automatyczna na podstawie wybranego uP: Loaderchip - stała - deklaracja, jaki uP będzie wykorzystany W zależności od tego ustawione zostaną zmienne: $loader - adres pod jakim znajduje się...
Każdy kiedyś patrzył na przykłady a nie od razu główkował. Proszę. Baw się dobrze. Przetestowany ;) [syntax=vbnet]'#########################... '# Program włącza jeden z trzech przekaźników w zależności # '# od tego ile razy lub jak długo naciesnieto przycisk # '# Jeden krótki Przekaznik1 na czas 1s # '# Dwa krótkie Przekaznik2...
Witam ! Tworzę mały sterownik do auta i mam problem. Dotyczy on pomiaru częstotliwości (a właściwie czasu trwania stanu niskiego lub wysokiego) na Atmedze 128, która po dalszych przeliczeniach będzie mierzyć obroty silnika. Sygnał , który będzie mierzony to prostokąt o wypełnieniu 50% i częstotliwości w granicach 15-150Hz. Jak w tytule pomiar ma się...
Wróciłem do rozgrzebanego projektu i aktualnie walczę z obsługą impulsatora. Użyty procesor to ATMEGA 16 z zewnętrznym taktowaniem 16MHz. PD2 (INT0), PD3(INT1) są skonfigurowane jako wejścia z podciągnięciem do 1 i do nich podłączone są piny impulsatora odpowiednio PD2 A i PD3 B (patrz załączony plik pdf). W przerwaniach chciałbym zliczać liczbę opadających...
Mam pytanie do autora wątku. Buduje nawijarkę cewek opartą na atmega16, silniku DC, silniku krokowym. Silnik DC jest sterowany z atmegi przez PWM potencjometrem podpiętym pod ADC. Jako licznik zwojów zamontowałem również ITR9606, niestety nie mam jeszcze układu LM324 by zbudować bramkę schmitta. Postanowiłem sprawdzić czy da się wykonać tymczasowo licznik...
Witajcie, dziś postanowiłem się podzielić dorobkiem w postaci oprogramowania i wiedzy na temat pewnego modułu GPS. Zegar softowy synchronizowany GPS z dodatkowym wyświetlaniem współrzędnych i prędkości no i dorzuciłem w ostatniej chwili temperaturę z DS18B20 - taki szkoleniowy programik w BASCOM (świetny przykład - gotowiec dla tych którzy chcą zrobić...
Jak wyżej AVR ATmega8 lub 16 byłby idealny, ma wbudowaną pamięć danych eeprom, dzięki czemu po zakończeniu jazdy zachowasz wartość przejechanych kilometrów na stałe, no i łatwo sie programuje w C.
Oj...prawda o programowym UARCIE nie jest do końca taka, jaką przedstawił kolega BoskiDialer . Transmisja nie wymaga blokowania uC, ponieważ można wykorzystać licznik do odmierzania zegara bitowego w transmisji. Transmisja nie musi odbywać się w trybie półdupleksowej. Da się zrobić full-duplex, mało tego, możena zrobić nawet różna prędkości w nadawaniu...
Moim celem jest regulowanie prędkości obrotowej wiatraczków podłączonych do wyjść PB1 i PB2 za pomocą trybu PWM. Napisałem taki kod jednak coś nie gra. #include <avr\io.h> #include <avr\interrupt.h> #include <avr\signal.h> //ustawienie pinow na wyjscia wiatraczkow #define SET_FAN_OUTPUTDDRB|=(1<<PB1)|(1<... //wlaczenie...
Ot cała filozofia, polecam manuala i jakiś debuger. Te fragmenty kodu który widzisz (procedury obsługujące RSa) pochodza własnie z manuala dla procesora ATmega8. Korzystam z AVR Studio 4. Działający program przedstawiam ponizej. #include <avr/io.h> #define CPU_Hz16000000 // częstotliwość zegara w Hz #define OSC 16 // częstotliwość zegara w MHz...
Witam Posiada ktos moze gotowe procedurki do obslugi ukladu DS1307napsiane dla mikrokontrolera ATMega16 pod asm? Pozdrawiam dobra mam procedure do odczytu wartosci sekund i minut z 1307? koniec: ldi r16, 0x00 rcall lcdxy ldi r16, 250 rcall czekaj_ms rcall I2Cstart ldi r16, IN_1307 rcall I2Cout rcall I2Cin rcall I2Cin_ACK rcall I2Cin rcall I2Cin_NOACK...
Uzupełniając poprzedni pomysł - spinasz wszystkie sondy na komparator cyfrowy, drugi komplet wejść komparatora spinasz z sondami przez zatrzask. Pojawienie się zbocza (zmiana poziomu) na wyjściu komparatora sygnalizuje zmianę stanów wejściowych (wystarczy jeden pin przerwania w procesorze). Po pobraniu danych przez procesor aktywizujemy programowo zatrzask...
Czy mówimy o przyłączeniu tego urządzenia :?: Szczerze mówiąc w tabeli nie widzę sygnałów, które można by skomunikować z UARTem mikroprocesora. Wyjścia wyglądają na typowe wyjścia kwadraturowe plus sygnał indeksowy i po spasowaniu poziomów powinny być podane na oddzielne wejścia (porty) licznika (mikroprocesora) w celu odliczenia (np.programowym licznikiem)...
Zaczynam budowę urządzenia jak w temacie. Chodzi o zastąpienie oryginalnych zegarów wyświetlaczem LCD. Dopiero zaczynam zabawę z elektroniką (to będzie mój drugi układ…) i chciałbym uzyskać jakichś cennych rad zanim wezmę do rąk lutownicę. Zasadniczo urządzenie ma składać się z 3części: - wyświetlacza - układu sterującego - klawiatury 1.Wyświetlacz...
Witam Postanowiłem zbudować miernik odległości wykorzystujący ultradźwięki. Zakupiłem 2 czujniki w TME Jednego używam do wysłania fali a 2-go do odebrania. Po przejrzeniu postów na Elektrodzie i innych www zbudowałem poniższy układ w załączniku (PDF). Program napisałem a Bascomie ale NIESTETY NIE DZIAłA. Oto on $regfile = "m8def.dat" $crystal...
Witam Mam problem z ultradźwiękowym miernikiem odległości na atmedze8. Generacja częstotliwości przebiega prawidłowo, na odbiorniku za torem wzmacniaczy otrzymuję widoczny syglał odbity od przeszkody. Błędy pojawiają się przy komparacji sygnału z napięciem referencyjnym. Wynik jest bardzo niedokładny, ponadto od drugiego bądź trzeciego pomiaru procesor...
Wielkie dzięki za ten link... Trochę inaczej sobie wyobrażałem ten licznik bo tu jest wyświetlacz ze starej Nokii... wiem narzazie tylko ze jest to możliwe tylko będę miął problemu z zaprogramowaniem tego... I jeszcze sposób wyświetlania prędkości :/ czy by się dało przedstawić go w formie rosnącego słupka tak z lewej na prawą... ?? I jeszcze taki pomysł...
Piszę program sterujący zapłonem silnika 3 cylindrowego, Ma on na celu "emulację" mechanicznego regulatora odśrodkowego kąta wyprzedzenia zapłonu. Wymyśliłem sobie że tabelę zmiennych zapiszę w PROGMEM, poniżej program testujący rozwiązanie z tabelą. No i teraz: Niech mi ktoś proszę powie czy licznik T1 (16bitowy) zwiększa się co 5uS?? Takie obliczenia...
Witam Chcę napisać program generujący na wyjściu przebieg, który odpowiadać będzie dwóm kołom zębatym umieszczonym na jednej osi w taki sposób, że zęby koła drugiego znajdują się między zębami koła pierwszego. Stosunek wzajemnego położenia kół zmienny. Prędkość (20-150rpm), ilość zębów koła(10-150). Myślę o wykorzystaniu w tym celu Licznika1 w trybie...
Zliczac impulsy musisz za pomoca timer/countera, jak sama nazwa wskazuje ma funkcje zliczania ;) Szczegoly znajdziesz w nocie aplikacyjnej. No i chyba bedziesz musial zastosowac jakiegos PIDa. Tutaj mozesz zrobic tak ze usatwisz licznik w tryb CTC i w przerwaniu co np 10ms bedziesz aktualizowac uchyb i wyjscie z PIDa, od ktorego bedzie zalezalo wypelnienie...
Witam:) Od razu mówię jestem laikiem. Mam Atmege16 do której podłącze lcd 2x16, do tego eeprom w którym będę przechowywał ustawienia, dodatkowo 4 przyciski (góra ,dół, menu i ok) oraz sondę DS18B20 z której będę czytał temperaturę. I teraz chcę sterować wentylatorem (jego prędkością ) i jako że czytam trochę to forum już wywnioskowałem że do licznika...
Potrzebuje napisać w Bascomie program, który będzie zliczał i wyświetlał ilość wydrukowanych arkuszy oraz prędkość ark/h. Aby uprościć układ - wyświetlacz będzie sterowany po I2C (AVT5147 - MODUŁ WYŚWIETLACZA LED STEROWANY MAGISTRALĄ I2C) Pozostałe dane: ilość arkuszy/h oraz przewidywany koniec pracy druku przy zadanym nakładzie wyświetlany będzie na...
Hej Przesyłam do atmegi8 za każdym razem 3bajty informacji. Prędkość układu to 38400. Atmega ma kwarc 16MHz. Powiedzcie mi, czy dobrze obliczyłem, że przesył 1 bajtu trwa około 208qs ?? Mam następujący problem. Wysyłam tych 3bajtowych ciągów dosyć dużo i do tej pory między odbieraniem bajtów w kodzie pisałem _delay_ms(1); . Było dobrze dopóki...
A BTW, zamiast robic takie dziwne kombinacje nie lepiej ustawic prescaler timera tak, zeby timer sie nie przepelnial p Jeśli można by użyć Timer1 to oczywiście że tak, założyłem że jest do czegoś innego potrzebny. Odnośnie losowości - największy prescaler to 1024, co nawet przy prędkości 1Mhz daje maksymalny błąd 1ms. A resetowanie prescalera resetuje...
Bieżący program wygląda następująco: #include <avr/io.h> #include <avr/interrupt.h> unsigned char volatile p1[8] = {0x50,0x90,0x90,0x90,0x30,0x30,0x30... unsigned char volatile p2[8] = {0x90,0x90,0x90,0x90,0x30,0x30,0x30... unsigned char volatile p3[9] = {0x90,0x30,0x90,0x30,0x90,0x30,0x50...
Dzieki wszystkim za pomysły. Zapomniałem na wstępie dodać że buduję tempomat do auta dziś wróciłem z holandii i nawet się sprawdził prądkość wacha się w granicy max 4 km / h - pomiar z licznika co 1 sekundę. Prędkość 10 km/h odpowiada czestotliwości w przyblizeniu 13 Hz ale załóżmy że 10km/h to 10Hz a 100km/h to 100Hz. Odczyt co 0,1 sekundy w zupełności...
Sprawdź na oscyloskopie jak wygląda sygnał za 7414, powinien być czysty prostokąt. Jeśli wariuje przy większych prędkościach to może mikrokontroler nie wyrabia z przerwaniami. 1MHz, do tego lekko licząc >100 cykli na przerwanie daje 10Khz, podziel to przez ilość impulsów na obrót. Teraz jeśli silnik kreci się szybciej to wariuje. Zamiast generować przerwanie...
To wymaga dogłębnego studiowania PDF dla ATmeg- nie tylko dla 16. Jest to kolejna próba sterowania silników krokowych za pomocą sterowania tranzystorów i wykorzystania ADC bezpośrednio z procesora. Co prawda nie tak niemożliwa jak sterowanie mikrokrokowe ale jak widać zależności czasowe i w tym przypadku praktycznie to uniemożliwiają. Takich prób- zastąpienia...
Zrobiłem to co mi poleciłeś jednak brak poprawy. Teraz na sztywno jest ustawiona prędkość transmisji na 9600 bps. Problem z resetowaniem występuje tylko podczas odbierania kilkunastu znaków z rzędu. Gdy sa przesyłane pojedyncze znaki to działa to bez problemu. void uart_init(unsigned int baud) { UCSR0B|=_BV(RXCIE0)|_BV(RXEN...
Witam Mam problem z programem odmierzającym czas. Mikrokontroler współpracuje z czujnikami ultradźwiękowymi. Ogólne założenie programu jest takie że generuje paczkę 8 impulsów prostokątnych o częstotliwości 40KHz następnie 4ms na wyciszenie układu. Generowanie paczki wykonywane jest za pomocą Timera2 w trybie CTC. Następnie za pomocą Timera1 powinien...
koledzy mają poważne problemy z arytmetyką bo liczba typu integer (2 bajty) może przyjmować wartość od 0 do $ffff czyli po naszemu 65535 a czy będzie to liczba ze znakiem czy też nie to zawsze będzie to ten sam zakres. Jeśli kolega zastosuje w swojej atmega8 kwarc 1 MHz i w połączeniu z preskalerem o współczynniku podziału 1024 to zliczenie na Timer1...
Mam silnik z przekładnią który daje 5 impulsów na jeden obrót przekładni, obrotów jest 139 to liczyłem na piechotę ale chcę wykorzystać Atmege 8 do sterowania tym silnikiem i nie mogę dojść do ładu z liczeniem tych impulsów. Próbowałem liczyć impulsy funkcja DEBOUNCE i szło dobrze dopóki nie zwiększyłem prędkości obrotowej, zaczęło gubić impulsy Następnie...
Ok, żeby była jasność, o czym mówię: Robimy np. prędkościomierz, czyli inaczej mówiąc: częstotliwościomierz. Obliczanie wyniku na podstawie danych i wyświetlanie tego wyniku to sprawa drugorzędna i można to robić nawet raz na sekundę. ALE musimy mieć dokładną ilość impulsów. Impuls wyzwala przerwanie. Jeżeli nie wyzerujemy flagi najszybciej, jak się...
Dzięki Panowie za pomoc, poradziłem sobie z konfliktem sygnałów. Zastosowałem 2 przerwania zewnętrzne które odczytują wartość licznika, oraz 1 przerwanie od przepełnienia w którym inkrementuję odliczanie sekundy. Pozostało jeszcze wysłać zebrane dane do jakieś pamięci np. karta SD. W razie pytań będę pisał tutaj. #include <avr/io.h> #include <stdlib.h>...
Może to Ci coś pomoże. To jest część programu sterującego obrotami silnika elektrycznego. Na początku masz funkcję opóźniającą, obsługę przerwań, później inicjacje wyświetlacza, wyświetlanie znaku i tekstu na wyświetlaczu, funkcję menu gdzie następuje inicjacja wyświetlacza, oraz główny program. W tym programie nie trzeba używać biblioteki do obsługi...
Witam. Mam taki problem, gdyż chciałbym ogarnąć komunikację poprzez UART między dwoma mikro. Mam dwa uC: Atmegę 16, która działa jako master oraz Atmegę 88 jako Slave (na której będzie termometr, z którego będę odczytywał dane). Programy, definicje wyglądają następująco: plik RS485.h #indef RS_INT_H #define RS_INT_H //rozmiar buforów nadawania i odbierania...
A zaglądałeś do DS ? Bo widzę, że niespecjalnie. Sygnał podpinasz pod nogę T0 a licznik konfigurujesz na zewnętrzny sygnał zegarowy. TCCR0 = (1 << CS02) | (1 << CS01); // External clock source on T0 pin. Clock on falling edge. i teraz w TCNT0 masz liczbę impulsów. Odpalasz jeszcze jeden timer i co chwilę obliczasz prędkość...
Mhy, zastanawiam się co tu kolega tworzy ;) Zrobiłem niedawno licznik impulsów (dalej miernik prędkości obrotowej). Kod jest maleńki. Do samych testów użyłem licznika impulsów zewnętrznych oraz jednego timera. Timer ma przerwanie co 50ms. W jego przerwaniu inkrementowana jest zmienna, gdy jej wartość zrówna się z 20 przerwaniami to odczytuje stan licznika...
Ten program nie był jeszcze wtedy skończony, więc miał trochę błędów ;) Ogólnie chodziło mi o to żeby ktoś mnie upewnił w przekonaniu, że takie "skakanie" po kodzie jest normalne, a nie że np. mam jakąś złą wersję programu. No i tak też się stało ;). Dzięki za bardzo profesjonalne podejście to tego tematu ;). Tutaj wklejam już skończoną wersję programu,...
Witam. Proponuję więc abyś załączył schemat swojego pomysłu i wtedy na pewno ktoś Ci pomoże przeanalizować zyski i straty.. Na razie sam bloczek formowania impulsu i "ogranicznik" bez sprzętowego bez debouncingu. Nie wiem na jakim procesorze to robisz, ale zakładam, że jakiś AVR. ATMega328P-AU SMD. Jest to seria PicoPower i zasilany będzie z baterii...
Nie trzeba uśredniać, wystarczy, że mniej znaczące cyfry nie bedą brane pod uwagę przy wyświetlaniu. To także jest uśrednianie :) ... Wtedy nie potrzebuję przerwań i innych sztuczek. Oczywiście można, tylko po co skoro są do tego narzędzia w postaci przerwań od liczników o których wspominasz? Nie ucz innych utrudniania sobie życia. Przerwania to nie...
Witam. Napisałem kod do PWM w trybie 14. Przy ustawieniu OCR1A = TOP dioda na nóżce D5 powinna się świecić. Przy ustawieniu OCR1A = 0 dioda na nóżce D5 powinna się nie świecić. Świeci w obydwu przypadkach co tu jest nie tak. #define F_CPU16000000UL//1MHz zegar procesora #include <avr/io.h> #include <util/delay.h> #include <string.h>...
Witam, Pomysł dobry ale sypie się najprawdopodobniej z powodu zbyt dużej ilości przerwań. Proponuje projekt sterownika "równoległego", taki wykorzystałem w mojej pracy inżynierskiej. Wprawdzie korzystałem tylko z 8 serw ale 16 też obsłuży po drobnej modyfikacji. Program zabiera większość mocy procesora do obsługi przerwań ale tylko przez czas 2ms potem...
1. Właśnie o PINy najbardziej mi chodzi... z tego powodu muszę użyć jakiś dodatkowy moduł. 2. Wysyłam sprzętowym SPI, ładuję 1 bajt, wysyłam, potem kolejny itd. (zależnie od ilości rejestrów) a na samym końcu zatrzaskuję. 3. PWM realizuję programowo poprzez timer, używam mojego licznika który w kolejnych przerwaniach się zwiększa. A następnie przyrównuję...
Witam! Próbuję sklecić sterowanie silnikiem DC na Atmedze 16 z wykorzystaniem sterownika L293D. To ma być symulacja sterowania roletami na makiecie, czyli potrzebuję zmieniać biegunowość silniczka, a także chciałem mieć kontrolę nad prędkością (czyli wypełnieniem PWM). Zaimplementowałem PWM programowo za pomocą Timera2. Wszystko ładnie chodzi na diodach....
Może prościej wybrać AVR'a który ma 16kB wewnętrznej pamięci? Z drugiej połowy tej 128-mki też można skorzystać, podpinając a16 pod pin IO i sterując nim programowo. Może prościej, ale przyzwyczaiłem się do swojego AVR'a, zresztą pamięć zewnętrzną nabyłem wcześniej. Co do programowego sterowania pamięcią... widziałem gdzieś próbę takiego rozwiązania,...
Witam, może Wy mi pomożecie. Mam mały problem odnośnie sterowania prędkością silnika DC przez PWM. Mikrokontroler to atmega8 podłączony przez mostek H do silnika DC. Chcę w prosty sposób zmienić mu prędkość przez wpisanie mu do rejestru OCR2 odpowiednich wartości co się równa z odpowiednim wypełnieniem sygnału. Silnik po podłączeniu zasilania i nadania...
Witam, wiem że w sieci jest 1*e^6 lub więcej gotowych liczników impulsów, lecz ja chciałbym mieć pełną kontrolę nad moim kodem, a nie kopiować bezmyślnie. Tak więc sprawa tyczy się zliczania impulsów 5V od obrotów i prędkości w motocyklu. Do tego celu chcę wykorzystać układ AVR ATMega 16 lub mniejszy (po przeróbce w kodzie). PYT1: Obrotomierz kręci...
Zaczynasz dobrze. Wg protokołu inicjację "/?!\r\n" wysyłasz na prędkości 300 bd (ustawienie transmisji 7E1). Nie żadnej innej - 300, bo tak mówi norma. Licznik energii ma wówczas maksymalnie 2 sekundy na odpowiedź, a odpowiedzią jest wpierw ramka identyfikatora licznika, który ma postać "/XXXZD<CR><LF>", gdzie XXX jest identyfikatorem producenta,...
Witam Próbuję wysłać, a następnie odebrać bajt danych z pamięci EEPROM 24C04. Niestety zamierzony efekt nie występuje, a brakuje mi już pomysłów co jeszcze można poprawić, dlatego bardzo proszę o przeanalizowanie poniższego programu i wskazanie gdzie są błędy. Po wgraniu programu nic się nie wyświetla ani na wyświetlaczu LCD, ani na terminalu PC. [syntax=c]...
Witam, w moim programie na atmegę 32 wykorzystałem timer0 oparty na zegarze procesora (8MHz) aby uruchamiać pewną funkcję ok. 100 razy na sekundę. Do programu postanowiłem dodać obsługę zewnętrznego kwarcu zegarkowego 32768Hz aby móc mierzyć w miarę dokładnie czas przy użyciu timera timer2. Po dopisaniu komend do obsługi kwarcu żaden timer nie działa....
Witam, mój pierwszy projekt elektroniczny na Elektrodzie i w ogóle :) Licznik rowerowy widoczny na poniższym zdjęciu. Pomysł zrodził się w zeszłym roku, właściwie bez żadnego powodu. Zaczęło się od zabawy układami AVR - przez diody i przyciski, potem ekran z telefonu. W końcu padła bateria w moim dotychczasowym liczniku i postanowiłem, że zrobię coś...
Na pomiar prędkości są dwie szkoły: - dla wolnych obrotów zliczasz czas pomiędzy impulsami i to najlepiej licznikiem/timerem (hasło ICP) - dla szybkich obrotów zliczasz impulsy w ustalonym czasie i to też zrobisz najlepiej dwoma timerami/licznikami (jeden odlicza ustalony czas, drugi impulsy) Wybieraj... ;)
Program przepisałem całkowicie z zmieniłem tylko port na PC5. Najpierw podłączyłem dobrze i otrzymywałem takie coś: -16.1\0x00\0x00\0x00-16.1\0x00\0x00\0x00... No w moim mieszkaniu to tak ok 24°C. Potem wyciągnąłem układ i wpiąłem źle (odwrotnie masę z zasilaniem)....
Pewnie że jest- ostatecznie program napisany w C jest zamieniany najpierw na asm. Nie znam asm- ale z tego co widzę wynika chyba że procesor jest sterowany impulsami zewnętrznymi i wystawia sygnały do sterowania silnikiem. Popraw mnie jeśli źle ten program zrozumiałem. Jeśli tak jest jak zrozumiałem to koncepcja jest błędna. No bo jak silnik ma zwalniać...
Nie wiem czy kod w Bascom na coś Ci się przyda ale właśnie na takiej zasadzie jak w tym programie zrobiony mam pomiar prędkości wiatru w moim pozycjonerze. Troszkę inaczej wykorzystuję tu timery niż założyłeś ale... Zostawiłem Ci tylko fragment odpowiedzialny za liczenie impulsów i dodałem obsługę wyświetlacza. Program jest na tyle prosty, że z interpretacją...
Chyba się nie zrozumieliśmy więc wyjaśnię dokładnie. Transmisję sprawdzałem na wszystkich prędkościach włączając w to 300 bodów, a cały czas testuję na "standardowym" 9600. Ale do rzeczy... Do tablicy wpycham np. 100 znaków i wszystie przechodzą przez transmisję którą inicjuję ustawieniem bitu UDRIE w rejestrze UCSRB. Wtedy pojawia się przerwanie SIG_UART_DATA...
Napisałem program który ma odczytywać odległości pomiędzy zboczami narastającymi sygnału PPM z nadajnika modelarskiego. 1: 41 | 2: 131 | 3: 225 | 4: 314 | 5: 415 | 6: 1107 | 7: 1201 1: 1312 | 2: 2005 | 3: 2099 | 4: 2193 | 5: 2283 | 6: 2376 | 7: 2465 1: 2902 | 2: 2997 | 3: 3090 | 4: 3180 | 5: 3274 | 6: 3363 | 7: 3464 1: 3895 | 2: 3988 | 3: 4078 | 4:...
Witam. Próbuję opanować USART w ATMega 8. Wewnętrzny oscylator 1MHz. Z komunikacją nie mam większych problemów. Jednak zastanawia mnie ustawianie prędkości transmisji. W moim programie ustawiłem prędkość transmisji na 9600bps. Rozumiem że 9600 bps oznacza wysłanie 9600 bitów w ciągu sekundy (jeżeli źle rozumuję to proszę o poprawienie mnie), a więc...
Witam. Potrzebuję zbudować licznik impulsów, który zliczałby impulsy z czujnika indukcyjnego. Nie wiem czy ktoś już robił coś takiego i ma jakieś materiały bo ja nie znalazłem nic konkretnego i interesującego. Interesowałby mnie jakiś projekt oparty na jakimś mikroprocesorze, najlepiej ATmega8 ponieważ mam z niż już trochę doświadczenia i parę sztuk...
Witam. Mam mały problem z ustaleniem prędkości przezkakiwania czy też zliczalnia. A mianowicie mam 2 wyświetlacze 7 seg ( w zasadzie to 8 ale ja kropki nie wykorzystuję) no i programik jest strasznie prosty. Dopiero wchodzę w programowanie. Program jest oparty na książce p. P.Borkowskiego który raczej na tym forum też jest ;] [syntax=asm];;; l8 ;;;...
Jedna ze zworek to Slow SCK, służy do programowania procesorków o małej prędkości zegara. Wystarczy zemknąć na schemat USBAsp:
2. I tu się mylisz! Jak byś rozbierał liczniki samochodowe, to wiedziałbyś że część liczników ma wskazówki prędkościomierza, obrotomierza, wskaźnik paliwa itp wykonane na silnikach krokowych Jestem ciekaw czy potrafisz odróżnić silnik krokowy od air core gauge?
Częstotliwość impulsów wynosi około 6kHz. Dwa timery są zarezerwowane dla PWM i przerwań. Chcę zastosować 2 transoptory w celu zwiększenia dokładności pomiaru prędkości obrotowej. Do pełni szczęścia potrzebował bym 4 Timerów , ale na pewno da się to inaczej rozwiązać. Pozdrawiam.
Witam. Niedawno rozpocząłem swoją przygodę z Atmegą8. Chciałem sprawdzić jak działa interfejs TWI. Na podstawie książki pana Cezarego Klimasza zakupiłem układ 24c16wp i napisałem program. Niestety program zamiast wyświetlać mi w terminalu liczby od 255 do 0 wyświetla bliżej nieokreślone sekwencje znaków. Czy mógłby mi ktoś pomóc znaleźć błąd w moim...
Wcześniej tylko tu zaglądałem, ale teraz mam jedną rzecz i niewiem jak ją najlepiej wykonać. Robię licznik szybkości do MZ ETZ w wersji elektronicznej. Założenia: - maksymalna prostota ale zgodnie z moimi założeniami (wyświetlanie na ekranie LCD i na diodach) - niska cena - coś się nauczyć nowego nawet na błędach = z tym ostatnim idzie mi chyba najlepiej...
Wartość początkową ustalam odejmując 256 i 125, stąd TCNT0 = 131. Dlaczego tak to liczysz? Używasz trybu normalnego Timera0. Timer 0 w trybie normalnym liczy od 0 lub wartości początkowej ustawionej w rejestrze TCNT0 do wartości 0xFF. Przy 8 MHz i podziale przez 256 obliczenia wyglądają następująco: 8Mhz/256 = 31 250 31 250/256 (od 0 do 0xFF) = 122...
Witam, mam problem z danymi przesyłanymi przez usart. Projektuję kontroler obrotów wentylatorów. Co 1s wywoływane jest przerwanie od timera0, w którym wysyłane są dane o temperaturze i wypełnieniu PWM dwóch wentylatorów (dane w HEX, niebieskie cyfry i litery w terminalu na zdj. 2). Chciałbym, aby dane te były wpisywane w odpowiednie pola do tego przeznaczone...
Doczytałem tą informację i w między czasie przerobiłem swój kod. I dla jednego master i jednego slave działało mi ładnie. Teraz chciałem by był jeden master a dwa slave i zrobiłem taki kod: [syntax=c]#include <avr/io.h> #include <avr/interrupt.h> #include <avr/pgmspace.h> #include <util/delay.h> #include "lcd.h" #define MASTER...
W sumie nie wiem za bardzo czym się różni mój program w tym momencie od tego co było wcześniej, ale wygląda na to, że działa!! Z tym whilem to akurat średnio bo jak puszczę to silniki bez końca się kręcą ;p Jeszcze tylko muszę zrobić tą regulację żeby była możliwa w czasie pracy silników, bo na razie to muszę zatrzymać, żeby działało Dodano po 1 Teraz...
Jako że prosty przykład, wiele tu informacji nie trzeba wiedzieć. Jedynie przerwaniu od INT0, oraz ustawienie timerta0 w tryb CTC (do stworzenia timera programowego). Reszta to tylko pętla główna w której jest sprawdzany warunek co około jedną sekundę zgodnie z założeniem:[syntax=c]#include <avr/io.h> #include <avr/interrupt.h> // Atmega16...
Witam szanownych forumowiczów! Od niedawna staram się nauczyć języka C na AVR. Postanowiłem zbudować poza migającą diodą LED i całą resztą "mini projektów" odbiornik sygnału DMX. W zamierzeniu chcę zrobić DIMMER PACK (sterowanie jasnością 4 urządzeń, stąd 4 kanały i detekcja przejścia przez zero). Jednak przy pisaniu programu napotkałem dość znaczące...
zy jeżeli wyśle na UDR "0x00" to UART wyśle mi ramke danych z bitem startu, polem danych (0000 0000) i dwoma bitami stopu? czy poprostu ustawi stan 0 na linii transmisyjnej? Niestety ( w Twoim przypadku) wyśle bit startu później dane czyli osiem zer a na końcu będą bity stopu. Trudno by było inaczej- z drugiej strony jak by miało wyglądać wysłanie...
Hmm... ten Syrenowy jest genialny! :) Dzięki za podpowiedzi! Konstrukcja fajna, ale faktycznie przebajerzona jak na moje potrzeby. Spróbuję się chyba skontaktować z autorem licznika, może będzie miał jakieś podpowiedzi ;) Tematu krokowca co prawda unikałem, bo jedyny kontakt z nimi miałem na zajęciach i zwyczajnie mało wiem o ich sterowaniu, ale spojrzałem,...
Witam Mam problem z wysterowaniem wyświetlacza VFD. Wyświetlacz to futaba US202SD01A(202SD01C) lub Samsung 20T201DA2. Wyświetlacze pochodzą z tego samego modelu urządzeń i zachowują się podobnie, są to odpowiedniki. Problem polega na tym, że po wysyłaniu jednej liczby 8-bitowej szeregowo co 100 ms, na wyświetlaczu pojawiają się losowe znaki, tak jakby...
Okej racja,w zasadzie to nie ma znaczenia gdzie są przyciski podpięte, działanie zależy od stanu początkowego w programie. Układ już gotowy, teraz męczę się z tymi timerami: [syntax=cpp] #define F_CPU 16000000uL #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #include <stdlib.h> #include "HD44780.h" //Wyświetlacz:...
Dzięki za odpowiedzi. Sterowanie PWM już mam zrobione, teraz chciałbym wyświetlać prędkość obrotów. W jaki sposób się za to zabrać? Za pomocą licznika? Może ktoś podpowiedzieć? Wentylator jest 4 pinowy i ma oddzielny kabel do tego celu przeznaczony. I drugie pytanie, czy przy zerowym wypełnieniu wentylator powinien się obracać? Czy to zależy od typy...
Witam. Chciałbym prosić o pomoc. Robię projekt Ultradźwiękowego czujnika odległości, korzystam z kitu AVT 5370 "Sonar garażowy", z procesorem atmega 8. Do tego dorobiłem płytki z prostowaniem napięcia z trafo, do lcd,przycisków i diód. No,ale do rzeczy. Urządzenie ma mieć 3 tryby pracy: -Kalibracja(na razie przypisana stała wartość prędkości ultradźwięków)...
PD6. Sorry . Już zmieniam więc. Generalnie najłatwiej by było gdyby licznik startował po otrzymaniu 1 impulsu z hallotronu i stopował się po otrzymaniu drugiego impulsu. Czas ktory by był zliczony oraz obwód koła po którym kręci się czujnik dałby mi prędkość obrotową....
Tak,zgadza się,po prostu z rozpędu wpisałem Timer3,bo pisałem wcześniej na Atmega128. Poprawiłem nieco kod,ale nadal mam problem z zatrzymaniem stopera. Czy może tryb CTC będzie tutaj lepiej współgrał? [syntax=c] #define F_CPU 16000000uL #include <AVR/io.h> //biblioteka we/wy #include <AVR/interrupt.h> //obsluga przerwan #include <util/delay.h>...
[syntax=cpp] #include "avr/io.h" #include <avr/interrupt.h> #include <avr/pgmspace.h> #include <util/delay.h> #include "myuart.h" #include "mk_term.h" volatile uint16_t impuls; //zmienna która jest liczbą impulsów przed wyrezerwanie timera czyli z przejsciem czujnika volatile uint16_t obrot; volatile uint16_t i; volatile uint8_t kawalek;...
Zrobiłem tak: [syntax=basic4gl] $regfile = "m8def.dat" $crystal = 8000000 Config Lcdpin = Pin , Rs = Portc.5 , E = Portc.4 , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 Config Lcd = 16 * 2 Config Debounce = 1 Dim X As Word Declare Sub Impuls Config Pinb.0 = Output Config Pinb.1 = Input Config Pind.3 = Input Pind.3 = 1 Pinb.1 = 1 Cursor...