Witam. Piszę program do obsługi LCD. Piszę w asm i pod ATmega32. Przerwy czasowe chcę zrealizować za pomocą liczników. Program dla sprawdzenia inicjacii - nie pełny i nie działa właściwie - napisany dla próby. Napisałem początek programu i chciałem go zasymulować ale wciąż pojawia mi się ten sam błąd z którym po raz pierwszy się spotykam i nie wiem...
Podglądając Kolegi program napisałem swoją procedurę która szuka plików tekstowych (dowolną liczbę) i wybiera jeden z nich do otwarcia. Do S = Dir( "*.txt") While Len(s) > 0 Tekst(licznik) = S If Licznik = Licznik1 Then Color = Darkblue Else Color = Black End If Lcdat Y , 0 , Tekst(licznik) , White , Color...
Zamieszczam przyklad programu napisanego na kolanie, zmienia stan lini PC3 co okolo (LicznikMax*10ms ) - wychodzi co ok. 100 ms Gdybyś miał wątpliwości to podniosłem moje kości z krzesła przed komputerem po płytkę z AtMega32 i sprawdziłem w ukladzie - DZIAŁA! Kompilowany pod ICC626, polecam "Wizarda" ,pomaga w minute ustawić co potrzeba bez sięgania...
Czyli rozumiem że najlepszą praktyką jest ustawianie w flagi w procedurze przerwania a resztę wykonywać w main? W Twoim przypadku na pewno. I tak robić dla każdego rodzaju przerwania? Nie, tylko tam gdzie masz kod, który wykonuje się sporo czasu. Co znaczy "sporo czasu"? A to już zależy, od przypadku :) Innymi słowy chodzi o to, by nie utracić tych...
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...
Można też skorzystać z Watchdoga i co jakiś czas po prostu nie zresetować jego licznika.
Witam! Potrzebuję wygenerować falę prostokątną o różnych częstotliwościach (w zakresie 3k - 50kHz) na jednym z pinów Atmegi328p w celu obsługi filtra przestrajanego zewnętrzną częstotliwością. Wiem, że można łatwo ustawić preskaler, jednak nie to rozwiązanie daje zbyt małą ilość dostępnych częstotliwości. Chcę ustawić w trybie CTC w rejestrze OCR1A...
Witam! Mam problem z uzyskaniem przerwania od licznika 8-bitowego. Piszę w C i w żaden sposób nie mogę się doczytać jak skonfigurować rejestr TCCR0. Przerwanie potrzebne jest mi do całkowania numerycznego metodą trapezów sygnału z żyroskopu. Doczytałem się, że trzeba coś ustawić w rejestrze SREG, ale mało mi zostało czasu, a potrzebuję tego do pracy...
O co ci chodzi? To chcesz obrotomierz, czy licznik obrotów/impulsów? Masz dostępne opisy obrotomierzy optycznych, które realizują podstawowy pomiar ilości obrotów na minutę. Możesz sobie jedynie wejście przerobić. Na pewno też znajdziesz jakiś licznik impulsów.
Witam, mam problem ze sterowanie sygnałem PWM. Program służy do zaczytywania wartości częstotliwości z czujnika TCS3200 . W zależności od koloru jaki wykryje czujnik ma nastąpić zmiana wartości wypełnienia PWMa. W tym momencie dioda, którą mam podłączona pod wyjście OC2 cały czas świeci tak samo, niezależnie od wartości OCR2 . Próbowałem na różne sposoby...
Cześć, Próbuję zaadaptować przerwania do swoich potrzeb z pomocą datasheet atmegi328p i strony [url= ]Link Niestety napotkałem pewien problem z którym nie umiem sobie poradzić. Za pomocą przerwań chciałbym odczytywać stany z dwóch podłączonych potencjometrów. Reprezentuję ich wartości na LCD leczy w zakresie 0-255. Jeśli nie używam przerwań, i odczytuję...
Witam Używam Attiny2313 do pomiaru dwóch temperatur z DS18B20. Wynik ( Integer ) przesyłam bez żadnej obróbki przez UART przewodem 40 cm do Atmega328. Atmega rozbija odebrane dane i jest obróbka Kod Attiny2313 $regfile = "attiny2313.dat" $crystal = 8000000 $baud = 4800 '********************* Konfiguracja magistrali 1-Wire Config 1wire = Portd.5...
Witam Piszę program do sterownika pieca Wszystko po włączeniu działa przez około 15min a później na wyświetlaczu pojawiają się dziwne znaki także znak z Deflcdchar który nie jest używany tylko zdeklarowany. Przyczyna jest chyba tylko wyświetlacza ponieważ po przystawieniu zapałki do czujnika DS18B20 program działa prawidłowo i włącza alarm jednak wyświetlacz...
Witam wszystkich:) Ostatnio zakupiłem płytkę testową EvB 4.3 z ATMEGA32 oraz książkę "Mikrokontrolery dla poczatkujących". Podczas wykonywania ćwiczeń z książki wyniknął problem. Np. w ćwiczeniu nr 6 wykorzystujemy Acsr.0 i Acsr.1 z rejestru ACSR które pełnią rolę bitów pomocniczych - i tu problem bo po zaprogramowaniu ATMEGA32 takim programem mikrokontroler...
Witam Mam Atmega32A + PCF8563 + PCF8574 + RFM12 + DS18B20 +DHT11. Port danych LCD to Port.A, ControlPort to Port.C. I2C standardowo na Portc.0 Portc.1. Niestety jest problem z obsługą I2C, tzn. zegar PCF8563 nie działa w ogóle ( na LCD puste pole ) , a klawiatura na PCF8574 - tylko jeden klawisz i to nie ten, który jest przypisany w kodzie ( działa...
Witam. Mam problem z PWM w ATMega32. Posluzylem sie gotowym programem z ksiazki "Mikrokontrolery AVR w praktyce" J.Dolinskiego.Problem polega na tym, ze nie moge zmieniac wypelnienia PWM za pomoca przyciskow klawiatury.Podlaczony do zestawu ZL10AVR oscyloskop caly czas pokazuje stan wysoki.Ponizej umieszczam kod programu. #include <avr/io.h> void...
Na Atmega 32 zapis działa bez problemu, nawet na programowym SPI, jak omyłkowo ustawiłem źle licznik i miał zapisywać co 10 sekund, to też się wyrabiał, ale chcę to zrobić na AtMega328. wiem, że w C są dwa projekty, które to obsługują nawet na mniejszych procesorach.
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)...
// ================= PROCEDURA OBSŁUGI PRZERWANIA COMPARE MATCH ISR(TIMER0_OVF_vect) Błąd. To jest przerwanie od przepełnienia licznika. Przerwanie od porównania to: TIMER0_COMP_vect . W nagrodę Pomógł od mniej spostrzegawczych użytkowników i moderatorów :) A co do tranzystorów, to oczywiście lepsze by były PNP, ale z NPN też będzie działać (trochę...
Jeśli mam być szczery to potrafię korzystać z google i zależało mi na szybkim i prostym wytłumaczeniu, jakie timery jak zdefiniować odpowiednio czasy i jak obsłużyć te przerwania. W C robiłem głównie aplikacje konsolowe i znam konstrukcje pętli, umiem korzystać z instrukcji warunkowych i ogólne podstawy. Niestety przy uC zabija mnie tempo prowadzonych...
Napisze tylko ze zasilam z zasilacza od komputera. Najpierw 12V idzie przez stabilizator i otrzymuje 5V (nie całe 5V, jakies 4,8V). Wyświetlacz to 2x16. Skoro używasz zasilacza komputerowego to dlaczego nie podłączysz sobie bezpośrednio napięcia 5V, tylko ciągniesz 12 przez stabilizator? A czy to ze zasilacz daje tylko 11.5 V co daje póżniej 4.8V może...
Witam Wiem, że temat przycisku jest mocno nadwyrężony, ale ... Program ma jednym przyciskiem przy dłuższym przytrzymaniu zwiększać i zmniejszać wartość wyjścia PWM ( na zmianę ) lub przy krótszym włączyć/wyłączyć, czyli pwm1a = 0 lub pwm1a = 255. Każda z tych funkcji osobno działa ok, ale razem działa tylko włącz/wyłącz przy krótszym przytrzymaniu W1,...
Witam od niedawana borykam się z problemem wyświetlenia jakiejś zmiennej na wyświetlaczu nokii 3310 do jego obsługi używam tego kodu [syntax=basic4gl] $regfile = "m32def.dat" $crystal = 8000000 Dim Lcd_data As Byte Dim Updatelcd As Bit '1 = Update Dim Lcd_cache(504) As Byte 'data to send to LCD RAM Dim Lcdcacheidx As Word 'pointer Dim Ch As Byte '----------------------...
Co tutaj przekombinowałem? Atmega32. Tryb Licznika. Celem było zapalenie i gaszenie diod co sekundę. Preskaler = 256. Przerwanie tak wyliczone aby wykonywało się co sekundę. Timer 16bitowy [syntax=c] #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> ISR (TIMER1_OVF_vect) { PORTC ^= ~0xFF; //zmiana stanu portu C...
Witam, Jestem na etapie tworzenia kodu programu sterującego układem nadążnym typu solar track. Wykonałem już całą mechanikę systemu oraz fizyczną warstwę układu sterującego (obwód drukowany z wszystkimi elementami). Układ sterować ma mostkiem H (silnik DC) oraz podawać trzy sygnały sterujące do zewnętrznego sterownika silnika skokowego (CLK, DIR, EN)....
Witam Mam płytkę Loggera GPS + SD + PCF8563. Jeśli chodzi o GPS i zapis na SD wszytko jest OK. Problemem jest ( i to pierwszy raz się z czymś takim stykam ) odczyt danych z z układu PCF8563. Otóż dla pewnych wartości sekund, odczytana wartość czasu - godziny jest większa o 40 ( czterdzieści ). Czyli jeśli czas jest 22:40:02 to jest wyświetlany poprawnie,...
Witam. Mam problem. Napisalem program do wysylania danych przez RS z plytki ZL10AVR z mikrokontrolerem ATmega32. Dodatkowo w programie LabView na PC zrobilem odczyt jak i wysyl danych. Na dzien dzisiejszy program dziala tak, ze po wcisnieciu odpowiedniego przycisku na klawiaturze 4x4 wysylana zostaje odpowiednia dana (np: "1"). Na PC LabView odbiera...
:) ok juz podaje - są to urządzenia and-tech-u( płytka testowa EvB 4.3 i programator AVRProg USBv2 (stk500v2) odpowiednio linki oraz ) Procek to ATMEGA32 16PU. Dodam że zarówno programowanie przez bootloadera jak przez programator ma takie same skutki. Dodano po 2 Jeśli chodzi o program to zaraz po zaprogramowaniu wyświetla dziwne znaki (zamiast cyfr)...
Witam. Zbudowałem urządzenie z wykorzystaniem atmega32 jest w nim ok 2kb kodu napisanego w bascom. Urządzenie wykonuje cykl pracy bazując na kilku zmiennych odczytanych z eeprom wewnętrznego. Maszyna posiada licznik cykli i za każdym razem przy 17 cyklu wyskakują na wyświetlaczu krzaki a po następnym atmega sie resetuje. Wykluczam tu zakłócenia - układ...
Ostatnio wraz z kumplami z klasy zaczęliśmy tworzyć wytrawiarkę PCB jak ta w stylu [url=]Wytrawiarka by mastermaniek V2.0 z tym że postanowiliśmy dodać windę do płytki która by opuszczała płytkę do wytrawiacza i wyjmowała ją z powrotem. Był plan zastosowania l289 do sterowania silnika liniowego który pozwalałby realizować działanie windy. Niestety silnik...
Witam Do istniejącego i działającego "urządzenie" chciałem dodać możliwość odbioru, parsowania i odesłania SMS'a zwrotnego z danymi. Cały kod: Linia1 - to wyświetla Uart_numer - Linia1 Linia2 - to wyświetla Komanda - Linia2 czyli działa OK Ale jak podepnę modem GSM ( SIM900D ) to Uart_numer jest puste, a Komanda pokazuje ( czasem ) jakieś teksty z pierwszej...
Jawnie nie ma waitms, ale sporo "funkcji" bascoma potrzebujących na coś poczekać mielą w miejscu. Co do wykorzystania timera jako wskaźnika czasu, to jestem jak najbardziej za , bo sam tak robię w asemblerze - czas minął - rób co trzeba, nie minął - to obleć pozostałe procedury, może której z nich akurat czas minął - czyli w procedurze przerwania mam...
Dzien dobry. Piszę bootloader do procesora atmega32. Bootloader ma dzialać w terminalu więc konwersja ascii -> hex jest przeprowadzana w mikrokontrolerze. Po uruchomieniu, program ładnie się przesyła, wszystko wydaje się być OK. Po resecie jednak nic się nie dzieje. Skopiowałem całą zawartość pamięci i zauważyłem, że drugi bajt jest nieprawidłowo...
Witam Po raz pierwszy ( lepiej późno niż wcale ) wykorzystałem wyjście CLKOUT układu PCF8563. Oczywiście podciągnąłem przez 10K do VCC. Dzisiaj po pierwszym kilkugodzinnym braku prądu, rano zegar był wyzerowany. Podejrzewam, że to przez podciągnięcie CLKOUT do Vcc. Jeśli to jest to, to może wystarczy włożyć diodę np. Schottky pomiędzy wyjście CLKOUT,...
(at)atom1477 Wzmacniacz był badany za detektorem. Sprawdzane było zbocze narastające przy wywołaniu pojedynczym impulsem i przy wywołaniu sygnałem prostokątnym 40kHz nie było różnicy w amplitudzie ani w czasie narastania. Na tej podstawie stwierdziłem że wzmacniacz działa prawidłowo. Dodatkowo na oscylogramach kanał niebieski to bezpośrednio wyjście...
Witam przeglądałem wiele postów o CTC na forum i poza... moje zakładki jak i biurko uginają sie od materiałów.. lecz nie widzę błędu... Czy może mi ktoś powiedzieć gdzie jest błąd? sprawdzałem juz chyba z 10 różnych kodów dla Timer'a 0 dla Timer'a 1 +Wybrałem tryb CTC +Zezwoliłem na przerwania przez timer +OCR1B jest mniejsze od OCR1A +obsługę przerwań...
Jestem w trakcie tworzenia licznika rowerowego z funkcją alarmu przeciwkradzieżowego. W cały układzie mam akcelerometr, który wykrywa większe zmiany przyspieszenia. Chciał bym żeby to wykrywanie odbywało się podczas wyłączonego licznika. Powerdown mode odpada ponieważ wyłączone jest praktycznie wszystko i nie miał bym jak wykryć większych przyspieszeń....
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...
Witam, mam mały program napisałem przy użyciu książki Pana Marcina Wiązania oraz przy użyciu elektrody do obsługi matrycy led, lecz mam nieporządany efekt stroboskopowy. Nie widać liter, tekstu, tylko wszystkie diody mrugają. Czy to jest spowodowane zasilaniem czy też błędem programu? Dorzucam dwa programy, przy których pracowałem i schemat, schemat...
Witam Zmontowałem sobie układ Atmega32 z pojedynczym wyświetlaczem 5x7 i wszystko działa tak jak należy ale problem zaczyna się w innym miejscu. Potrzebuję połączyć 3 takie wyświetlacze, lecz nie mam pojęcia w jaki sposób to zrobić. Proszę o pomoc Tutaj podaję listing programu
Witajcie, mam problem z odczytem wartości z 2 kanałów ADC. Procesor to atmega32. Używam Timer0 żeby przełączać kanały, a na wyświetlaczu wyświeltane są 2 wartości, ale obydwie pokazują to samo- odczytywany jest tylko jeden kanał Inicjalizacja ADC [syntax=c]void ADC_init() { // ADC ADCSRA = (1<<ADEN) |(1<<ADPS0) | (1<<ADPS2) | (1<<ADSC);...
Witam Ponownie, Problem mam z prawidłowym zaimplementowaniem gotowej biblioteki obsługi dotyku na wyświetlaczu 2,4 " . A mianowicie ustaliłem trzy obszary dotyku równo w odstępach po długości ekranu ale nie do końca po szerokości i jeśli mój palec dotknie jednego z nich w tym miejscu pojawi się zielony prostokąt. Wszystko było fajnie jak był tylko skrajny...
Tak wiec program pobiera z pamieci eeprom wartosc liczbowa z 1 komorki i wysyla ja do terminala(np liczba 50) ale zamiast tego pojawiaja sie krzaki typu ó ń. Wysylajac z terminala na atmege wyswietlacz takze wywala jakies krzaki. Nie wiem czy to wina typow danych czy cos innego. #include <avr/io.h> #include <avr/eeprom.h> #include "globalne.h"...
Jak zrozumiałem dopuszczasz tryb multipleksowy analizy czujników, czyli omiatanie po kolei :) wiec nic nie stoi na przeszkodzie, żeby wykorzystac dwa multipleksery 4051 analiza 16 czujników zajmie ci w sumie 8 linii procesora. BCD, CS1 ,CS2, OUT1 i OUT2 Zaimplementuj licznik BCD i możesz przemiatać najpierw pierwszy potem drugi multiplekser, multipleksery...
Układ cały czas liczy-nawet jak czytasz. Odczytujesz ADCH- a ADCL chce tam jakiś bit wsunąć. W starych 8051 tak się odczytywało licznik 16 bitowy. W AVR liczniki są buforowane- czytasz z innego rejestru niż rejestr licznika. ADC nie jest buforowane-czytasz bieżącą wartość.
Faktycznie pomyliłem z czymś podobnym do: char PROGMEM tab[2] = {"Zmienna:"}; Chyba muszę dopić tą kawę :) No a ja już dopiłem kawkę dlatego mnie to zastanowiło ;) a jeszcze do autora, żeby zmienna wyświetlała się bez żadnych "ogonów" to można jeszcze to zrobić tak: lcd_locate(0,12); lcd_int(Liczba);...
A jak masz 10 przycisków wykorzystasz 10 przerwań? marnotrawstwo. wykorzystasz jeden licznik i po kłopocie zero opóźnień typu delay. Same zalety. minus? jeden: wykorzystany licznik.
hmm... a istnieje jakaś inna możliwość, z LPT będzie problem bo go nie posiadam? Ale dziękuję za linka, ściągłem i też postaram się gdzieś dorwać LPT. Próbowałem wysyłać dane na wyświetlacz LCD ale to dawało mi nie znaczącą liczbę odczytaną jako liczba z liczników w dwóch kolejnych przerwaniach. Ale skąd mam wiedzieć że licznik dobrze zlicza tzn co...
Witam serdecznie! Na wstępie powiem że procesor atmega nie widzę pierwszy raz, jednak pierwszy raz zabrałem się za programowanie Atmegi32 i właściwie można powiedzieć że to mój "pierwszy poważny raz". Pomysł wziął się stąd że zapragnąłem posiadać fabrycznego pilota sterowania radia z pod kierownicy w Renault Clio II ph 2 1.2 8V (notabene bardzo ekonomiczne...
Witam wszystkich Jestem w posiadaniu takiego zegara jak w temacie.Jestem baaardzo początkujący, ale udało mi się dodać termometr jednopunktowy do tego zegara.Zacząłem kombinować z dopisaniem alarmu ,ale po 2 dniach walki odpuściłem.Nie wiem jak zrobić kilka rzeczy: Gdzie zacząć dopisywać kod? Jak pod przyciski przypisać alarm ,które już są? Jakie polecenia?...
Witam Odbieram i dekoduje sygnał DCF77 na płytce Atmega328, do tego wysyłam ten + kilka innych danych przez RFM12. Odbiornik jest włączany raz na dobę koło godziny 3. Raz na kilka dni zdarza się, godzina jest przesunięta do tyłu. jako, że jeden z odbiorników danych z RFM12 ma zapis na SD, to przeglądając zawartość karty SD widać, że do zmiany godziny...
Zwiększenie częstotliwości w Atmedze można zrobić programowo, zmieniając jakieś timery, ale pewnie wiąże się to z jakimiś skutkami negatywnymi. Co o tym myślisz? Skutki są, ale czy one są negatywne? 1. musisz zastosować układ który szybko przełącza tranzystory. 2. zaprojektować układ i płytkę porządnie, tak aby nie promieniować za dużo zakłóceń. 3....
Witam Piszę program w Bascomie na Atmega32 do sterowania ogrzewaniem w warsztacie i mam problem. Jest zegar RTC, zewnętrzny Ram, Timer, Menu i to wszystko działa bez zarzutu - dokładnie tak jak bym chciał. Chciałem dołożyć czujnik temperatury i wykorzystać do tego celu wejście ADC. Problem pojawia się w momencie jak w podmenu "Start_webasto" dodaję...
Nie do końca wiadomo co chcesz zrobić? Korzystając ze sprzętowych zasobów tego problemu nie przeskoczysz. Pozostaje oczywiście jak najbardziej słuszne działanie programowe. Tworzysz zmienną w programie która będzie inkrementowana co 20ms w przerwaniu od tego licznika. Najlepiej do tego typu celu nadaje się tryb CTC.
Witam, mam mały problem ze sterowaniem silnika krokowego za pomocą potencjometru. Postaram się szerzej opisać mój problem. Podczas działania programu wartość ADC dość mocno skacze mimo zrobionego zabezpieczenia. Silnik gubi kroki. Do celów testowych używam płytki prototypowej z procesorem ATMega32 i sterownika silników krokowych na układzie scalonym...
To raczej nie jest prosty problem ze źle ustawionym zegarem... Opisuje co zrobiłem po kolei: Mam własną płytkę PCB z ATMega32A i chciałem nią programować przez Arduino IDE (pierwszy raz, zawsze pisałem w C...) 1) Znalazłem poradnik jak dodać mega32 do A. IDE i napisałem prostego blinka i działało. 2) Jednak dioda zamiast sekundy migała znacznie wolniej,...
A mógłby mi Kolega podpowiedzieć odnośnie odtwarzania plików, jeden po drugim ? Zrobiłem to tak: [syntax=vbnet] Godziny = 20 Minuty = 34 Do If Powiedz_czas = 1 Then If Powiedz_godzina = 1 Then Godziny_plik = Lookup(godziny , Godziny_mow) '************ odtwarzanie pierwszego pliku w pierwszym folderze Tf16p_data(4) = &H0F ' CMD Tf16p_data(6) = &H02 '...
W pdf jest napisane wszystko . Może napiszesz czego oczekujesz a co wychodzi . Pewnie w obliczeniach zapomniałeś o samym liczniku i wychodzi 256 razy mniej . Wielu początkujących robi taki błąd , ze zapomina o tym ze aby licznik się przepełnił musi policzyć tyle impulsów ile ma jego pojemność a w niektórych trybach ta wartość się jeszcze zmienia . Napisz...
Przede wszystkim. Zejdź z taktowaniem do jakiejś normalnej wartości dla ATmega16 i przetestuj czy wtedy komunikacja z DS-ką jest prawidłowa. Jeśli nie to najpierw musisz naprawić sprzęt/algorytm by wszystko działało prawidłowo. Jeśli na niskim taktowaniu komunikacja będzie w porządku to będzie to oznaczało tylko to, że specjalne makra opóźniające jakie...
Co do Twojego pierwszego problemu to prawdę mówiąc nie wiem, ale zwróć uwagę na to że po zakończeniu obsługi przerwania zawartośc R16 i R17 jest zamieniona: ... .org 0x0012 rjmp t1Ovf ... t1Ovf: push r16 push r17 in R16, PORTC ldi R17, 0b00000011 eor R16, R17 out PORTC, R16 pop r16 ; R17 pop r17 ; R16 reti ... Może to wina własnie tego. Co do Towjego...
no linią E i RS ruszam poprzez komendy : DDRA = 0x0f; //ustawiane portu A w stan wejścia //rs=1 ie=1 PORTA = 0x0f; PINA = 0x0f; Na starszej połówce mam klawiature i dane LCD a na młodszej mam E i RS i 2 linie sterujące jednak nie są one ważne. Dodano po 3 //#include <until\delay.h> #include <avr/io.h> #define LCD PORTA #define HD44780_DDRAM_SET...
Wydawnictwo BTC ma książkę o silnikach elektrycznych. Poszukaj na stronie. A będziesz musiał mierzyć prąd silnika(czyli pomiar różnicowy napięć na jakimś oporniku), napięcie na zaciskach silnika i obroty. Jeśli to ma być pomiar "niszczący" silnik czyli ile czasu wytrzyma silnik zatrzymany lub prawie całkowicie zatrzymany to potrzebna jest prądnica tachometryczna....
Amplituda impulsów wynosi 4,2-4,3 V, według oscyloskopu Vpp=8,5 V. Okres impulsów jest wybierany w menu programu, mieści się w przedziale 70-280 ms. Up taktóję kwarcem 10 Mhz. Przy nieobciążonych portach nic się nie zmienia. Poniżej wkleiłem fragmenty programu z konfiguracją portów, konfiguracją licznika, podprogramem obsługi przerwania z licznika Config...
Witam. Mam problem ze znalezieniem błędu w kodzie poniżej. Program BANALNY... nie widzę błędu...wstyd. objawy: niestety INT1 nie działa wcale a INT0 "tak jakby" wyzwala się tylko 1 raz... sprawdziłem to na kodzie: ISR(INT0_vect) { licznik_prz++; if(licznik_prz>2) licznik_prz=0; } Z góry dziękuję za pomoc. p.s. makefile dodany....
Po pierwsze uruchom timer w trybie CTC, nie będziesz musiał ciągle przeładowywać licznika. Po drugie jak raz uruchmoisz ADC to nie musisz tego robić ponownie, wystarczy uruchamiać konwersję. Po trzecie - po co preskaler ADC? On ma zakończyć konwersję w miarę szybko (w każdym razie przed kolejnym przerwaniem timera. I najważniejsze - w przerwaniu timera...
Trzeba zrobić timer ze zliczaniem co 1us (lub coś około) oraz dodatkową zmienną inkrementowaną przy przepełnieniu takiego licznika. Funkcja odczytująca czas podawałaby wartość takiej zmiennej jako starsze bajty informacji zwrotnej oraz TCNT jako młodszy/młodsze bajty.
Witam Od jakiegoś czasu bawię się ultradźwiękowym czujnikiem odległości HC-SR04, i napotkałem następujący problem. Czujnik wystawia mi na ECHO impuls o długości maksymalnie ok. 1200µS (co odpowiada ~20cm) i nie za bardzo wiem o co mu chodzi. Problem jest o tyle dziwniejszy, że gdy go załączyłem od razu po zakupie, to chodził pięknie do pierwszego...
Witam! znalazłem wreszcie chwile czasu,żeby pobawić się serwami modelarskimi i Atmegą 32. Napisałem program który powinien realizować następujące funkcji: -ustawić serwo w pozycji zadanej -po zwarciu pinu PB0 do masy,wykonać obrót do odpowiedniej wartości(w stopniach) - po zwarciu pinu PB1 do masy,wykonać obrót w drugą stronę do odpowiedniej wartości...
Witam Mam wyświetlacz 4*20 oraz klawiaturę na PCF8574. Potrzebuję mieć menu: Czas - godziny - minuty Data - dzień - miesiąc - rok - dzień tygodnia Czujniki - Ilość czujników - Id czujników Pomiary - czas pomiarów Wyjście Mam do wykorzystania 5 klawiszy oznaczonych jako: góra/dól, lewo/prawo oraz Enter. Założenie jest takie, że Enter ma wchodzić do menu,...
Musiałbyś dodać zmienną, która będzie służyła do odmierzania czasu bez impulsów, tzw. "timeout". Jeśli przez okres ponad 10 s nie przyjdzie żaden impuls, to n=0. Wbrew pozorom, liczenie timeoutów najłatwiej zrealizować w przerwaniu :) Dodano po 1 fragmenty kodu: inicjalizacja przerwań (akurat dla Atmega32) [syntax=c] TCCR0 |= (1 << CS02); TIMSK...
Witam Mam program budzika, który jako dodatkową atrakcję miał mieć możliwość mówienie czasu na żądanie i odtwarzanie oprócz buzzera utworu jako alarmu. Atmega steruje przez jedno SPI programowe układem MAX7219, a przez konwerter poziomów i drugie SPI programowe odtwarzaczem WTV020SD. O ile sam WVT020SD + PCF8563 ( wyjście CLK do INT1 ) działają dobrze,...
Witam. Tym razem mam dość dziwny temat, ale bez oscyloskopu jest ciężko przeanalizować gdzie leczy problem. Mianowicie zbudowałem dimmer do sterowania fazowego, jednak problem na jaki się natknąłem to detekcja zera sieci. Układ detekcji został zbudowany zgodnie ze schematem ze strony Niestety mikrokontroler nie chce wykryć przejścia przez zero. Zazwyczaj...
Zamiast kazać procesorowi robić bzdury typu "nop", których nijak później nie mozna bedzie pogodzić z innymi funkcjami w bardziej zaawansowanym projekcie, zainteresuj się licznikami...
Witam Piszę sobie program (procesor ATMEGA32 pracuje na generatorze 1 MHz bez kwarca) wyświetlający na wyświetlaczu LCD tekst przychodzący z komputera przez UART procesora. Inicjuję LCD w sposób standardowy (4 bity) - procedury ściągnąłem właśnie z tego forum. void lcd_init(void) { waitms(15); // czekaj 15ms na ustabilizowanie się...
... Może Bascom w ogóle nie potrafi tej 16tki odczytać? Pozdrawiam, Damian. Bascom potrafi , tylko Ty nie rozumiesz jak działa instrukcja I2creceive :( A działa tak: I2creceive 68 , W 'i2cstart 'i2cwbyte 68 OR 1 , czyli 69 'i2crbyte W 'i2cstop Z tego jasno wynika , że zawsze odczytasz tylko jeden bajt i zawsze będzie to pierwszy bajt z Twojego PCF-ka...
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...
Mam problem z przełączaniem bitów Założenia programu są następujące Program przez określony czas ma włączyć 2 diody oznaczone Pompka1 i Pompka2 oraz wyłączyć Napowietrzacz po upływie czasu ma przełączyć tz: wyłączyć Pompka1 i Pompka2 oraz włączyć Napowietrzacz po upływie drugiego czasu znowu ma przełączyć. Niestety program nie działa dobrze Diody działają...
Witam, napiąłem program do obsługi termometru cyfrowego DS18B0, program kompiluje się bez błędu a po wgraniu na wyświetlaczu wyświetla się tylko -1.0. Proszę o sprawdzenie kodu bo nie wiem już gdzie jest błąd. DS18B20.H #ifndef ds18b20 #define ds18b20 #define WE0 #define PORT_1WIREPINC #define SET_1WIREDDRC &= ~_BV(WE) #define CLEAR_1WIREDDRC...
Witam Chciałbym się zapytać specjalistów w tej dziedzinie. Przedstawię poniżej jaki jest problem. Wgrywam program napisany w języku C do mikroprocesora Atmega32 poprzez AVR Studio, wszystko ładnie się programuje tylko na wyświetlaczu LCD ukazuje się napis przeważnie co 7 raz wgrywania tego programu. I jak już mam na wyświetlaczu ten napis to wyłączeniu...
Witam, czy moglibyście wytłumaczyc jak prawidłowo zapisać w kodzie wyświetlanie temperatury na lcd 2x16...Cały czas mam problem z dobraniem offsetu.... w chwili obecnej pokazuje mi zakres tem od -25C do 25 C . Stan początkowy 262mV ---> 21.68C..Lm35Dz mam w konfiguracji z pomiarem ujemnych temp poprzez dołaczenie R18k i 2diód.(podniesieie nap masy)......
Spróbuj może taki zapis liczenia impulsów w przerwaniu: [syntax=basic4gl]Czas: Timer2 = Timer2 + 6 If Licznik_sd > 0 then Decr Licznik_sd else Licznik_sd=60000 Flaga_sd_save = 1 End If Return[/syntax]
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ę...
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...
Co myślisz o tym żeby użyć tylko jeden Timer? [youtube][/youtube] [syntax=basic4gl]$regfile = "attiny2313.dat" $crystal = 16000000 '*** Timer0 Config for 500Hz Interrupt CTC Mode *** Config Timer0 = Timer , Prescale = 256 , Compare A = Disconnect , Compare B = Disconnect , Clear Timer = 1 Enable Compare0a : On Compare0a Int0_isr : Compare0a = 249 '******************...
Jeśli 'a' i 'b' mają wartości 0/1 odczytane z enkodera, to trzeba wyliczyć x=a+3*b-2*a*b, a następnie różnicę r=x-old_x; jeśli ta różnica jest -3, albo +3, to trzeba dodać, albo odjąć 4 (można użyć wyrażenia (r+6)%4-2, albo (r+5)%4-1), a wynik dodać do licznika, i na koniec zapamiętać 'x' w old_x. Odczyt i wyliczanie należy wykonywać przy każdej zmianie...
Kod jest narazie na dwa DS'y... #define F_CPU 8000000 #include <avr/io.h> #include <util/delay.h> #define DDR_DB4 DDRB #define PORT_DB4 PORTB #define DB4 PB0 #define DDR_DB5 DDRB #define PORT_DB5 PORTB #define DB5 PB1 #define DDR_DB6 DDRB #define PORT_DB6 PORTB #define DB6 PB2 #define DDR_DB7 DDRB #define PORT_DB7 PORTB #define DB7 PB3 #define...
Witam co do zegara to rzeczywiście miałem 16000000UL, ale wkleiłem 2 kod który nie miał zmiany naniesionej. A co do samego sprzętu to rzeczywiście jest zwykły wyświetlacz HD44780+DS18B20 cel to wyświetlanie temperatury. Większość programów z tego forum opiera się na kodzie ze strony, którą wymieniłeś. #include <avr/io.h> #include <stdlib.h>...
Witam Mam problem z zegarem na lcd. Wyświetlacz mi działa. Działa nawet zegar, lecz jest on napisany bardzo łopatologicznie i używa, delaya, a to nie jest wg mnie najlepszym pomysłem. Chciałbym,żeby zegar wyliczał sekunde z zewn kwarca 32.768 kHz. Tak podobno najlepiej. Poniżej przedstawiam program, który aktualnie używam. Próbowałem wklejać proste...
Witam Proszę o pomoc w uruchomieniu wyświetlacza LCD sterowanego przez mikrokontroler Atmega32. Przesyłam mój kod i schemat podłączenia. Problem polega na tym, że nic mi się nie wyświetla. Pozdrawiam, Rafał #include <avr/io.h> #include <util/delay.h> #define F_CPU 1000000UL #define LCD PORTB #define E 2 #define RS 1 #define SET_E LCD |=...
Napisałem sobie coś takiego w trybie CTC, z włączeniem nóżki OC0 generującej prostokąt. Generuje sobie jakiś dany ton zmieniając wartość rejestru OCR0. Teraz akurat jest bardzo duża częstotliwość dająca wysoki ton. Pytanie mam takie: jak zrobić aby zmieniać cyklicznie wartość OCR0 ? Aby zagrać jakąś melodie, np 1s jeden ton, potem 2s drugi ton, 0,5s...
Konfiguracja DS1307 [syntax=basic4gl]'############# Konfiguracja DS1307 ############# I2cstart 'zerowanie bitu CH I2cwbyte 209 I2crbyte Pom , Nack I2cstop Pom = Pom And &B01111111 I2cstart I2cwbyte 208 I2cwbyte 0 I2cwbyte Pom I2cstop I2cstart 'wlaczenie przerwania co 1s I2cwbyte 208 I2cwbyte 7 I2cwbyte &B00010000 I2cstop 1wreset 1wwrite &HCC...
Witam, dołączę się do tematu aby nie zaśmiecać forum. Moim problemem jest drganie styków przycisku aby wywołać przerwanie int2. Przyciskiem włączam i wyłączam optotriak MOC3041 który z kolei załącza sterownik lampy sodowej 70W przez triak. Problem jest taki: mimo, że zrobiłem programową obsługę drgań styków to działa ono jedynie bez obciążenia - czyli...
Z każdym przyciskiem skojarz jedną zmienną, która będzie zawierała stan licznika timera, w chwili wykrycia jego naciśnięcia. W kolejnych przerwaniach overflow sprawdzasz: 1. czy przycisk jest ciągle naciśnięty, 2. jeśli 1. jest prawdą to czy różnica pomiędzy licznikiem timera a wartością zapamiętaną w skojarzonej z przyciskiem zmiennej jest większa...
Witam. Od paru godzin męczę się z niedziałającym USARTem na atmedze32. Na atmedze88 wszystko śmiga jak ma więc przejściówka USB<->RS232 jest ok. Brak zimnych lutów na płytce. Kwarc zewnętrzny (ustawiony jako EXTHIFXTALRES_258CK_4MS - przy czym nie wiem czy tak ma być dla kwarcu 16MHz). Kod zamieszczam poniżej: [syntax=c] /* * softPWM.c * * Created:...
Witam! Dopiero zaczynam zabawę w Bascom-ie, wiec proszę o wyrozumiałość. Zbudowałem układ na Atmega32, 4 kanały PWM do sterowania RGB+biały. Jeden klawisz do zmiany programów, LCD (do sprawdzenia co się dzieje) oraz czujnik oświetlenia na fototranzystorze. Co chciałbym zrobić: -klawiszem zmieniamy programy (różne kombinacje kolorów) -czujnik oświetlenia...
Wydaje mi się, że o czymś zapomniałem konfigurując PWM. Mnie się wydaje, że ze schematu jasno wynika, że chcesz słuchać transmisji przychodzącej dla układu UART (filtr podpięty pod RXD/PD0), a nie sygnału PWM z licznika (OC1B/PD4 który wisi w powietrzu).
Witam. Potrzebuje rady bo już naprawę zaczynam głupieć. Chciałem obsłużyć czujnik HC-SR04 za pomocą uC atmega32 używając trochę gotowych kawałków i tu się pojawia problem. Jest on dla mnie naprawdę dziwny i nie zrozumiały ponieważ w trakcie wyłączania (TIMSK &=~(1<<OCIE2); ) i ponownego włączania ( TIMSK |=(1<<OCIE2); ) TIMER2 następuje...
Tylko nie wywołuj w przerwaniach tak długich bloków instrukcji - lepiej ustaw flagę, która wskaże pętli głównej programu wykonać te instrukcje. Ale co tu możemy mówić, jak widać tylko wycinek programu. Zgadza się, dlatego wklejam nieco więcej Flaga_wybor jest co 10 sekund, Blokada zatrzymuje odczytywanie czujników na czas odbioru DCF77, zwłaszcza DS18B20...
Poczyniłem programik w C do zliczania impulsów z zewn. wejścia T1. Program zlicza impulsy do T1 w czasie ustalanym przez T0. Sterowanie jest tak ustawione że pierwsze odliczanie wpisywane jest do F1, drugie do F2, trzecie do F3 i tak w kółko. Na czas wyświetlania na LCD wyłączyłem przerwania. Wszystko działa ale nie do końca prawidłowo. Problem polega...
Może to powinno wyjaśnić The counter counts from BOTTOM to TOP then restarts from BOTTOM. TOP is defined as 0xFF when WGM2:0 = 3, and OCR0A when WGM2:0 = 7. Ja to rozumiem tak, że jak licznik osiągnie OCR0A to jest zerowany i tylko wywołuje przerwanie dając w efekcie 0% wypełnienia. Wypełnienie byłoby różne od zera gdybyś pozwolił licznikowi...
Witam! Dla testu mam 3 diody(w przyszłości RGB) podłączone do portu B0, 1, 2. Do napięcia przez odpowiedni rezystor do uC. Atmega32A-PU low fuse E4 high fuse C9 Mam pytanie co do kodu: [syntax=c]void pwm_init(void); unsigned char licznik1 = 0; unsigned char licznik2 = 0; unsigned char licznik3 = 0; volatile unsigned char red = 0; volatile unsigned char...
Ci którzy "korygowali" kiedykolwiek liczniki samochodowe wiedzą jak wygląda zapis z sumą kontrolną :P Liczniki to ciekawa lekcja jak rozwiązano tam przedłużanie żywotności pamięci i korzystanie z poprzednich zapisów jeśli jeden jest uszkodzony :P
Może spróbuj sterowania w inny sposób - za pomocą przerwania INT2 (wywoływanego przyciskiem) uruchamiaj i zatrzymuj licznik TC0 (parametry PWM są ustawione u Ciebie poprawnie) tzn ustawiaj bity TCCR0|=(1<<CS00)|(1<<CS01) kiedy chcesz uruchomić licznik i zeruj je jeżeli chcesz zatrzymać. Samo ustawianie wartości wypełnienia czyli rejestr...
Witam, robię prosty sterownik na atmega328, jest tam badanie temperatury i wilgotności (dht22) , enkoder do sterowania menu i buzzer do alarmów jeśli temperatura przekroczy jakieś zakresy. Całość steruje dwoma przekaźnikami jeden odpowiada za grzanie a drugi za robienie pary. Zasilanie to tania mocno "chińska" ładowarka od telefonu wyrzucona do obudowy...
W mojej starej pracy korzystaliśmy z bramki m-bus/modbusTCP umożliwia ona podłączenie do 20 urządzeń m-bus, u nas było to 12 - jak chcesz to dopytam się o szczegóły. Od tego producenta dostępna jest też i umożliwia podłączenie do 80 liczników Z wykorzystaniem okablowania Cat6 dałoby się zbudować połączenia m-bus z grup liczników do tych koncentratorów...
W kalkulatorze włącz opcję Auto SCK speed bo na Twoim screenie jest ewidentnie niezaznaczona. Wtedy kalkulator przy starcie odczytu ustawia najnizszą prędkość SCK i odczytuje Fusebit`y. Jak zobaczy że masz juz wyłączony CKDIV8 to programuje szybciej i mógłby na przykład 1/4 prędkości 8MHz ale w praktyce najczęściej 1500 kHz. W opcjach programu włącz...
O tez ciekawie!!! Ja mam tylko koncepcje co do wykrycia Synchro: ATmega po zmianie z 1 na 0 wywoływane jast Int0 wtedy uruchamia się Timer1 i liczy impulsy do pojawienia 1 na tym porcie i zatrzymuje Timer1 sprawdzam czy licznik 62500 przeszedl ponad dwa razy jak tak to nie bylo zmiany z 1 na 0 w 59 sekundzie wtedy powinienem zliczac od nowa Timerem1...
Hej Już teoretycznie wiem o co chodzi. Odwiedziłem FAQ i znalazłem coś takiego: //PWM dla wyjscia PB3 (OC1B). //PB3 wyprowadza sygnal PWM, ktory nalezy podac na uklad calkujacy RC, aby otrzymac sinusoide. //Zastosowano AVR ATtiny26. #include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> #include <avr/pgmspace.h>...
Bez obrazy ... ale troche mało peryferii. PS. RTC jest na I²C? Kolega chyba nieczytał dokumentacji ATmega32, bo można podłączyć rezonator 32,768kHz do pinów TOSC1 i TOSC2, a następnie aby uruchomić RTC należy obsłużyć licznik 2 do pracy asynchronicznej i preskalerze 128 przerwanie będzie występowało dokładnie co 1s. Przestudiuj dokumentacje. Jeżeli...
Witam wszystkich.Pracuje na atmega32,kwarc wew. 8MHz. Mam problem co do wyświetlania cyferek na wyświetlaczu 7seg. Wszystko działa ,na początku zostaje wyświetlona cyfra 1 potem 6, natomiast już w nieskończonej pętli for(;;) nie wyświetla się już cyferka 8, dlaczego??Może mi ktoś pomóc?Program napisany w WINAVR Listing programu: #include <avr\io.h>...
TOSC1 – Port C, bit 6 Gdy bit AS2 w rejestrze ASSR jest ustawiony, licznik TC2 pracuje asynchronicznie, kocówka 6 PC6 jest odłczona od portu i doprowadzona do wejcia wzmacniacza w oscylatorze licznika TC2. W tym trybie kwarc jest dołczony do tej kocówki i nie moe ona by uywana jako normalna kocówka I/O. Tak więc PINC.6 nie ma nic wspólnego...
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)...
Próbowałem już wszystkiego, pisząc przy tym chyba z 20 wersji programu. Niestety nic nie pomogło. Siedzę nad tym już kilka dni, dlatego zwracam się z ogromną prośbą o pomoc. Kwestia wygląda tak: Układ mam zbudowany na bazie (układ detekcji zera+sterowanie z triaka - ten schemat zdaje się został wzięty z elektrody właśnie, ale nie mogę znaleźć odpowiedniego...
Witam Wszystkich Mam taki oto problem. Piszę w asemblerze program obsługujący interfejs UART (mk:atmega32) oraz wysyłający odebrane dane na wyświetlacz złożony z 10 matryc (5x8) LED. Napisałem program który mi odbiera dane (w procedurze przerwania) i umieszcza odebrany znak w buforze UART. Następnie w innym przerwaniu pochodzącym od licznika2 wykonuję...
Mam problem z przerwaniem od Timera0. Chodzi o to by Timer0 zgłaszał przerwanie w trybie pracy z porównaniem. Jest to tryb Clear Timer on Compare Match (CTC). Licznik zlicza zdarzenia zewnętrzne i w momencie zliczenia do zadanej wartości ma zgłosić przerwanie i zacząc liczyć od zera. Aby to osiągnąć do rejestru OCR0 wpisuję wartość do której licznik...
Witam Kolegów. Mam mały problem. W zasadzie mój problem polega na tym, że działa coś co moim zdaniem nie powinno działać. Napisałem prosty kod na obsługę timera w ATmega 32. Prpgramik ma generować na 1-szym pinie PORTA sygnał o określonej częstotliwośći. Kod jest następujący: #include <avr/io.h> main() { DDRA=255; //ustawienie PORTA...
Witam, Popełniłeś kilka błędów: - aby odblokować przerwania od przepełnienia timera 1 trzeba ustawić bit 2 a nie 5 w rejsestrze TIMSK - wektor przerwania od przepełniania timera 1 to nie 0x12 a 0x24 Dobrze jest przy pisaniu w C korzystać z funkcji dostarczanych wraz z kompilatorem "intrinsic function" takich jak __interrupt_enable, __interrupt_disable,...
witam Temat być może jest trochę mylący. Ale do rzeczy. Bawię się zestawem zl3avr i jestem na etapie obsługi transmisji w kodzie RC5 w asemblerze. W książce "Mikrokontrolery AVR ATmega w praktyce" podane są gotowe programy do nadawania i odbierania wiadomości w RC5. O ile procedurka nadawania nie budzi żadnych moich wątpliwości, o ile w przypadku odbierania...
Żeby zrobić za pomocą Timera - to nie możesz używać trybu PowerDown tylko Sleep - żeby właśnie Timery mogły działać to po pierwsze. W taki trybie jednak będziesz miał nieco większy pobór prądu niż w pełnym PowerDown. Więc wszystko zależy na ile ma wystarczać bateria o ile jest to coś zasilane z baterii. Bez PowerDown'a na pewno będzie to sporo krótszy...
Witam, Mam taki problem. Chcę wysyłać do PC informację w formie takiego temp1;temp2;f1;temp3 i coś jeszcze. Jak wysyłam informację to chcę żeby ona była raz wyświetlana powiedzmy co ok 1-2s a nie tak jak na screenach pod kodem. (to jest losowe). Co może być nie tak. Timera2 używam jako odmierzacz czasu a timer0 do pomiaru częstotliwości (na 555) $regfile...
To nie moze nie zadziałać. Jeśli programator widzi procek (programujesz pewnie z poziomu Bascoma) powinien Ci się zwiększać licznik programowań za każdym programowaniem. Czy tak jest? Czy podczas programowania widnieje prcek ATMEGA32? Jak masz ustawione fuse bity?
Witam Napisalem sobie program do sterowania potencjometrem cyfrowym DS1802. Program dziala bardzo dobrze, ale to byl moj pierwszy program procz migania diodkami, wiec fajnie by bylo jakby ktos go przeczytal i skrytykowal za brzydkie wciecia, zle nazywanie zmiennych, uzywanie rzeczy ktorych sie powinno uzywac tylko w ostatecznosci i bardzo ostroznie...
Mnie zastanawia jedna rzecz, skoro korzystasz z przerwań to po jakiego grzyba tam input? Zobacz jak mozna to rozwiazac: Odebrano: Disable Urxc ' wylaczenie przerwania na czas trwania aktualnego 'Jesli licznik znakow jest mniejszy od maksymalnego rozmiaru bufora to... If Licz_znaki < Max_znakow Then '...zwieksz licznik znakow, do buforu transmisji...
;* ;***************************************... ;*PROCEDURA WYLICZANIA SUMY KONTROLNEJ Z NUMERU SERYJNEGO UKŁADU 1-Wire ;***************************************... ;* ;* ;*******************************OPIS****... ;*Kolejne bajty numeru seryjnego...
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...
wszystkie funkcje, które napisałem są wykonywane w pętli while programu głównego main. W funkcjach liczników i przerwań ustawiam tylko flagi (wszystkie flagi deklarowane jako volatile), a w programie main sprawdzam, czy dana flaga jest ustawiona - jeśli jest, to wykonuję pewien fragment kodu i resetuję flagę. W funkcjach wywoływanych przez program main...
Atmega128 zapewnia następujące elementy: 128K bajtów wewnętrznej programowalnej pamięci typu FLASH z dopasowaniem odczytu podczas zapisu, 4K bajty EEPROM, 4K bajty SRAM, 53 linie wejścia/wyjścia, 32 robocze rejestry, Licznik rzeczywistego czasu(RTC), cztery liczniki z trybami porównywania i PWM, dwa USART, bajtów zorientowany dwu-kablowy równoległy...
Nie majstrujesz czasem przy Timerze 2? Jeżeli ustawi się odpowiedni bit( patrz datasheet) to te końcówki przestają być I/O. Nie. Używam tylko T1 jako autoretrygowalny licznik wywołujący przerwanie co 10ms. Natomiast licznika T2 nie ruszam. Acha! Zapomniałem dodać, że jeśli kość totalnie wyczyszczę (ERASE) to na liniach 7 i 6 portu C utrzymuje się stan...
Witam...Dlaczego przerwania z Timera0 generowane nie sa zgodnie z dokumentacja? chciałbym zrealizować generator sterujący pinami portu PC0-7...w taki sposób aby wartości z tabeli --- unsigned char GenTab DDRC = 0xFF; // port C jako wyjscie 11111111 CLI(); //disable all interrupts TIMSK = 0x01; //timer interrupt sources TCCR0 = 0x00; //stop OCR0...
Witam. Pierwsza czesc tematu zaliczona na 72% :) Dzieki za sugestie. Zalaczam caly raport (nie kopiowac - Angole maja swira na punkcie kopiowania - raport jest zapisany w bazie wiec jakiekolwiek przekopiowanie kontekstu = sprawa karna + wydalenie z universytetu). Teraz nadchodzi druga czesc gdzie zasugerowany projekt musi zostac zbudowany. Wedlug w/w...
Witam, Od jakiegoś czasu w ramach wolnego czasu uczę się programowania mikrokontrolera ATmega32. Koduję w C (pracuję jako programista wiec ten język jest mi bliższy niż asembler), dotychczas nie miałem jakichś większych problemów, udało mi się nawet obsłużyć wyświetlacz LCD i sądziłem, że obsługa czujnika temperatury DS18B20 nie sprawi mi większych...
Witam ostatnio na szybko próbowałem odpalić sterowanie za pomocą pilota na rc5 tak dla poznania ale coś nie działało wiec to porzuciłem. Dzisiaj do tego wróciłem bo potrzebuje to do projektu. Wiec problem następujący ciągle sczytuje mi ze adres = 255 a Komeda = 128 (ucięty ostatni bit) nie wiem dlaczego tak jest dodam ze odbiorniki są na 100% działające...
Witam !!! Założę nowy temat z tego względu, że problem jest już trochę inny, niż ten poruszany w " ustawienie rejestrow w timerze 1" ISR(TIMER1_COMPA_vect) // przerwanie dla porownania { PORTC ^= 0x01; // zapalic/zgasic diode OCR1A=1440; //OCR1A=14745000/(512*(0.0185*AD... + 0.9814)); } int main(void) { DDRC...
Przerwanie zrób w trybie CTC, nie będzies z musiał ładować wartości początkowej do licznika. Zerowanie wyświetlacza (PORTD = 0xFF;) jest bez sensu, wywal to. I teraz clue programu. Źle sterujesz wyświetlaniem. Na razie masz tak, że kolejne wyświetlacze są sterowane przez chwilkę (dosłownie kilka instrukcji), z wyjątkiem ostatniego. Powinieneś zrobić...
sprowadzać czas do jednej liczby całkowitej (nie musi to być od razu coś na kształt czasu UNIX'owego znanego choćby z serwerów NTP - po co?) ad.1 - w tym celu można przygotować sobie prostą funkcyjkę np: uint16_t get_time( uint8_t hh, uint8_t mm) { return (hh*60) + mm; } Rozwiazanie to jest niepraktyczne. Najlepiej przydaje...
Zdaję sobie sprawę z bałaganu w tym kodzie i nie jestem tym faktem zachwycony...temat powielam bo jest dla mnie kłopotem z którym nie potrafię sobie poradzić pomimo iż szacowne grono kolegów zasugerowało rozwiązanie oparte na wskaźnikach i tablicach których funkcjonowania nie do końca rozumiem i napisany testowy kod nie działał poprawnie...kiedyś zrozumiem...
To mój drugi program ale nie robiłem jeszcze niczego na przerwaniach...każdy pisze po swojemu a nawet mając doświadczenie nawet wam trudno taki program przeanalizować....wszyscy odwołujcie się do google twierdząc że wszystkiego tam jest w bród a to nie jest tak różowo...może dla kolegi to banalne podstawy podając za przykład linki a potem te same procedury...
Witam, mam moduł lcd podany w temacie i próbuję uruchomić go za pomocą uC PIC. Poniżej kod: [syntax=c]/** C O N F I G U R A T I O N B I T S ******************************/ //najnowszy!!!!!!!!!!!!!!!!!!!!!!!!!!!!!... #pragma config FOSC = INTIO67 #pragma config WDTEN = OFF, LVP = OFF, MCLRE...
Mam mały problem z liczeniem impulsów pochodzących z TCCR2. Potrzebuje dokładnie 200 impulsów aby wał silnika krokowego obrócił się w prawo o jeden obrót. Jeden 360 stopni obrót wału silnika to 200 kroków po 1.8 stopnia każdy. Poniżej przedstawiam kod w języku C który napisałem do tej pory. Nie jestem jakimś orłem w programowaniu uP. Chciałbym państwa...
1. W jakim języku piszesz? 2. Kalkuluje się to tak: Masz kwarc 16 000 000 Hz (16 MHz) i dajesz sobie jeden z dopuszczonych prescalerów, np. 64 i wtedy timer zlicza Ci impulsy z częstotliwością 16 000 000 / 64 = 250 000 Hz, czyli jeden impuls timera to 4*10^-6 s lub inaczej aby odmierzyć 1s musisz zliczyć 250 000 impulsów, Jako, że Timer0 jest 8 bitowy...
Witam Chciałem uruchomić przerwania, przygotowałem najprostszy kod z timerem T0 i przerwaniem od przepełnienia, ale nie chce mi zadziałać przerwanie. Dla sprawdzenia zmieniam stan portu do którego podłączona jest dioda. #define F_CPU 1000000 //ustawienie oscylatora na 1MHz #include <avr/io.h> //dołączenie podstawowej biblioteki #include <avr/interrupt.h>...
Cały program poza zegarem sterującym [ kwestia porównywania czasu ] działa i napięcia oraz prądy są odczytywane poprawnie a co za tym idzie sterowanie dwoma zasilaczami oraz monitorowanie ogniwa foto galwanicznego [na razie brak - symulacja] działa również poprawnie.Mierzone napięcie jest napięciem skutecznym. Nadal próbuje dociec dlaczego mam błędny...
Nie jestem w stanie tego zrobić w procedurze przerwania gdyż bufor do którego odczytuje wartości z karty sd posiada dane tyko wewnątrz funkcji read file (przekazywany jest wskaźnik do tablicy, przez to jest ona wypełnina danymi "wewnątrz tejże funkcji" - chyba że się myle ) Mylisz się. Przecież do funkcji podajesz wskaźnik . Pod tym wskaznikiem masz...
'Nie, static uint8_t licznikAnowy = 1 znaczy, że ta zmienna jest inicjowana tylko raz, przy starcie aplikacji, a jej wartość jest zachowywana pomiędzy kolejnymi wywołaniami, niezależnie czy jest to zmienna globalna, czy lokalna. ', po co to napisałeś... wiem po co użyłem static, a ten komentarz tam oznacza praktycznie tyle ze licznik wraca do pierwszego...
Wlasnie piszę ISR(ADC_vect) i czytam o calkowaniu wiec mysle że za niedlugo wrzucę częśc kodu. Dodano po 59 Napisalem początek przerwania dla ADC przy 128 probkach + calkowanie. Czy dobry kierunek obrałem? Dodano po 2 Dodaje calość tego co wykonalem main.c [syntax=c]int main(void) { sei(); DDRA=0x00; DDRB=0xFF; DDRC=0xFC; DDRD=0xFF; PORTA=0x00; PORTB=0x00;...
dziekuje bardzo, teraz wszystko dziala :) Dodano po 2 a teraz następne pytanie: fusebitami mam ustawione 8MHz. Preskalerem dzielę na 1024, więc wychodzi 7812,5Hz. Jako że jest to timer0 to ma rozdzielczość 256, więc częstotliwość wychodzi 30,517... Hz. Z tego by wynikało, że mój licznik powinien dochodzić do 30 i powodować świecenie diody przez ~1s....
Zrobiłem narazie przesuwanie sekwencji o stałej częstotliwości na timerze0 w trybie normalnym. Rozumiem, że teraz aby dodać skanowanie z przycisków muszę przestawić licznik w tryb CTC i ? właśnie co. W pętli głównej czyli w mainie, muszę dać skanowanie portu z przyciskami na wejściu, teraz jak to miałoby działać ? Jeśli wcisnę powiedzmy przycisk 0 to...
Witam.. Szybkie pytanie: Płynnie gasi, a nie rozjaśnia? tylko jest skok do pełnej jasności? [syntax=c] #include <avr/io.h> #include <util/delay.h> /* ----------------------------------------... */ /* Definicje stalych i makroinstrukcji */ /* ----------------------------------------...
Napisałem kod dla zegara cyfrowego w Bascom. Ogólnie działa jak należy. Mam tylko problem przede wszystkim z budzikiem. Chcę aby podczas alarmu naciśnięcie przycisku 1(PORTD.0) wyłączało alarm(chodzi o sam dźwięk). Program nie reaguje. Nie mam pojęcia czy jest to wina tego, że nie nadąża z wykonaniem polecenia (za długie przerwania?) 2) Aktywowanie...
Dzień dobry! Mam taki o to problem, przerzuciłem notę ale nie mogę jakoś ogarnąć jak uruchomić drugi timer 8 bitowy, przykładowo: Proszę pamiętać o używaniu znaczników syntax . Opcja Listing kodu . - arnoldziq