No, chyba żartujesz. ATMega32 ma 21 wektorów- str.44 ds. A ATmega8515- 17 wektorów. I niektóre nazwy są inne.
EA = 1; TMOD = 0x01; TR0=1; TH0 = 0x4C; TL0 = 0x00; Przed while(1) licznik TO inicjuj tylko raz Nie wiem jaka była intencja ale licznik raczej jako 8bit z autoprzeładowaniem TMOD=2, bo w pętli trudno określi co będzie pierwsze - przerwanie czy inicjacja i przerwania może nigdy nie doliczyć ; brakuje ET0=1; deklaracja unsigned int licznik; jako globalna...
Też mam drukarkę igłową, tyle że Star i spróbuję sobie przypomnieć jej kaprysy Sprecyzujmy sposób odłączenia drukarki - czy odłączasz kabel sygnałowy czy tylko wyłączasz zasilanie? To może mieć znaczenie jeżeli kabel równoległy jest uszkodzony lub zbyt długi Jeżeli drukarka jest dołączona do komputera i włączona najpierw, to po uruchomieniu komputera...
Jaki konkretnie procesor? ATMEL to dość ogólnie napisane :) Wysłanie sekwencji 0 na port B? Co to znaczy? Czy przy starcie wartość wysyłąna na port B to ff i co jakiś czas jest dekrementowana aż do wartości 0? Klawisze podłączone są do jakiego portu? D? Całego programu ci nie napiszę ale coś spróbuje pomóc. Dodano po 7 Treść zadania ;Silnik krokowy...
Witaj (at)pkaczmarek2 — dziękuję, że włożyłeś tyle wysiłku i czasu w ten projekt i pomogłeś tak wielu z nas tutaj! Chciałem zgłosić problem, którego nie udało mi się rozwiązać w przypadku (być może?) nieznanego wariantu kontrolera RGB działającego na modelu BL602. Przyniosłem kilka zdjęć dla innych do porównania, może uda ci się to rozwiązać. Kontroler...
U mnie w kodzie nie ma ...... /* * sterownik dla Margas * wersja dla NUCLEO STM32F446RE * działa dzieki życzliwości i zaangarzowaniu członków forum ELEKTRODA * wspomagających moją skromną wiedzą programistyczną * za co jestem im bardzo a to bardzo wdzęczny * data xx-xx-2024 */ #include "STM32TimerInterrupt.h" #include "STM32_ISR_Timer.h"...
Jacu$ a gdzie inicjacja stosu, inicjacja przerwania ? Pomijając, że nie zawsze taki sposób programowania jest do przyjęcia, np procesor obsługuje kilka elementów na raz i właśnie jest coś włączone, to jeżeli stos jest inicjowany po resecie, to można sobie te "pop smietnik" darować, jeśli i tak skaczemy do procedury resetu. W poście wyżej jest topic,...
Witam. Utkwiłem z programem przy próbie uruchomienia USART. Przejrzawszy wypowiedzi na forum nie znalazłem rozwiązania, choć temat USART przewijał się niejednokrotnie. W celu przetestowania wysyłania danych próbuję wysłać na port kody ASCII kolejnych cyfr i zbierać to poprzez Hyper Terminal pod Windowsem. Inicjacja UART wygląda tak: void USART_Init(...
Witam, Problem, z którym się do Was zwracam jest troszkę zagmatwany ale będę się starał opisać wszystko jasno i klarownie, bo sam nie mam już sił. Jest procesor, atmega88, na etapie budowania poszczególnych modułów docelowego programu. Uruchomiłem całkiem ładnie obsługę RC5 (może nie do końca super ale działa). Później uruchomiłem sprzętowe TWI (M88...
Witam! Spędziłem już dobre kilka dni na czytaniu specyfikacji, przykładów i różnych wypowiedzi innych ludzi, a problemu wciąż nie mogę rozwiązać. Pracuje na procesorze AT91SAM7S64 z programem CrossStudio i potrzebuje skonfigurować Timer0 tak by zliczał od 0 do rejestru RC w kółko i przy tym generował przerwanie. Z Timerem poradziłem sobie bez większych...
Dziękuje za linki...próbowałem coś wskórać tłumacząc manualna atmegi ale teraz mogę spróbować napisać potrzebny kod....co z tego wyjdzie zobaczymy OK mam ustawiony Timer i funkcję switch przełączającą cyfry wyświetlacza ale w jaki sposób jest zwiększana wartość zmiennej (wysw) z przykładu //********** define segmentów wyświetlacza volatile uint8_t led_display;...
Mam pewien problem z wsadem. Przerabiam kurs języka C z EdW ( AVT 3505) i korzystam z płytki ewaluacyjnej ZL11AVR http://obrazki.elektroda.pl/9360980100_1... Używam środowiska AVRStudia 5. Kłopot polega na tym,że gdy ładuję bezpośrednio wsad z listingu z kursu ( ładuje plik .hex który autor skompilował w WinAVR), na wyświetlaczach 7-mio segmentowych...
Timery ustawiam na szybkosc transmisji 32150 , taka jest uzywana dla midi, bo na AT89c2051 zrobilem sobie maly kontrolerek midi ktory wysyla komunikaty midi do sekwencera na PC , Bo procesorek dodalem do starych organkow Casio i przerobilem je na wersje z midi... Zrodlowki ci teraz nie podam bo nie jestem teraz w domu. Ale program dzial na zasadzie...
Witam. Mam bardzo podobny problem dlatego nie chce zaczynać nowego wątku. Podobnie jak kolega Mateusz140m łącze PWM z ADC, jednak do generowania PWM wykorzystuje timer2. Dokumentacje myślę zrozumiałem dosyć dobrze. ADC działa, bo był testowany. Sam PWM także, jednak nie mogę połączyć jednego i drugiego. Vref jest podłączony do AVCC, natomiast do wejscia...
W jaki sposób w trakcie działania programu na uC zmienić prędkość transmisji - Baud Rate? Napotkałem następujący problem, na który nie znalazłem niestety odpowiedzi. Transmisja ma przebiegać UARTem między PC a uC (ATmega32). Aplikacja uC ma mieć możliwość zmiany Baud Rate w czasie pracy. Załóżmy, że chcąc połączyć się z PC z BR 115200: 1. Łączę się...
Witam, zaczynam przygodę z assemblerem wcześniej pisałem programy w języku C i szło mi 100x sprawniej...Chciałem na początek napisać programik który migałby diodę LED. Jednak nie działa procedura opóźnienia. Zapętla się w nieskończoność w miejscu DELAY_LOOP3: NOP NOP NOP DEC R18 BRNE DELAY_LOOP3 cały program wygląda tak: .include "m32def.inc"...
Prosiłbym kogoś znającego temat o sprawdzenie moich wyliczeń. Do Attiny2313 podpinam kwarc 8Mhz dla timera daję preskaler 4, czyli ck/256, czyli timer jest naliczany co 32us 1s / 0.000032s = 31250 - czyli 31250 naliczeń timera to dokładnie sekunda timer1 jest 16 bitowy więc liczy od 0 do 65535, czyli 65536 cykli - więc aby przepełnił się po zliczeniu...
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...
ok powiedzmy że tu był błąd. Tylko że po w prowadzeniu poprawek procek nie taj jakby nie wchodził w ogóle w sleep... a sekwencja mrugania wykonuje się w nieskończoność :( a może to coś z programatorem jest(ten mój jest tak raczej na pająka zrobiony)? kod po poprawkach wygląda tak: .DEVICE ATtiny13 .ORG 0x0000 ;-------------------- wektor przerwań -------------------...
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>...
Witam, Programuję sobie procesorek AT89C2051 i magistralę 1-Wire. O ile z odczytem danych z magistrali nie było problemów, o tyle z wysłaniem tego przez RS-232 jest problem. Czy ktoś z użytkowników ma jakieś gotowe procedury zapisu i odczytu do porty RS232? W BASCOM wszystko działa, ale chcę to zrobić w C. Na razie doszedłem do: //funkcja obsługująca...
Zapewne coś namieszałem bo nadal mam błędny odczyt [syntax=cpp] #include <stdint.h> #include <avr/io.h> #include <stdlib.h> #include <avr/interrupt.h> #include "HD44780.h" #include "i2c_twi.h" //********** funkcje przetwornika ADC char buffer_n[8]; volatile uint16_t pomiar[6] __attribute__((section(".noinit"))); void inline SetAdcKanal(unsigned...
Nie wgrywałem, ale owszem, program taki jak Ty proponujesz będzie działał, ale jeśli pętla w funkcji main będzie miała więcej operacji do wykonania to takie miganie może wystąpić. Swoją drogą, piszę nieco przesadzoną opinię, bo przecież nie tak trudno zaimplementować mój algorytm, a wtedy wogóle zapominamy o miganiu i o tym że wogóle LED trzeba odświeżać...
Witam mam bardzo nietypowy jak dla mnie problem z układem który ostatnio wykonałem. Mianowicie jest to centralka alarmowa oparta o uC ATmega16. Działa na tej zasadzie że pod wejście PB2(INT2) podpięty jest kontrakton (zwiera do masy) do którego przykładam magnes i albo rozbrajam albo uzbrajam centralkę. Z grubsza to wygląda tak: PB2(INT2) skonfigurowane...
[syntax=c] #include <stdint.h> #include <avr/io.h> #include <stdlib.h> #include <util/delay.h> #include "include/lcd44780.h" #include "include/i2c_twi.h" //********** funkcje konwersji char dec_na_bcd(char num){return ((num/10 * 16) + (num % 10));}//set = dec_na_bcd(set); char bcd_na_dec(char num){return ((num/16 * 10) + (num...
Witam. Piszę sobie sterownik temperatury w Bascom '51 i mam problem z przerwaniem. Otóż serce układu to AT89C52 do niego jest podłączony RTC DS1678. Ustawiłem RTC, aby na wyjściu INT generował co sekundę impuls. Podaję ten impuls na wejście INT0 procesora. W obsłudze przerwań dałem ustawienie zmiennej Bit na 1, na podstawie jego inicjuję w pętli głównej...
Mam problem z wysyłaniem sms, wykorzystuję atmege128 i moduł sim900 na płytce Evb v1.01_pcb , proszę o rzucenie okiem na kod gsm.c [syntax=c]// PLIK: gsm.c // Dołączone biblioteki #include <avr/io.h> // Biblioteka obsługująca peryferia mikrokontrolera #include <avr/interrupt.h>// Biblioteka obsługująca przerwania mikrokontrolera #include...
Witam Piszę program, który ma mierzyć długość impulsu podawanego z zew. źródła jakim jest odbiornik RC, częstotliwość impulsów to 50Hz, a ich długość mieści sie w przedziale 1ms-2ms. To mój pierwszy program na AVR w którym obsługuje przerwania zew. i mam pewien problem, program już napisałem, sprawdziłem go na symulatorze i wydaje się działać poprawnie,...
Chyba cię nie do końca posłuchałem Marek_Skalski ale zaczęło działać w miarę moich oczekiwać. Wszystko co złe praktycznie było tak jak napisałeś czyli w konfiguracji DMA. W trybie ciągłym ( a taki był mi potrzebny ) nie trzeba resetować flag. Podwójne buforowanie będzie wręcz niezbędne bo teraz już będzie mi zależało na prędkości. CCM? nie wiem jak...
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...
Witam Enkoder obsługuję w procedurze obsługi przerwania zewnętrznego pochodzącego od opadającego zbocza na pinie PA30 mikrokontrolera, do którego dołączony jest jeden zestyk enkodera. Ilustruje to poniższy kod: encoder_rotation = true; . Oczywiście miałem również problemy z drganiem zestyków. Rozwiązałem ten problem dodając linię: for (dummy = 0;...
Za to, że zainicjowałeś stos - gotowiec :P Nie zainicjował stosu. Stos jest przed Main czyli aby go zainicjować trzeba wywołać jakieś przerwanie na liście za przerwaniem od komparatora analogowego :-) Kolega zumek dał gotowca również z błędem, a ja wypiszę błędy które znalazłem. 1. Wpisałeś .org 0 ale zgubiłeś za tym skok do procedury Main 2. Inicjalizacja...
(at)tadzik85 dobra uwaga z PWR->CSR, już poprawiłem, zmieniłem kasowanie przerwań na początek. (at)Piotrus_999 gdybym ja jeszcze tam miał diody... Środowisko ECLIPSE na Linaro GCC 5.4 2016q3, płytka własna. Co do inicjalizacji RTC, dlaczego? Wpierw odblokowujemy, potem wyłączamy alarmy i czekamy na pozwolenie modyfikacji rejestru alarmu. Ustawiamy...
Witam. Gdzieś w tym kodzie popełniłem błąd ale pomimo kilkukrotnego sprawdzenia nadal nie potrafię odkryć czy błędnie zapisuje dane czy błędnie je odczytuje...może ktoś mógłby wskazać "usterkę" w tym programie.? [syntax=c] //======================================... int main() { DDRB=0x01; //podświetlenie LCD (reszta...
Witam. Przerabiam kurs z Edw Pana Koppel-a i mam pytanie do osób lepiej znających ode mnie C. Nie wiem dlaczego wewnątrz pierwszego elementu tablicy w funkcji WyswietlHex: g_DaneWyswietlacza[0] = pgm_read_byte(&g_WzorCyfr[va... znajduje się w #define LED_A 0 #define LED_B 1 #define LED_C 2 #define LED_D...
Mam już dość!!! LCD zachowuje się dość przypadkowo. Czasami coś wyświetli, ale w innym miejscu niż chciałbym, po wyłączeniu zasilania pamięta co wyświetlał ostatnio ... jakaś dziwna sprawa. Chce na początek wyświetlić "0" na pierwszej pozycji wyświetlacza. Oto program: .nolist ; .include "2313def.inc" ; .list ; .listmac ; ;*********************** .equ...
A więc zaczynamy: Napisałem programy przykładowe i wszystko pięknie chodzi diodki się zapalają gasną - po prostu jest dobrze. Napisałem program w AVR Studio 4 i symulacja pokazuje że wszystko powinno działać no ale nie działa. Tu jest przycięty kod programu który też nie działa mi. .nolist .include "2313def.inc" .list .listmac .cseg .org 0...
Witam, Mam dziwny problem w mikrokontrolerem. Z nieznanych mi powodów restartuje mi się on gdy ustawiam źródło odniesienia dla przetwornika ADC. Co ciekawsze, dokona kilku restartów i za którymś razem uruchamia się poprawnie, a co lepsze przetwornik działa dobrze. Kod w tej chwili wygląda tak: http://obrazki.elektroda.pl/5684753500_1...
Musisz podać więcej szczegółów: - jaki procesor, - jaki wyświetlacz, - jak podłączony wyświetlacz, - jak podłączona klawiatura, - ... Najlepiej bedzie jak załączysz schemat Poniżej masz przykład obsługi klawiatury matrycowej 4x4 z książki "Mikrokontrolery AVR w praktyce" /***************************************... /* Ćwiczenie...
Witam dzisiaj chciałem przetestować odbieranie znaku wysyłanego przez komputer do USART mikrokontrolera. Sprawa okazała się bardzo prosta napisałem prosty programik który po wysłaniu znaku 'a' ma włączać diodę a na wysłanie znaku 'b' ma ją gasić. Ku mojemu zdziwieniu należy wysłać aa lub bb by uzyskać jakiś efekt. Nie wiem dlaczego się tak dzieje. Wysłanie...
Widzę, że nie bardzo są zainteresowani tematem. Może trochę kodu, da, do myślenia. Oto i on: przerw_KL " winna ==FALSE. A jest TRUE. Przerwanie wykonuje się po raz drugi, wtedy dopiero przerw_KL ==FALSE. Nie mam pomysłu jak to drugie przerwanie wyeliminować. Nie wiem Jak sprawdzić, co odkłada się na stosie. Może Ktoś, coś podpowie ?
Witam, Chciałbym narysować przebieg sygnału mierzonego przez przetwornik A/C mikrokontrolera. Niestety za nic w świecie nie potrafię tego zrobić. [syntax=c]#define F_CPU 16000000UL #include <avr/io.h> #include <avr/pgmspace.h> #include <util/delay.h> #include <stdlib.h> #include <avr/interrupt.h> #include "pcd8544.h" //...
Witam, Sprawa ma się następująco. Staram się podłączyć wyświetlacz od Nokii 5110 model PCD8544. Używam Atmega8A i zasilam ją 5V. Wyświetlacz zasilam 3V(z hakiem). Staram się wykorzystać sprzętowe SPI przy czym używam ISP do programowania mikrokontrolera dlatego skorzystałem z rady z tego linku: http://mikrokontrolery.blogspot.com/2011...
PCF8583 ma własne zasilanie [akumulatorek] do podtrzymania pamięci , błędny odczyt następuje po zmianie wartości dni np; 19-07-2011 na 20-27-2011 .. 20-47-2011 . Co jest powodem nie wiem choć przeczytałem polskiego datasheta PCF-a. Przepisałem program ale z porównywaniem czasu to jest masakra i do tego jak na złość nie działa , czy można to zrobić prościej...
Witam Mam problem nie do przejścia, znalazłem na internecie kod do obsługi właśnie tego modelu ekranu, standardowo pisany był pod ATmega32, lecz pod ATmega8 również ma działać. Rozpocząłem naukę poruszania się po Eclipse, wcześniej pracowałem na "Programmers Notepad http://obrazki.elektroda.pl/8462891800_1... Konfiguracja pinów w bibliotece...
BlueDraco, ponownie dziękuję tobie za odpowiedź i nakierowanie na programowanie przez rejestry, ale najpierw chcę zakończyć pisać program w HALu. Dlatego jeszcze raz zapytam: Dlaczego w powyższym kodzie HALa mam problem z ponowną inicjacją przerwania?
W przerwaniu deklarujesz zmienna liczba, ktora przy inicjacji jest rowna 0. Jest jako static więc jest wyzerowana tylko podczas pierwszego uruchomienia, potem już się "nie zeruje". dodaj na końcu while(1);...nie sprawdzałem częstotliwości przerwań więc zakładam że są w porządku. int main(void){ DDRA=0xFF; // PORT A JAKO WYJSCIE TCCR0 |=...
jeśli chce coś kolega robić dopóki coś (np warunek) to nawet prosta pętla while(warunek) lub Do while starczy. Jeśli określona liczba powtórzeń to zrobić for(inicjacja,warunek,wykonanie) Po co do takiej pętli angażować przerwania?Jeśli dobrze napiszesz kod to nie potrzebujesz przerwania i nic Ci sie nie opóźni.Jeśli zaś dużo przycisków to nie rób matrycy...
W inicjacji adc jest sporo byków.Niepotrzebne przerwania , licznik (z których nie korzystasz ), brak vref(chyba ze wiesz jaka wartość jest domyślna).Do tego programiku powinno wystarczyć. void adc_init(void) { ADCSRA = (1 << ADEN); ADCSRA |= (1 << ADPS0) | (1 << ADPS1) | (1 << ADPS2);...
Potrzebuje przerwań dla switcha na porcie PORTB. ;input: lditmp,0b0000000010; outPORTB,tmp; PORTB - wejscia PULL-UP (w stanie wysokim) ;inicjacja przerwań ldi r16, (1<<PCIE);wlaczymy przerwania PCIE out GIMSK, r16 ;enable/individual external interrupts. ldi r16, (1<<PCINT1);reakcja na zmiane na pinie PB1=PCINT1...
inicjacja modemu inicjacja toner inicjacja bęben
złącze diagnostyczne corsa curtis synchronizacji 300rms subwoofer
diagnoza płyty głównej laptopa diagnoza płyty głównej laptopa
Regulacja zaworów w Ford Transit 2.5 TD: krok po kroku Samsung BN59-01239A Remote & Wi-Fi Module Guide