Czy dla uzyskania przerwania co 0,5s, 1s, lub 2sek musze użyc w przypadku Atmega8 timera1 16bit, czy mogę to też jakoś zrobić na 8-bitowym timerze0? Zakładam częstotliwość zegara 1Mhz-4MHz. (pracuję nad mruganiem diody :) widocznym dla oka przy uzyciu przerwania od timera)
Jak dla mnie to powinno być tak. Nie mam kompilatora pod rękom nie jestem pewien czy jest dobrze ale to mniej więcej to. Kod: $regfile = "m8def.dat" $crystal = 1000000 Config Portd = Input ' ustawiam we/wy Dim A As byte 'po co marnować pamięć A = 0 Config Timer0 = Timer , Prescale = 1024 Enable Timer0 Enable Interrupts Do If Pind.4 =...
Hej, Potrzebuję pomocy w opanowaniu pomiaru: napięcia (3x) i prądu (rezystor 0.1om) Ciągle wychodzą mi głupoty i nie wiem gdzie popełniam błąd. Chciałbym mierzyć napięcie 0-5.5V i prąd 0-2.5A Na początek schemat (ze schematu wykroiłem co zbędne) i kod (tu tylko to co potrzeba do pomiarów) aby było wiadomo o czym gadam ;) No i teraz moje obliczenia:...
Program na ArduinoMega działa bardzo dobrze, więc postanowiłem przenieść go na procesor Atmega 328p - ten sam co w większości płytek Arduino. Układ pracuje na wewnętrznym oscylatorze 8MHz, bootloader wgrany, program też. Pojawił się niestety problem, którego nie potrafię zlikwidować - przerwanie od przycisku powoduje restart procesora... Jeżeli dodam...
Witam, proszę o info czemu mi to nie działa. Działenie powinno być takie: przerwanie zewn INT4 powoduje podanie kolejno 67, 67 i 66 impulsów w kolejnych uruchomieniach. Realizuję to przez załączenie T0 w obsłudze INT4. T0 odlicza 250us i ustawia zmienną i aby wykonał się switch() w pętli głównej. Na wyjściu PE2 chcę uzyskać 67 pulsów o częstotliwości...
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...
Witajcie moi drodzy W tym temacie poznamy podstawy przerwań i timerów w PIC18F2550 . Na początek będzie krótki wstęp teoretyczny, a potem wszystko przerobimy dokładnie na praktycznych przykładach. Do lektury tematu przyda się ogólna wiedza na temat przerwań i programowania w C, choćby taka z Arduino. Temat oczywiście nie zastąpi w pełni czytania noty...
To jest fragment kodu, którego używałem , żęby zrobić obsługę licznik, ale nie działa w symulacji $sim $regfile = "m8def.dat" 'Informacja dla kompilatora. $crystal = 8000000 'Też dla kompilatora,zastosujemy kwarc zewnętrzny 10MHz. Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E =...
Witam, mam problem z napisanym przez mnie kodem. Założenie jest takie, że przy puszczonym przycisku Timer1 skonfigurowany jako Fast PWM ma mi powoli rozjaśniać listwę RGB. W momencie przyciśnięcia swicha Timer0 ma odliczyć 5 sekund i PWM ma mi ściemnić listwę. Ma to działać dla 4-ech niezależnych od siebie kanałów. Póki co zacząłem zrobić Fast PWM i...
Mam taki problem, że zrobiłem projekt Odbiornika Morsa na ATmedze8. W oryginalnym projekcie jest kwarc 10 MHz, a ja użyłem 10.240 MHz gdyż taki miałem w domu, a sklepu elektronicznego w mojej okolicy nie ma. Jak podłącze ten odbiornik do komputera i z programu morsik coś wysyłam to np. "adrian" dekoduje poprawnie, a "jarek" już nie, tylko na LCD pojawia...
Witam, Pracuję na ATmega16 taktowanym wewnętrznym oscylatorem RC. Chciałem wykorzystać Timer1 do odmierzania czasu np. 1s lub 1min (po zastosowaniu preskalera 1024), a Timer2 razem z przerwaniem zewnętrznym do wykonania regulacji fazowej. Kiedy chce tylko odmierzać czas, albo tylko regulować fazowo to wszystko działa poprawnie. Jednak kiedy chcę połączyć...
Witam, mam kod: [syntax=basic4gl] Config Timer0 = Timer , Prescale = 1024 Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Disconnect , Compare B Pwm = Clear Down , Prescale = 8 Config Timer2 = Timer , Async = Off , Prescale = 1024 , Compare = Disconnect , Pwm = Off , Clear Timer = 1 Config Timer3 = Timer , Prescale = 256 Config Int6 = Change On Ovf0...
Witam, mam jakiś błąd w sofcie, który powoduje, że po odłączeniu i włączeniu zasilania program nie działa prawidłowo. Zresetowanie atmegi bez odłączenia zasilania powoduje że wszystko chodzi już dobrze. Próbowałem różne ustawienia fuse'ów, kwarc 12MHz, CKOPT włączony, ustawiony najdłuższy możliwy czas opóźnienia włączenia. Testowałem na wewnętrznym...
Próbowałem 2 sztuki ATMEGA162. Obie pracowały stabilnie na 20MHz. Program pisany w C, niezbyt skomplikowany (operacje logiczne, arytmetyczne, skoki warunkowe, dostęp do pamięci etc, nie wykorzystywałem timerów, przerwań, pamięci EEPROM).
Poprawiłem kod żeby był czytelniejszy i nieco go skomentowałem: [syntax=c] /* układ ATmega88pa-pu 8MHz */ #define F_CPU 8000000 #define BAUD 9600 #include <avr/io.h> #include <util/delay.h> #include <stdlib.h> #include <stdint.h> #include <stddef.h> #include <avr/interrupt.h> #include <util/setbaud.h> volatile...
Przepraszam, że odkopuję temat ale mam problem właśnie z timerem 0 w atmedze 328p i jak bym miał zakładać nowy temat to nazwał bym go prawie tak samo jak ten więc wolałem napisać w już istniejącym temacie. Chcę sprawdzić działanie 8-bit Timer/Counter0 w ATmega328P. Efekt do uzyskania prosty. Ustawiam pin C5 jako wyjście (na początku stan niski) i przy...
Witam, bardzo proszę o pomoc. Zrobiłem układ na Atmega32 z podłączonymi diodami do całego PortuA, oraz do PortuB Pin2 (PB2) dekoder podczerwieni TSOP31236 (testowałem też na TSOP31238). Wykorzystać chciałem bibliotekę IRMP a w załączniku spakowany cały projekt z plikami biblioteki irmp.
Witam Do "kompletu" brakuje mi obsługi zegara DCF77. Tzn. uruchamiałem już wcześniej na Atmega8 i nie było problemów. Jednak przy tym układzie wykorzystuję Timer, przerwania - może konfiguracja jest zła ?. Timer0 - liczniki i flagi Timer1 - DCF77 Timer2 + INT0 - odbiór RC5 INT1 - przerwanie od PCF8574 Całość działa, do momentu podpięcia sygnału zegara...
Otóz tak wygląda pewien program do zczytywania komend z czujnika podczerwieni do którego wysyłane są sygnały za pomocą pilota w standardzie RC5: Poprawiłem tytuł. LordBlick
Witam. Od dość długiego czasu zmagam się z projektem ramienia i aplikacji nim sterującej. Cały projekt jest już prawie ukończony, poza komunikacją usart, która przysparza mi olbrzymich problemów. Aplikację napisałem w visualu. W skrócie, po kliknięciu przycisku "wyślij" program wysyła po serial porcie 18 bajtów (6x[bajt kontrolny+wybór serwa+wartość...
Witam. Potrzebuję W tym liczniku obrotów: [syntax=c]#include <avr/io.h> #include <stdio.h> #include <avr/interrupt.h> #include <util/delay.h> #include "HD44780.h" //tutaj ustaw własne zasady pomiaru #define POMIAR_ILOSC_IMPULSOW_NA_OBROT 4 //ilość inpulsów na jeden obrót #define POMIAR_ILOSC_OBROTOW 10 //ile obrotów ma trwać...
Zerknij na to [syntax=c]/* * Timer0_fast_pwm_adc_irq_1.c * * Program uruchamia licznik Timer0 w trybie modulacji szerokości impulsu, tzw. Fast PWM. * Wyjście modulatora PWM na końcówce (OC0) PORTB.3. * Zostaje uruchomiony przetwornika ADC, pomiar z kanału 0, pomiar 10-bitowy, wyz. ADC z przepełnienia Timer0. * Częstotliwość PWM zależy od prescalera,...
Witam, ostatnio zająłem się pisaniem stosunkowo prostej aplikacji na AVR ATmega8, potrzebnej mi na studia. Na celu miałem też trochę lepsze poznanie AVR. W czym problem : W moim programie chciałem przetestować typowe zachowanie uC, napisałem kilka prostych funkcji, włączyłem przerwania, zrobiłem pętle nieskończoną w której na moim wyświetlaczu 7 segmentowym...
Witam Mam prośbę o rozjaśnienie pewniej sprawy - mam do Atmegi8 podpięty odbiornik IR (SM3385P) cudo to zostało wymontowane z jakiegoś odbiornika Czujnik podpięty jest pod PB0 - do tego posiadam pilot TTS35AI - od zestawu SkyStar2 - do przetestowania wykorzystałem program ze strony Kod poniżej [syntax=c] //--------------------------------------...
Nie mam jak określić dokladnie częstotliwości, ale mniej więcej z przełożenia czujnika w skrzyni myślę że od 0 do 4000 impulsów na sekundę ( tak orientacyjnie), szerokość impulsu to 1/16 obrotu czujnika. Znalazlem dziś jedyny projekt, z którego mógłbym wziąć podstawę, ponieważ jest to obrotomierz czyli też zliczanie impulsów i podobno działa na takiej...
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 Od jakiegoś czasu próbuję zapędzić moją ATmegę32 do współpracy z kartą SD. Wykorzystałem do tego FatFs, a problem mam z inicjalizacją karty - a przynajmniej tak sądzę, ponieważ funkcje f_mount i f_open zwracają wartość FR_NOT_READY, co wskazuje na niepowodzenie funkcji disk_initialize. W moim projekcie użyłem przykładów zamieszczonych na tej samej...
jestem początkującym mam odbiornik podczerwieni sfh5110-36 i atmege8 wszystko podłączyłem jak na schemacie wgrałem też plik //--------------------------------------... // Plik "main.c" // // KURS AVR-GCC (abxyz.bplaced.net) // // Dekoder RC5 // // (schemat i opis działania w artykule) // testowanie na atmega8 (8MHz) //--------------------------------------...
Witam... To będzie sporo pisania więc trzymajcie się... ;) #include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> #include <inttypes.h> #include <stdlib.h> #define F_CPU 8000000 //wewnętrzny generato na 8Mhz #define PARITY_NONE 0 #define PARITY_EVEN (1<<UPM1) #define PARITY_ODD ((1<<UPM1)|(1<&...
Witam prosiłbym o napisanie jak ustawić Fuse bity w mikroprocesorze Atmega8 do programu: :'Piornik02.bas 'Różnica pomiędzy 01: w czasie pisania tekstu pozostaje on cały czas w okienku wyświetlacza 'oraz buzer przepełnienia pamięci jest z własnym generatorem (buzer z Portd.7 do +). 'Program do wyświetlania ściągi. 'Pozwoli zapisać treść w postaci 94...
Z tego co wiem to w ATmega-ch raczej trudno o możliwość zliczania impulsów z 3 niezależnych źródeł zewnętrznych i generowania dla każdego z osobna przerwania (chyba że powyżej ATmega32, ale w grę wchodzi wtedy wysoka cena). Pytanie czy konieczne jest takie rozwiązanie jak zaproponowałeś? Przy pracy uC z prędkością 8MHz (np. jak dla ATmega8, ATmega16...
Witam wszystkich, chciałbym zasięgnąć rady w sprawie transmisji sygnału w kodzie Manchester. Usiłuję napisać program dla układu z RFID i kartami typu UNIQUE. Do nawiązania transmisji używam układu EM4095, którego wyjście taktujące (RDY/CLK) podłączyłem do pinu PD5(T1), jako zewnętrzne źródło sygnału taktującego dla timera/countera1. Wyjście DMOD_OUT...
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
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...
Przepraszam że nie potrafię tego wyjaśnić ale to nie ja pisałem ten program. Mam taki kod:
Witam, Pisze kod do projektu termometr na czujniku LM35 i Atmega8. Wartości zmierzonego napięcia z czujnika zapisuję w zmiennych TEMP oraz DZIESIATKI i JEDNOSCI. Mój problem polega na tym, że nie wiem jak mam zadeklarowac zmienne DZIESIATKI i JEDNOSCI aby mozna było te wartości przekazywać do obsługi przerwania ISR(TIMER0_OVF_vect) w którym chcę wyświetlać...
Próbuję przerobić przykład "Przyklady\LCDAlfa\LCDAlfa-transact-int\... z książki [url=] z ATmega 328 pod ATmega8 i "mam problema". Ponieważ Timer0 w ATmega8 jest uboższy niż w ATmega 328 zastąpiłem go Timerem2. Niestety z marnym skutkiem. Wyświetlacz jest pusty. Oryginalny fragment kodu: [syntax=c]... ISR(TIMER0_COMPA_vect) { static...
Na podstawie artykułu: chciałem spróbować nastawić timer1 (16 bitowy) w ATmega16. Robię to w ten sposób: [syntax=c] #include <avr/io.h> #include <avr/interrupt.h> #define LED1 PC0 #define LED2 PC1 volatile uint8_t cnt=0; void main(void) { DDRC |= (1<<LED1) | (1<<LED2); PORTC |= (1<<LED1); TCCR1A |= (1<<CS12) | (1<<CS10);...
Hej rebjata, próbuję wykonać obrotomierz na Atmedze8A, jednak utkwiłem w martwym punkcie. Obrotomierz działa w oparciu o transoptor odbiciowy CNY70. Mierzy obrotu silnika BLDC. Połowa rotora silnika jest czarna a połowa biała. Transoptor jest przyłożony do rotora, w czasie obrotu silnika fototranzystor transoptora raz przewodzi a raz nie - zależnie...
(at)stozek - normalnie w Bascom nie jest potrzebna komenda Start Timer0 bo jest on uruchamiany od razu podczas konfiguracji. Używa się tej komendy tylko jeśli poprzednio zatrzymałeś Timer poprzez Stop Timer0. Rozumiem, że zatrzymujesz timer. Tak więc zatrzymywanie timera to zabranie mu źródła taktowania. Bascomowe komendy moża wiec rozumieć tak: Start...
Użyj jakiegoś timera i przerwania, powiedzmy TIMER0. Policzmy trochę. Zakładam zegar 8Mhz. Jezeli uzyjemy preskalera 256 to czas co jaki zostanie wywołane to przerwanie to 256*256/8000000=0,008. Ilość taktów co jakie zostanie wywołane przerwanie to 256*256=65536 (pierwsze 256 wynika z tego, ze licznik jest 8 bitowy drugie to preskaler) Żeby odliczyć...
Mam prosty program licznika oparty na wyświetlaczu led. Program nie dokonuje przerwań z timerów. Czy może ktoś jest w stanie rozjaśnić co jest nie tak? Czy jest możliwość, że fuse bit'y od przerwań są źle ustawione? Ten sam program wgrywając do M16 za pomocą STK500 działa sprawnie tylko wtedy, gdy w bascomie ustawie zamiast M16-90S2313 (oczywiście należy...
Witam Chciałem uzyskać pracę asynchroniczną (licznik sterowany kwarcem zegarkowym, procesor generatorem wewnętrzym). Napisałem prosty program (miganie diody LED co 1s): $regfile = "m48def.dat" ' plik danego mikrokontrolera $crystal = 8000000 'częstotliwość generatora wewnętrznego Config Portb.0 = 1 'wyjście dla LED Portb.0 = 1 Enable Interrupts 'odblokowanie...
Mam problem aby zmienić taktowanie timera z wew. generatora atmegi na zew. kwarc zegarkowy (timer 1). Po podłączeniu kwarcu do wejść TOSC1 i TOSC2, ustawiłem flagę CS12 i zmieniłem liczbę zliczanych cykli. Po tych zmianach nic się nie dzieje (nie są zliczane sekundy itd.). Co jeszcze trzeba zrobić? Szukałem, ale niby nic więcej nie trzeba było ustawiać...
Witam. Mam z książki Marcina Wiązani listing do zegarka na atmega8. Chciałbym włączyc jeszcze do tego projektu termometr ( możne być DS18B20 lub LM35). Jak to technicznie wykonać? listing zegara 'Program zegara wykorzystującego przerwania od Timer1 'Przerwanie przepełnienia Timer1 jest generowane co 1 s '8 MHz/256/31250 = 1 s 'Przycisk S1 ustawia minuty,...
Do zrealizowania na zaliczenie kursu był program wykorzystujący timery i przerwania do pomiaru czasu. W skrócie wprowadzamy czas w void start(void)//rozpoczecie odliczania { sprintf(message,"Odliczanie "); message[15]=' '; LCD2x16_clear(); display(message, false); //konfiguracja timerow TCCR1B |=...
Właśnie mam już opracowany program pod Windows komunikujący się z modułami. Wykorzystałem następującą konstrukcję ramek: Każde 8 bit jest jakby jednym znakiem RS-232. Ramka ma stałą długość, więc mam nadzieję, że nie będzie potrzeby wprowadzania dodatkowych znaków typu '\n', czy '\r'. Nie wiem, czy to się uda, ale chciałbym, aby przy pierwszym odebranym...
Witam, Dostałem zadanie, aby zaprojektować bezprzewodowy sterownik pieca gazowego, który ma działać w następujący sposób: 1) W momencie kiedy przycisk S1 (na schemacie jest to złącze modułu radiowego - PC2) jest wciśnięty, przekaźnik gazu (G1) i wody (W1) są wysterowane. 2) Gdy przycisk S2 zostaje zwolniony, przekaźnik G1 zostaje wyłączony, natomiast...
Pozwolę sobie jeszcze raz nadużyć Waszej uprzejmości i znowu zwracam się z prośbą o pomoc Sprawa dotyczy sterownika do serwonapędu (na razie jednego, później rozbuduje do 8). Taktowanie 8MHz. Oto kod programu: [syntax=c]#include<avr/io.h> #include<avr/interrupt.h> #include<HD44780.c> #include<util/delay.h> #include<stdlib.h>...
Witam, zrobiłem wysyłanie danych z MK do komputera kod jest wzięty od książki z strony atnela Co robię nie tak, chyba że jest ok a ja to źle interpretuję, wydaje mi się, że napis powinien się pojawić linijka po linijce. Pozdrawiam
Nie. Robię to mniej więcej tak: czekam na przejście przez zero i w czasie półokresu włączam i wyłączam na określony czas dmuchawę. Jestem pewien, że można to zrobić łatwiej, ale musiałem całość szybko uruchomić, a że ten sposób działał to już tak zostało. Póki co dmuchawa się nie popsuła przez takie sterowanie :P. [syntax=basic4gl] $regfile = "m16def.dat"...
Witam, Jestem w trakcie budowy komputera pokładowego na procesorze AtMega8 oraz na wyświetlaczu LCD LS020. Program który tworzę ma zrealizować podstawowe funkcję komputera pokładowego, takie rzeczy jak menu i możliwość nastawienia parametrów odpuszczam a jedynie chcę prawidłowo obsłużyć wejścia i pomiary sygnałów. W trakcie pisania programu natknąłem...
Witam, mam problem z odbiorem kodów rc6 a mianowicie sprawdziłem specyfikacje mojego pilota na stronie lirc/remotes i jest to kodowanie właśnie rc6 szukałem po internecie i niewiele się mówi o tym i innych kodowaniach niż rc5. Znam czasy między bitami i z czego się składa ramka danych w rc6. Mój problem dotyczy obsługi tego kodowania mam bibliotekę...
witam napisałem program w którym dokonuje pomiar poprzez sonar ultradzwiekowy uzywając komunikacje SPI ale niestety problem polega na tym że nie zależnie od odległości przeszkody silniki cały czas pracują tak samą prędkością. Dodano po 40 Jestem zielony w wskaźnikach i komunikacji SPI .Więc to mogłem jedynie źle zrobić.
Witam serdecznie. Rozpocząłem jakiś czas temu zabawę z mikrokontrolerem ATmega. Posiadam model ATmega32-16PU. Buduję zegar czasu rzeczywistego. Chciałem do tego wykorzystać przerwania z wbudowanego timera (przepełnienie). Po wielu nieudanych próbach synchronizacji ATmegi z rzeczywistym czasem postanowiłem policzyć taktowanie swojego mikrokontrolera....
Wybacz, ale nie rozumiem współpracy tych linii kodu. Zastanów się nad użyciem [syntax=c]ISR(TIMER0_OVF_vect) { timer0_licz--;[/syntax] i dalej, cała funkcja [syntax=c]void delay_500ms(void) { ATOMIC_BLOCK(ATOMIC_FORCEON) { TIFR |= _BV(TOV0); //zerowanie flagi przerwania (zapis 1) TIMSK |= _BV(TOIE0); //aktywacja przerwania od przepełnienia TIMER0 (OVF)...
witam. może ktoś wie o co chodzi i poradzi jak zrobić: timer1 na wartości preskalera 1 lub 8 działa normalnie (tzn. w całym swoim zakresie wywołując przerwanie od przepełnienia). gdy zmieniam preskaler na 64 i więcej timer1 przestaje działać. popatrzyłem sobie do ilu dolicza timer. wiec przy preskalerze 256 jest to 3216, a przy preskalerze 1024 - 804....
Co to za bełkot!? 1. Timer do odmierzania czasu skonfigurowany jako licznik impulsów z zewnątrz! 2. Podprogram obliczania czasu nigdy nie będzie wywołany z pętli głównej! 3. Wyświetlana ma być wartość licznika. Podaj kolego na koncówkę 11 impulsy z zewnątrz to je zacznie zliczać i wyświetlać. Bedziesz miał przynajmniej licznik impulsów. Program do zegara...
Nie umiem odczytać temperatur z ds18b20. Rezystor podciągający jest(4.7k), VDD i GND też są podłączone. Linia danych podpięta jest pod pb.7 Aha wyświetliłem sobie też wartości odczytanych bajtów, zarówno 1szy jaki drugi mają wartość 0xFF. podaję kod może koś znajdzie błąd. Dim Cyfra(10) As Byte Cyfra(1) = &B00000101 Cyfra(2)...
Wektorów przerwań szuka sie nie tyle w dokumentacji winavr co w dokumentacji kontrolera, który się programuje. Nazwa wektora to nazwa przerwania ze spacjami zastąpionymi podkreślnikiem i dodanym przyrostkiem _vect np przerwanie od przepełnienia timera 1 w atmega 32: w dokumetnacji sekcja Interrupts (str. 42) 10 $012 TIMER1 OVF Timer/Counter1 Overflow...
Sprawa jest następująca, zaprojektowałem na ATMega mały system który używa kliku przerwań sprzętowych a mianowice INT0,INT1, oraz przerwania timera Timer0,Timer1. Dodatkowo program (w C) obsługuje przetworniki ADC oraz DAC podłączone pod magistralę SPI. Generalnie wszystko działa OK ale czasem pojawiają się nieprawidłowe wartości napięć na wyjściu przetworników...
Umieść kod tak, żebym mógł go skompilować, bo jak zwykle nie wierzę. Mam ten kompilator, korzystam i nie takie cuda pisałem... Daj kod, który ma wszystko a potem napiszę ci, co zrobiłeś źle i co rozumiesz przez Przy optymalizacji "s" tego co po while(1) nie ma!! A symulacja potwierdza, że program się zapęta w pustym RJMP. Kompilacja w jednej z poprzedniej...
Nie jestem za biegły w timerach i się ciut pogubiłem. Proszę zatem o podpowiedzi. Próbuję ustalić ile czasu będzie trwał impuls podawany na INT procesora a jednocześnie zmierzyć czas od początku tego impulsu do początku następnego. Jednym uP podaję impulsy na drugi uP. Do Portc.7 = 0 'stan wysoki Waitms 1 Portc.7 = 1 'stan niski Wait 5 Loop Drugim uP...
Mam program, w którym uruchamiam przerwanie z pinu ICP. I wszystko działa jak należy, program jest przetestowany. Postanowiłem połączyć go z programem do obsługi karty pamięci pobranym z //**************************************... // **** MAIN routine FOR Interfacing microSD/SDHC CARD **** //**************************************...
Witam. Napisałem sterownik do serwa modelarskiego na Atmega 8. Teraz próbuje skomunikować ten sterownik z druga Atmegą 8, aby przesyłać pozycje zerwa z drugiej Atmegi do sterownika. Jednak napotkałem pewne kłopoty. Oto program do drugiej Atmegi: #include<avr/io.h> #include<util/delay.h> #include<uart.c> unsigned char dana=100; int...
Witajcie, mam problem nad którym siedzę juz kilka dni i zatrzymałem się nie wiedząc gdzie tkwi problem. Otóż chcę obsługiwać zegar RTC PCF8563 po I2C - czytać i zapisywać z niego dane (datę i czas). Projekt mam podzielony na kilka plików, całość pisana w Code Blocks 10.5 i kompilowana w AVR GCC. Mam zdefiniowaną strukturę do zapisu danych z zegara do...
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....
Programuję w ASM ale tylko Atmega8/16 więc wklejam ci taki przykład: [syntax=asm] .CSEG .org 0x0000 //poczatek deklaracji skokow dla przerwan rjmp _poczatek reti reti reti reti reti reti reti reti rjmp _150_timer0 //przerwanie overflow timer0 reti reti reti reti reti reti reti reti reti _poczatek: in r16, TIMSK//timer0 overflow interrupt enable ori...
Witam Napisałem program, który dekoduje sygnał DCF77 ( ustawia flagę ), następnie zapisuje ( przy pierwszym uruchomieniu ) wartości zmiennych do PCF8563 i cztery razy na dobę wysyła przez RS485. do tego dwa razy na dobę koryguje czas w PCF8563. I to działa bez problemu. Do celów testowych mam podłączony LCD. Chciałem dołączyć możliwość pomiaru i wysyłania...
... Dlaczego tak się dzieje? :/ Dlatego, że przerwanie ISR(TIMER1_COMPA_vect) jest wywoływane co 128 taktów zegara, a wykonanie procedury przerwania timera1 zajmuje ~200 taktów. Po zakończeniu wykonywania przerwania od timera, gdy uC wraca do programu głównego, ma już ustawioną flagę od OCR1 i ewentualnie flagę RXC. Ponieważ timer "stoi wyżej" w hierarchii...
Witam, mam problem z poprawną obsługą trybu CTC timera 0 w Atmega16. Taktowanie z wewnętrznego RC 8 MHz. Na wejście INT0 (aktywne zboczem narastającym) podaję prostokątny sygnał kluczujący o f=50 Hz i wypełnieniu 25%. W każdym okresie tego sygnału chcę go próbkować cztery razy - 20 ms okres dzielę na cztery, uzyskując 4 'bity', każdy o szerokości 5...
Cześć. Mam problem z charlieplexing-iem. Otóż posiadam Atmegę 8 i potrzebowałem wysterować 20 ledów. Zrobiłem więc coś takiego Jak widać do sterowania diodami wykorzystuję pierwsze 5 pinów portu D. Następnie stworzyłem taki kod: [syntax=c]#define F_CPU 8000000L #include <avr/io.h> #include <avr/interrupt.h> #include "E:\GG dysk\PROGRAMOWANIE\Mikrokontrolery\AVR\B...
Nadajnik (xmega 128a3, TRYB = 1): [syntax=c]#include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #include <stdlib.h> #include <string.h> #include <avr/pgmspace.h> #include <stdbool.h> #include "SPI.h" #include "nRF24L01.h" #include "nRF24L01_memory_map.h" #include "twi_master_driver.h" #include...
Czesc Program ma za zadanie mierzyc szerokosc impulsu za pomoca przerwania INT1. W skrocie dziala to tak ze podczas zbocza narastajacego wykonuje sie przerwanie ktore wlacza timer. Timer ma swoje wlasne przerwanie od przepelnienia i zlicza pelne cykle przepelnienien. Gdy pojawi sie zbocze opadajace to wylacza timer i zapisuje jego wartosc ktora nastepnie...
Swego czasu tak z 10 lat temu musiałem wymyślić coś na zawieszane kamery obrotowej LG Dystrybutor twierdził, że to nie jest wina kamery. Po ponad roku okazało się jednak, że to jej wina. Do tego czasu kamera była reklamowana i zwracana kilka razy. Zawieszała się tak około po godzinie pracy i nie działało sterowanie PTZ poprzez RS485. Więc potrzeba była...
na każdym który napiszę jest tak samo, w nowym temacie powyżej podałem ustawienia fuse bitów, zaraz wkleję kawałek na którym teraz się bawię Dodano po 4 to kod na którym teraz się bawie '***************************************... '-------------------- konfiguracje ----------------------------------------... $regfile...
Dlaczego jak napisze: On Timer0 Timer0_int Disable Timer0 nop nop nop Tirf.0=1 'Ustawiam flagę oznaczająca rzadanie przerwania od Timer0 nop nop nop Enable Timer0 nop nop Timer0_int: nop nop Return to program nie wykonuje przerwania po wykonaniu instrukcji Enable Timer0? Czy ustawienie bitu tirf.0 jest niemożliwe programowo? Czy to wina Bascoma?...
Witam. Walczę z tym już od dłuższego czasu. z serią At90S nie miałem żadnych problemów, a jak AtMegi i AtTiny zastąpiły tą serie to przestałem czaić o co chodzi. Mianowicie: Atmegę 8535 taktuję zewnętrznym kwarcem 16MHz. do tego 2 kondensatory 22pF. Fusy ustawione tak: CKSEL0...3=0 - odhaczone CKOPT=0 - zaznaczone Napisałem prosty programik, który po...
A może zrobić to z innej strony - wykorzystać Timer/Counter1 z odszumiaczem (Noise Canceler). Licznik może zliczać impulsy z kontaktronu, a przerwanie w stałych odstępach może sprawdzać stan licznika.
Witam, Musze zrobic szybkie przerwanie od timera w atmega162. W związku z tym nie moge sobie pozwolic na korzystanie z pamięci SRAM i stosu, więc zostają tylko rejestry, wystarczą 3, w tym dwa wskaźnikowe np. X. No więc w właściwym programie te rejesrty nie mogą byc użyte, ani modyfikowane. Czy da się to zrobic w AVG-GCC? Przepisywanie dużego fragmentu...
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...
No to temat troszke ruszam, korzystam oczywiscie z kawalkow gotowych kodów co by nie klepac od nowa. W zwiazku z tym iz czekam dopiero na plytki w ktorych bedzie i RTC i podtrzymanie zasilania bawie sie na tym co mam , czyli atmega8 i zegar obsluguje na nim. '8 MHz/256/31250 = 1 s $regfile = "m8def.dat" $crystal = 8000000 Config Pinb.3 = Input...
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 poniżej przedstawiam kod programu za srednikami jest poustawiany timer 16 bit który steruje serwomechanizmem z modeli RC i działa wszystko poprawnie (wyjscie OC1A do serwa) natomiast ja chcialbym to serwo wysterować 8 bitowym wyjscie (OC0/t0 pin1 do serwa) I niby wszytsko dobrze posutawialem ale serwo ani drgnie dlaczego? #include "avr.inc"...
Witam Piszę program (bascom) i nadziałem się na problem z którym nie mogę sobie poradzić. Timer 1 pracuje jako zegar i po spełnieniu warunku , ma załączyć przekaźnik który ma być załączony na czas_pracy i po odliczeniu czasu pracy ma wyłączyć się na czas przerwy i zablokować włączenia przekaźnika na ten czas. Tak w skrócie: kod : $regfile = "m8def.DAT"...
Poniższy program dla wersji ATMega32 usiłuję przerobić na wersję dla ATMega644p /która posiadam/. Program ma za pomocą przerwań realizować opóźnienia. Niestety robi się to wszystko skomplikowane ponieważ jak wiadomo szczególnie system przerwań i timerów jest dużo bardzie rozbudowany niż na niższych modelach procesorów. Jeśli ktoś jest w stanie mi pomóc...
Witam wszystkich, Tak jak w temacie: Poszukuje sprawnego programu aby zrobić zegar LCD na ATMEGA8. Program musi być w języku bascom. Znalazłem coś takiego ale nie działa :/ Opoźnienie sekundy wynois jakies 4s 'Program zegara wykorzystującego przerwania od Timer1 'Przerwanie przepełnienia Timer1 jest generowane co 1 s '8 MHz/256/31250 = 1 s 'Przycisk...
Oddzielam temat od poprzedniego ze względu na inną naturę problemu. Master generuje przerwanie od Timera2 co 1.15ms. Transmisja SPI ustawiona jest na CLK/4 co przy ośmiu bitach daje czas transmisji równy 0.004ms. Co jedno tyknięcie timera wysyłany jest jeden bajt - zatem 0.004ms co 1.15ms. Działa to wszystko pięknie, bez lagów i przepełniania stosu....
Ok, po krótkiej przerwie płytkę mam wykonaną pod powyższy schemat, jednak znajomy który zdeklarował się napisać kod nie może mu podołać. Wygląda to jakoś tak: [syntax=c]#include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> // definicje zmiennych do sterowania 6 kanałami programowych PWM // zmienne typu uint8_t, rozdzielczoć...
Wracajac do tematu czy moglbym prosic przynajmniej o pseudo kod obslugi przykladowo drgania w przyciskach , wysterowania przekaznika np przez 2s oraz komunikacji 1wire jednym timerem (atmega8 ma az 2 timery wiec pewnie szybko skoncza sie jego mozliwosci chcac napisac kod bez zatrzymywania) Cały dowcip polega na tym że z tego 8 bitowego timera możesz...
Witam. Otóż mam taki problem ;) Dwa czujniki DS18b20 podłączone są do osobnych pinów Atmegi168, PINB0, PINB1. Chciałem to zrobić w ten sposób aby w przerwaniu ustawiana była flaga (co sekundę) która realizowana była w pętli głównej while(1), w ten sposób, aby co sekundę na zmianę wykonywany został convert oraz odczyt. Wydaje mi się, że wszystko zrobiłem...
Witam, Mam problem z poniższym programem. Timer0 odlicza 1ms i generuje przerwanie. W programie obsługi przerwania zmienna "znak" przyjmuje wartość znak=15, a chyba powinna przyjmować wartość znak=34. Dlaczego program nie uwzględnia mi przypisania znak=34, które znajduje się w pętli for? Pozdrawiam Listing programu: [syntax=c].................................
Witam, czy ktoś może podpowiedzieć czy sygnał zewnętrznego przerwania musi być utrzymany w stanie ( np. niskim) do czasu wywołania procedury przerwania czy może zostać zwolniony. przykład dotyczy ATmega128 (kwarc 14MHz) gdzie uruchomione są dwa przerwania od licznika TIMER1 oraz zewnętrzne przerwanie INT1(aktywne zbocze opadające). Sygnał przerwania...
Pomóżcie mi bo mnie krew zalewa. Atmega mierzy impulsy na wejściu zewnętrznego przerwania INT1. Timer2 służy jako podstawa czasu. Od około 240 kHz na INT1 miernik mierzy nie poprawnie, to znaczy nie występuję przerwania od Timera2 w trybie CTC i program wisi w pętli while, ale gdy przełączę zakres na generatorze na mniejszy to wyświetla mi się wartość...
Witam. Ostatnio zainteresował mnie pomiar natężenia światła, potrzebuję go do wykonania projektu. Pomiar dokonuje czujnikiem TSL235R, który podaje mi odpowiedź w formie częstotliwości. Chciałbym aby ktoś przyjrzał się temu co narazie wklepałem do kompilatora, bo nie jestem pewien, czy wszystko będzie grało? Może zacznę od kodu, wtedy zadam pytania itp....
Witam. Mam problem z dekodowaniem sygnału z pilota. Pilot to RC5-BP7. Kod znalazłem na stronie o kodzie rc5, przerobiłem pod Atmege16 bo napisany został na Attiny. Zmieniłem również wartości wpisywane do licznika, ponieważ Atmega16 standardowo jak dobrze wiem działa na 1MHZ. Układ reaguje na przerwanie INT1, niestety dekodowanie ciągle kończy się errorem...
Witam. Koledzy niby prosty układzik między innymi z czujnikiem temperatury DS18b20. Nijak nie mogę uruchomić tego czujnika. Sprawdziłem wszystko pod kątem połączeń zwarć i zimnych lutów. Ba nawet czujnik podmieniałem i nadal temperatura odczytana z czujnika to -0.1. Wiem że mam jakiegoś babola w programie którego nie widzę. Jak znam życie to jakiś banał...
Witam, jako że po raz pierwszy próbuję zrobić coś z wykorzystaniem sygnału PWM i timerów, chciałbym zapytać się bardziej doświadczonych kolegów o to czy ten program ma szansę zadziałać. Z założenia ma to być sterowanie silnikiem krokowym poprzez : - podawanie sygnału PWM na wejścia ENABLE A i B układu l298 tak aby sterować prądem baz - Podawanie sygnału...
Nie potrzeba 100 linijek. Ja zazwyczaj robię to tak iż jeszcze nie zdarzyło mi się nie użyć timera. Jak by nie robić to jego użycie zawsze ułatwia cały program. W timerze sprawdzam stan klawiatury i ustawiam odpowiednią flagę. W kolejnym zgłoszonym przerwaniu z timera powtórnie sprawdzam klawiaturę i jeśli to ten sam klawisz i ustawiona jest flaga to...
Witam, mam "dziwny" problem z uC atmega328P. mam układ zbudowany z lcd na HD44780, czujnika temp lm35dz oraz diody led. Układ zachowuje się w dziwny sposób. Program wygląda tak : [syntax=c] //czytanie przetwrnika adc // zamiana na zmienna temp która ma postać bez przecnika, np. dla temp 23,5 jest 235 if(temp>250) LCD_WriteText("A"); mruganie_diody=0...