co napisaliscie jako swoj pierwszy program na dany uC w danym jezyku (rozbudowy sie licza, byle by wciaz byla to ta sama baza) n. n. - literka, cyferke z przodu dodam sam. zachowujcie chronologie w swoich dokonaniach na roznych platformach jezykowych i sprzetowych, tak aby to mialo sens! ____________________ 0x1-a. Freddie Chopin - migacz diodkami o...
gdyby to było takie proste to nie pisałbym o tym na forum, ja potrzebuję czytać pozycje przy pełnej prędkości i to bezbłędnie bez żadnych przekłamań... Maksymalnie schrzaniłeś hardware, teraz to już Cię nic nie uratuje. Do zliczania trzeba było wykorzystać ten większy Timer, a do wykrywania zmiany kierunku przerwanie. Pięknie by to chodziło a procek...
Jakie komendy obsługują timer i counter w procku 90s2313 pod Asemblerem?? Proszę o pomoc!
Programowe generowanie sygnału video w jakimkolwiek standardzie jest zadaniem krytycznym czasowo, dlatego bez asemblera niewiele zwojujesz. Nawet w asemblerze trudno uzyskać więcej niż 100 punktów w linii. Zresztą zerknij na: Rejestrator przebiegów cyfrowych - przystawka do TV z EP Rejestrator przebiegów analogowych - przystawka do TV z EP Nie jest...
No tak, ale wtedy otrzymasz wygenerowany przez kompilator zupełnie inny kod assemblera, stąd program jak i symulacja nie będą odpowiadać wersji końcowej.
Działa ;-) Ustaw Breakpoint na linijce (prawy myszy Toggle Breakpoint) [syntax=avrasm]com LED[/syntax] naciśnij F5 (Run) jak zatrzyma się na Breakpoint wykonaj kod przerwania krokowo F11 naciśnij F5 (Run) jak zatrzyma się na Breakpoint wykonaj kod przerwania krokowo F11 itd. Zamiast 15625 ładuj do OCR1A 15624. Wieczorem wrzucę inny sposób migania tym...
Wielkie zmiany? Słówko "wielkie" już sobie sam dodałeś. Niemniej jednak przy zamawianiu nowego PCB zakres zmian ma dokładnie zerowy wpływ na koszt. No i jeszcze zobaczymy, czy z tym przerzutnikiem za 50 groszy będzie działać bez przetaktowania poprawnie, czy może trzeba będzie po raz enty coś tam dodać. napisanie/dostosowanie bibliotek LCD, IIC, SPI,...
Bo jak ma działać? Widać kolega nie do końca rozumie mechanizm przerwań, skoro czeka na przerwanie INT0, a włącza przerwanie przepełnienia Timera0. Adresem przerwania przepełnienia Timera0 jest OVF0addr, a nie INT0addr. Przerwanie od INT0 wyzwalane jest ZEWNĘTRZNIE zboczem lub stanem na fizycznym wejściu INT0 mikrokontrolera, a nie Timerem. Skąd ten...
$katalog_WinAVR$/doc/avr-libc/avr-libc-u... Tworzysz osobny plik w asemblerze (.S, nie .s) zawierający procedurę obsługi przerwania, kompilujesz do pliku .o i linkujesz z pozostałymi plikami. W dołączanym wo WinAVR szablonie Makefile jest przewidziane miejsce na wypisanie źródeł w asemblerze (ASRC = $tu wpisz nazwy plików$). Przykład,...
- czy praca równoległych timerów nie będzie jakoś na siebie wpływać (program przerywa pracę na skutek działania timera1 by precyzyjnie wyznaczyć czas, a tu w tym samym momencie dochodzi kolejne przerwanie od innego timera, i co wtedy) Timery działają niezależnie, ponieważ realizowane są sprzętowo. Nie będą na siebie wpływać. Program niestety (w tym...
plik wyglada tak: .INCLUDE "m32def.inc" .CSEG reti jmp Reset reti reti reti reti reti reti reti reti rjmp Timer reti reti reti reti reti reti reti reti reti reti Timer: cpi r17, 0x00 breq timer0 ldi r17, 0x00 cbi PORTD, PD5 reti timer0: ldi r17, 0x01 sbi PORTD, PD5 reti Reset: ldi r16, high(RAMEND) ; stos out SPH, r16 ldi r16, low(RAMEND) out SPL, r16...
Wystarczy zwykły attiny2313 (chyba że musi być to atmega), przecież ma wbudowany układ UART. Odczytujesz w pętli (albo w przerwaniu timera) stan PinB, dalej, wysyłasz to poprzez UART do komputera.. Do napisania w pół godziny w assemblerze dla kogoś kto dopiero się uczy :) (Mogę Ci pomóc z tym kodem, daj tylko znać na priv...)
Witam Otóż mam mały problem. Pisze sobie szybkie przerwanie dla timera na Atmega644, to co mi kompilator z C przetłumaczył na assembler wrzuciłem do wstawki assemblerowej a przerwanie zadeklarowałem z argumentem ISR_NAKED, rejestry używane w przerwaniu zarezerwowałem przez: register uint16_t licznik asm("r30"); register uint16_t temp...
Ja też dotarłem do tego helpa :D . Nie chodzi mi o konfigurację poszczególnych timerów, tylko o korzystanie z nich w programie. Tak się składa, że po skonfigurowaniu timera 1 jako generatora PWM, aby z niego korzystać wystarczy w programie wpisać na przykład pwm1a=10. Ta komenda daje (w przypadku na przykład działania 8 - bitowego) współczynnik wypełnienia...
(at)yanan Sposób na timeouty jaki masz jest ok, jakbym miał się czegoś przyczepić to tego, jak odróżnisz odebranie 0xff od timeouta w twojej funkcji? Oczywiście najogólniej robienie odbioru danych z wolnych interfejsów typu UART za pomocą poolingu to porażka na całej linii. Zdecydowanie należałoby użyć przerwań interfejsu UART, co w połączeniu z timerem...
Witam. Mam pytanie: Czy 1 ms może być różna przy różnym kwarcie? Czy jaki kolwiek kwarc da tą samą 1ms? To juz sa dwa pytania. Po pierwsze ... "przy różnym kwarcU", ok? Taka (umowna) "1ms" zalezec bedzie zawsze od czestotliwosci uzytego kwarcu. W mikrokontrolerach masz wszystko czego trzeba, by precyzyjnie odliczac czas: kwarcowy takt (XTal) z precyzja...
Ok, moje błędy, niemniej wcale mi to nie pomogło, mówię, widzę brak inkrementacji z IDE Simulator po prostu. A to dziwne, bo sobie wkleiłem twój kod, wywaliłem to cli/sei z przerwania i wszystko działa ok. Co znaczy, że nie widzisz brak inkrementacji? U mnie wchodząc w przerwanie TCNT0 jest równy 8, potem 12 i 15, bo tak jest kompilowana obsługa przerwania....
PORTB |= 0x0F; w assemblerze wygląda to mniej więcej tak: in r16, PORTB ori r16, 0x0F out PORTB, r16 podobnie PORTB &= ~_BV(i); przy czym to drugie polecenie zajmuje kilka instrukcji i trwa zdecydowanie dłużej. Przerwanie może wystąpić w dowolnym momencie, nawet pomiędzy instrukcjami in i out. Jeżeli to się stanie, stan portu ustawiony...
Zmieniłem - niestety, nie pomogło :( p.s. biblioteka nawet w oryginale przy kompilacji wywala błąd... Dodano po 3 Mam ochotę się poddać i kupić płytkę z ATmega... W sieci jest worek przykładów i wszystko działa - przy zmianie na Xmega zaczynają się problemy, spowodowane moją znikomą wiedzą. Trochę mi szkoda dwóch miesięcy owocnej nauki i potencjału...
Thunderacer opluł kolejna osobę. Proszę forumowiczów o nie podejmowanie z nim dalszej dyskusji do momentu w którym on opublikuje własny program w ASM do tego projektu który będzie lepszy (podejrzewam że z PWM) niż program Jaglarza. Jestem pewien że Thunderacer pokaże nam swój kunszt programistyczno-projektowy i zaprezentuje coś lepszego. Thunderacer...
Witam, pisze program w assemblerze który pozwarciu INT0, będzie wykonywać określoną czynność(łączyć się z innym urządzeniem), Ale narazie utknąłem w martwym punkcie, napisałem program który po zwarciu INT0 wywołuje przerwanie które zapala diodę podpiętą do lini PC0 5 razy i gasi(zapalenie uzyskuje poprzez ustawienie PC0 w stan wysoki). Całość funkcjonuje...
Nie wiem czy ktos w Polsce zadal SOBIE na tyle trudu aby dokonac tlumaczenia czegos co sluzyloby INNYM... (obie srony za darmo). ktoś przetłumaczył dokumentację do ATmegi16 (fakt, nie zdanie po zdaniu, ale gdzieś w 80-90% najważniejsze rzeczy). Pytanie do autora: czy to ma być czynność powtarzająca się na okrągło, czy może rzadko i dodatkowo w tym...
Chodzi mi o to drugie. napisałem taki program z dwoma nie zależnymi pwm ale nie wiem dlaczego przebieg OC1A da się tylko zmniejszyć wypełnienie a nie da się zwiększyć. oto program: .include "m8def.inc" .macro load16 ldi r16,high((at)1) out (at)0+1,r16 ldi r16,low((at)1) out (at)0,r16 .endm .equ res=30 ;rozdzielczość .cseg .org 0x0000 ldir20, 15 ldi...
Ale mi zadałeś pytanie. Nigdy tego nie robiłem-jestem poczatkujący w C. Ale znalazłem. make robi AVRStudio: ########################################... # Makefile for the project proba ########################################... ## General Flags PROJECT = proba MCU = atmega32 TARGET...
https://obrazki.elektroda.pl/4148743200_... Pierwszy mikrokontroler AVR ATmega zadebiutował w 1998 roku i zrewolucjonizował rynek. Stworzony został przez firmę Atmel, która została przejęta w 2016 przez Microchip. Mikrokontrolery ATmega od początku były dość ważne dla hobbystów. Ale w ostatnich latach ich pozycja na rynku została zakwestionowana...
Obsługa przerwania zajmuje z 70 cykli (odłożenie rejestrów na stos i zdjęcie ich ze stosu). Do tego z 10 cykli na wpisanie wartości do Timera i z 10 na ztogglowanie pinu. Razem 80 cykli. 8000000Hz / 80 = 100kHz. Jako że dajesz Toggle to będziesz miał dwukrotnie mniejszą częstotliwość. Czyli max uzyskasz 50kHz. Skoro masz 32kHz to pewnie przez to że...
juz się pogubiłem.. w Dodano po 1 może da się to ulepszyć poprzez wstawki assemblerowe??
Dzięki za podpowiedzi. Nigdy nie dołączałem modułów w assemblerze do moich projekcików i nie wiem czy dobrze zrobiłem. Nie mam w tej chwili platformy sprzętowej ale sprawdzałem zaproponowane rozwiązanie w symulatorze AVRStudio. Dodany plik przerwania.s: #include <avr/io.h> .section .text .global TIMER0_OVF_vect .global TIMER0_COMPA_vect ;kod TIMER0_OVF_vect:...
dlatego zamiast sie przemeczac nalezy uzyc timera, jesli nie jest czyms innym zajety. bo to co kolega powyzej napisal o PICach to oczywiscie prawda,,, dla assemblera. ale w C taka petla skompiluje sie na 100% inaczej niz w ASM - kiedys taka petla na MSP430 skompilowala sie chyba do 4 czy 5 instrukcji. 0x41 0x56 0x45!!
Tryb CTC jest w atmega8 na timer1 i timer2, Jeżeli chcesz mieć dokładnie to zastosuj któryś z powyższych timerów. przy odpowiednim skonfigurowaniu timera może on automatycznie zmieniać stan na odpowiednim wyjściu. (dla timer 1 jest to OC1A/PB1 OC1B/PB2, a dla timer2 OC2/PB3) W trybie CTC nie musisz ciągle wpisywać wartości do TCCRx.
Nie zgadzam się z Twoją opnią, która sprowadza się do tego, że skoro jest dostepny C, to zapomnijmy o asemblerze. Zacytuj ta opinię, bo chyba coś innego napisałem. Masz rację, jeśli dotyczy to projektów amatorskich (hobby) lub krótkoseryjnych, w których ważniejszy jest czas wykonania prototypów niż korzyści ekonomiczne. Nie wiedzieć czemu, wszystkim...
Po pierwsze jakie czasy chcesz obliczać i jakie przerwania po co ??? To jest bascom nie assembler, deklarujesz na wstępie programu prędkość kwarcu a kompilator troszczy się o resztę tj. dajesz deklarację $regfile = "m8def.dat" $crystal = 12000000 Po drugie, procedura obsługi wyświetlaczy LCD (mowa tu o alfanumerycznych HD44780) jest w BASCOM zaimplementowana...
Widzę, że coraz bardziej zbliżamy się do assemblera. W bascomie da się wyłączyć generowanie odkładania i pobierania ze stosu rejestrów w czasie ubsługi przerwania: On timer1 nazwa_suba NOSAVE Ale wtedy to asm w obsłudze przerwania obowiązkowy (bo kto odkryje, które rejestry zmienia Bascom). Ewentualnie można zdekompilować prog sprawdzić i potem dopisać.
Dzięki za podpowiedź. Będę mógł sprawdzić dopiero pod koniec tygodnia. Niestety dopiero teraz, jak "mam mokro w gaciach" wczytałem się w datasheet i wyględa na to, że zupełnie niepotrzebnie kombinowałem, bo miałem ustawione wszystko jak należy. Mam jeszcze jedno pytanie, ale dotyczy ono raczej assemblera i 1wire. Każdy, kto dłubie w asm, zostaje zmuszony...
Witam, pracuję obecnie nad pewnym projektem, w którym używam 32 kanałów PWM na procesorze Atmega162 generowanych programowo wg. dokumentu AVR136, program napisany w języku C. Mogę powiedzieć, że generalnie wszystko działa zgodnie z oczekiwaniami, modulacja działa prawidłowo, jednak chciałbym poznać, jaki procent czasowy zajmuje obsługa przerwania. Nie...
Gdyby założyć, że w momencie zmiany na jednym pinie, na drugim jest stan stabilny, to może udałoby się to zrobić tak jak próbowałeś. Myślę tylko, że i tak powinieneś nieco zmienić procedurę obsługi przerwania. Po pierwsze po delay należałoby najpierw sprawdzić stan pinu, który wywołał przerwanie, żeby stwierdzić, czy to nie był jakiś stan niestabilny....
http://obrazki.elektroda.pl/6006020500_1... Witam Jestem uczniem 2 klasy liceum, z elektroniką łączy mnie tylko hobby. Chciałbym przestawić mój projekt wykonany na konkurs Gra Retro. Jest to remake gry Tetris. Jako wyświetlacz użyłem monitora VGA (w tym wypadku LCD) oraz pada od Pegasusa jako kontroler. Całe oprogramowanie zostało napisane...
https://obrazki.elektroda.pl/4950580000_... 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...
8kanałowe a ile próbek? Najtańsze nowe ok. 500zł (atlantec) taki z akcesoriami 800zł, oczywiście, że wew. pamięć a potem "po fakcie", jak Sobie wyobrażasz oglądanie ONLINE przebkiegu 100MHz?xD Masz racje pytanie było debilne. O ile koledzy byliby na tyle uprzejmi prosiłbym także poddanie recenzji poniższego pomysłu. Z góry zaznaczam ze nie do końca...
Problem rozwiąże, odmierzanie czasu przez timer, a nie przez wait czy delay (nie znam BASCOMa). Jak już ktoś wspomniał odczyt i zapis bitu na 1-wire jest dość krytyczny czasowo. Miałem z tym problem w assemblerze i ADuC841. Przerwanie od multipleksowania wyświetlaczy skutecznie zakłócało transmisję. Polecam też sprawdzanie CRC, żeby ustrzec się przed...
Pętla ma tą drobną wadę, że jeśli w nią wrzucisz jakieś funkcje warunkowe to nigdy nie wiesz, co jaki czas się dokładnie obróci :) takie tam. Przy jednym warunku to jeszcze nic, ale już przy n rozgałęzieniach, policzenie najgorszego możliwego czasu obrócenia pętli staje się utrudnione. Bo jak warunek nie spełniony to sprawa krótka skok, a jak spełniony...
Te czasy to chyba chodzi o mikrosekundy a nie milisekundy? Przy odstępach rzędu ms nie byłoby najmniejszego problemu, jako że najdłuższe co może być, czyli reset pulse trwa zaledwie 480 us. Ale ok, napisz coś więcej o tym pomiarze obrotów. Dlaczego wykorzystałeś wejście INT, zamiast wejście taktujące timer? Jeśli zastosowałbyś timer to problem znika,...
Witam Jakie wartości przyjmuje zmienna X przy odczycie nie dotkniętego panelu ? jeśli są stałe to sprawdź czy odczytujesz inną wartość i dopiero wtedy obliczaj współrzędne dotknięcia.Wartości pól "góra" i "dół" masz takie same jak pól "prawo" i "3". Czy procesor poprawnie odtwarza do końca plik nr 1? Co się dzieje w momencie osiągnięcia końca pliku?...
A masz ustawione odpowiednio fuse ? Mój Make: # Name: Makefile # Project: hid-data example # Author: Christian Starkjohann # Creation Date: 2008-04-07 # Tabsize: 4 # Copyright: (c) 2008 by OBJECTIVE DEVELOPMENT Software GmbH # License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt)...
Przepisał bym Ci to do assemblera to by działało z 5 razy szybciej. Ale najpierw musisz uruchomić przerwanie (żeby program do niego skakał). Ja nie widzę błędu w kodzie i powiedział bym że powinno działać (przerwanie).
...czy na czas wytransmitowania, bądź odbioru znaku program wstrzyma swoje działanie na 10ms, czy po prostu odbędzie się to równolegle... Jeśli budujesz transmisję RS232 na przerwaniach, sprzętowy USART odbiera znak w czasie, gdy procesor wykonuje program główny. Po odebraniu całego znaku generowane jest przerwanie. W obsłudze przerwania musisz tylko...
Czy można w jakiś sposób zrobić coś takiego, żeby po przyłożeniu np.: 3,3V do nóżki Atmegi można było sprawdzić, czy jest tam to 3,3V czy np 1V ? Można to jakoś programowo rozwiązać ? Na razie zrobiłem przerwanie timer'a, w którym można by było sprawdzać stan nóżki, tylko jak to zrobić ? W przypadku zwierania tej nogi do masy jest prosto (tak jak z...
Zamieszczony wcześniej kod jest sprawdzony - działa na atmega8 Również po pomyfikacjach portów działa na attiny2313 i zajmuje 65% flash, wiec jest jeszcze miejsce na jakieś "wodotryski". Używam Bascom demo w wersji chyba najnowszej: 1.11.8.7 build 001 MS windows XP SP-2 Program pod attiny2313 na płytce uruchomieniowej ZL11AVR (Płytka ZL2AVR pod megę...
OCR0=0x20; /// podobno mozna zjechac do 0 i otrzymac fck/2 Zjechać może i można, ale chyba tylko do sprzętowego przełączania pinu. bo obsługa przerwania w 1 cyklu jest niemożliwa. void timer0_comp_isr(void) { PORTC ^= BIT(0); } Wrzuć co kompilator wyrzuca do assemblera do kompilacji. W sumie na obsługe jest 32 takty razem...
:arrow: dscreator Przede wszystkim koniecznie skomentuj każdą linię i wklejaj za pomocą znaczników Code , ponieważ (jak widzisz) Twój program jest zupełnie nieczytelny (forum usuwa spacje na początku linii). Program powinien zaczynać się zaraz za obszarem wektorów przerwań. Jeśli jakiegoś przerwania nie wykorzystujesz to zamiast mnemonika rjmp wstawiasz...
No cóż, jak dla mnie to 2 sprawy do przerobienia : 1. Pomiar czasu na Timer0 - jakaś parka bajtów w SRAM, służąca za licznik, który co przerwanie zmniejsza swoją wartość do zera, ale się nie przekręca. Jak chcemy zmierzyć czas, to cli, zapis licznika, sei i już tylko sprawdzamy czy licznik jest wyzerowany, a w międzyczasie program może wyskoczyc do...
timer assembler assembler atmega atmega assembler
volvo silnika profibus master bdp283 zamiennik
manetka hulajnoga engine fault peugeot
Klikanie przekaźnika w Fordzie Focus 2000 - przyczyny Niedziałające przyciski w radiu nawigacji Fiat Stilo 1.9