o pie*.* średnik!!!!! ile ja czasu straciłem.... No a druga wpadka: w avrstudio programowanie innym wsadem (poprzednim) niż projekt.... bo trzeba wskazać - samo się nie zmienia wraz z projektem! Marek
Oto moja propozycja projektu do analizy kodu migającego diodką, opartego na Timer/Counter0 - AVRStudio 4.12 Plik główny "TestLED.asm".
Same procesory ST7 są dobre, tylko to darmowe środowisko STVD7 jest bardzo prymitywne. Może jakieś komercyjne produkty robią to o wiele sprawniej. Mnie najbardziej brakowało w symulatorze funkcji animate jaka jest np. w AVRStudio oraz brak możliwości podglądu stanu timera LITE TIMER, który i tak jest niedostępny dla programu (generuje tylko przerwania)....
Hmm...ale robiąc symalacje w avrstudio jest on zachowywany ... mała ściema avrstudio?
W takim przypadku lepiej chyba uruchomić timer żeby liczył np sekundę i co sekundę odświeżać LCD, zrezygnować z przerwań ADC i robić to w biegu (lub też timerem jedynie ustawiać flagę co np pol sekundy czy ileś tam)
Problem pewnie leży w procedurze. therm_read_temperature(temp); Tam zapewne masz jakiegoś delay-a ustawionego (na czas potrzebny na konwersje temperatury przez DS-a). Musiał byś pokombinować, żeby przebudować tą funkcję a delay-a wbudować najlepiej w obsługę przerwań z timera z którego korzystasz. Np. Timer przerywa częściej, za każdym razem...
Mogę go sprawdzić, ale równie dobrze też możesz odpalić symulator. AVRStudio (symulator) róznie obsługuje timery, ale dla najbardziej popularnych procków (czyli Twego) nie powinno być bugów. Też mi się nie podoba wpisywanie dwa razy do tego samego rejestru danych, skoro można zrobić to w jednej linii... to świadczy o jakości programisty :) Pozdrawiam
Dziękuję za odpowiedzi. Wartości, które podałem były zgrubne i orientacyjne - nadal za duże wartości do moich zastosowań. Spróbuję z tymi timerami i przerwaniami.
Witam, W programie przedstawionym poniżej nie zostaje wywołana obsługa przerwania. Próbowałem na innych timerach tez bez skutku. AvrStudio 6, Atmega8a, optymalizacja O2. [syntax=c] #include <avr/io.h> #include <avr/interrupt.h> #include "utils.h" #include "display.h" int main(void) { LEDInit( ); Display(0); //Init Timer 0 TCNT0 = 6; TCCR0...
Radzę sprawdzić "na żywo", ponieważ AVRStudio ma niejakie problemy, z symulacją Timerów. Jest to zależne od rodzaju symulowanego uC, jak i od trybu pracy timera - nie ma reguły.
Witam. Mam zestaw opisany jak w temacie. Programator STK200. Pojawił mi się problem który nawet trudno wytłumaczyć. Próbowałem juz nawet z drugim ATmegą i tak samo się dzieje. Nadmienię że do układu dołączam oscyloskop Hamega - sprawny i dokładny. Napisałem program z wykorzystaniem Timera T0 - odmierza zadany czas i zapala diodę po czym przy następnym...
Bardzo dziękuję, ale jeszcze dopytam. Czy symulację należy wywołać poprzez Alt+F5 (Start Debugging and Break) bez zaznaczania punktu "break", a następnie wcisnąć pauzę w dowolnym momencie? Co znaczy kliknąć na flagę? W AVRStudio 4 jest to czerwona chorągiewka, podobnie jak w MS Outlook, ale w symulatorze AVRStudio 5 nic jej nie przypomina. Moim zamiarem...
Witam ponownie. Pomimo iż posiadam już lekturkę, siedzę nad Timer'em1 w trybie licznika już 2 dni nie bardzo nadal wiem co i jak... nie wspomnę, że z trybem CTC też próbowałem. Mianowicie; nie wiem dlaczego, nie mogę osiągnąć odmierzania równo 1 sekundy w zmianie stanu LED, gdzie robię błąd ? Oto kod; Dodano po 9 Jeszcze jedna drobna uwaga, #define...
Nie majstrujesz czasem przy Timerze 2? Jeżeli ustawi się odpowiedni bit( patrz datasheet) to te końcówki przestają być I/O.
http://mikrokontrolery.blogspot.com/2011... Sporo o delay. Osobiście uważam, że delay wszelakie jest złem, nie mówię o opóźnieniach typu 1-3 nopy :) Jeśli chcesz wygenerować jakiś przebieg, tym bardziej prosty to od tego są timery.
#include <avr/io.h> // dostęp do rejestrów #include <avr/interrupt.h> // funkcje sei(), cli() #include <avr/delay.h> ISR(TIMER1_OVF_vect) { TCNT1=50; } ISR(TIMER2_OVF_vect) { TCNT2=0x50; } int main() { // Ustawienie licznika 2 TCCR2=_BV(CS20); // Ustawienie licznika...
W C pisać. W asmie tylko dla tych co mają za dużo czasu.... Nie radze sie brać akurat za asma do AVR....jest on dosyc dziwny i nietypowy, duzo instrukcji a wiekszosc z nich nie sluzy do niczego konkretnego i trzeba sie nakombinować sporo.... Podpowiedź: BROŃ BOŻE NIE BASCOM!!!..... ...i nie zaden basic, to juz kompilatory pascala pod avry są lepsze......
(at)poorchava - a co polecasz 13latkowi, który zaczyna eksperymentować z uC? BASCOM w tym momencie daje najwięcej oczekując najmniej. Oczekując najmniej od programisty oczywiście. Od MCU wymaga całkiem sporo, jako (moim zdaniem) dość ciężki do zoptymalizowania przez kompilator język. Niemniej można zrobić łatwo i przyjemnie dużo rzeczy bez potrzeby...
są 2 błędy ... (89) error: Undefined symbol: TCCR0 -->out TCCR0,temp ; Timer counter 0 prescaler (91): error: Undefined symbol: TIMSK -->out TIMSK,temp ; set timer interrupt mask nie mam pojęcia o co chodzi ... :/ Dodano po 37 poprawiłem to na out TCCR0B,temp ; Timer counter 0 prescaler i out TIMSK0,temp ; set...
Problem wygląda następująco. Pisze program na atmega32, gdy zostaje wywołane przerwanie od porównania dla timera 0 to program się restartuje. Jednocześnie, gdy zdefiniuje funkcje ISR(BADISR_vect) to wlaśnie ona jest wykonywana zamiast funkcji od timera :/. Gdy próbuje wywoływać przerwanie od przepełnienia timer 0 to w ogóle się ono nie wywołuje, a przerwanie...
Za późno, już zrobiłem i działa:) Po 20 sek. wyłącza podświetlanie wyświetlacza, po 1 min. wyłącza urządzenie. Naciśnięcie dowolnego klawisza włącza podświetlanie ekranu i kasuje liczniki timera:) Ale zajrzę do ATOMIC_BLOCK, bo może rzeczywiście wyskoczą obelgi;)
Tutaj popełniasz dosyć poważny błąd. Po odebraniu pierwszego bajtu zatrzymujesz transmisję na SPI na stosunkowo długi czas potrzebny na przesłanie tego bajtu poprzez USART. Nie to jednak jest najgorsze. Po dokładniejszym przeanalizowaniu noty ADIS16100 zauważyłem dwa dosyć ważne problemy. Pierwszy to taki, że stosunek czasu trwania stanu wysokiego...
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:...
mam tak: .org 0 rjmp reset ;po resecie .org $002 rjmp detekcja0 ;przerwanie od detektora zera .org $012 rjmp timer0;przerwanie od timera .org 40 reset: program i ten kod nie działa a ten działa: .org 0 rjmp reset ;po resecie .org $002 rjmp detekcja0 ;przerwanie od detektora zera .org $030 rjmp timer0;przerwanie od timera .org 40 reset: program...
to stawiam flaszkę, że coś masz nie tak z timingami :) zrób, przynajmniej na razie, odmierzanie czasu w oparciu o timer. Nie jestem mistrzem assembera, twoja funkcja, mimo że wygląda dobrze, chyba nie działa dobrze. Ewentualnie fusy lub zła definicja w SYS_FREQ w porównaniu do rzeczywistości.
Wg mnie przerwanie od Timera0 ma wyższy priorytet i stąd tak się zachowuje, może się mylę. Spróbuj takiej opcji[syntax=c]ISR(XXX_vect, ISR_NOBLOCK) { ... } [/syntax]
Chyba wszystko się zgadza. Co 32us licznik się przepełnia i zwiększana jest zmienna licznik o 1. Po 256 takich zwiększeniach zmienna licznik sie przekręca. Teoretycznie powinno być 122Hz. Dokładnie, przecież częstotliwość takiego programowego PWM'a oblicza się w ten sposób: F_CPU / pojemność timera sprzętowego (tutaj 256) / rozdzielczość PWM'a (tutaj...
Witam Mam problem z timerem 1 trybem CTC w ATmega128. Kod wyglada tak #define _20_MS_ 5000 void servo_init(void) { SERVO_DDR|=(1<<SERVO_PODSTAWA_... SERVO_DDR|=(1<<SERVO_RAMIE_PIN... SERVO_DDR|=(1<<SERVO_LOKIEC_PI... SERVO_DDR|=(1<<SERVO_NADGARSTE... SERVO_DDR|=(1<<SERVO_CHWYTAK_P...
W przypadku ATmega16, niestety, jest pewna niespójność pomiędzy dokumentacją oraz np. symulacja w AVRstudio. Dotyczy ona np. zarządzania Timer'ami.
jak mam pisać w tym całym avrside i symulowac w avrstudio to juz wole od razu pisać w asm bo przynajmniej kod bedzie czytelniejszy i bede wiedział gdzie w procedurce mam błąd. Szanowny kolega próbował dłuzej niz minut kilka w najnowszym AVRStudio symulacji z plików .elf, że tak narzeka ? A jak nie pasuje analiza kodu C to można odpalić okno disasemblacji......
plik makefile tworzony jest automatycznie z avrstudio. Da się z poziomu avrstudio to ustawić w konfiguracji projektu? Ważne dla mnie jest, aby stos był w wewnętrznej pamięci, ponieważ cały program będzie się głównie opierał na przerwaniach i to kilku (bo Int0, dwa timery, ADC, ew USART). Chciałbym się właśnie nauczyć obsługiwać xram a nie znalazłem...
Dziękuję za odpowiedź Wpisałem do programu _delay_ms(x) i wielkość kodu po tym wpisie podskoczyła prawie pięć razy, pierwsze wywołanie tej funkcji daje +~3k do wagi kodu, co dla mnie jest zastraszające, gdyż pojemność mojego procesora to 1k. Niestety mam tam tylko jeden timer i jest on już zajęty. Zastanawiam się, z czego to wynika (ten ogrom zajmowanego...
Zrobiłem sobie programik pod Atmege8 wychylajacy serwo w jedna strone. Wiem, ze PWM można zrobić w pełni sprzętowo, ale jeszcze do tego nie doszedłem. #include <avr/io.h> #include <avr/interrupt.h> int b=0; int main (void) { DDRB |= (1 << 0); // Set LED as output TCCR1B |= (1 << WGM12); // Configure...
Prosty program na AVRStudio : #include <m16def.inc> ; Prohibits use of non-implemented instructions (ATmega16) .dseg .org SRAM_START .cseg ;—————R...
Poleca Code Vision jest kompletnym kopilatorem (chociaz nie posiada debugera co jest jego chyba jedynym minusem).Posiada funkcje I2c,Lcd ,1Wire,Rs232,obsługe paru standardowych kostek i jescze kilka innych bajerów .Ma tez Code Generator który bardzo pomaga w skonfigurowaniu procka (timery Adc przerwania itp.) A i generuje równiez pliki cof które mozna...
Nie bylo sensu wiecej pisac. Zrszta i tak daleko nie zaszedlem, byla obsluga timera, ktora probowalem przerzucic z main'a do funkcji (mrugala sobie diodka) i po kawalku eliminowalem fragmenty kodu, a do funkcji i tak nic nie wchodzilo. Jezel to nie procek to ustawienia. ;(
gdybyś korzystał np z ECLIPSE to zobacz sobie sam na obrazku Też tak myślałem, ale popatrz na mój screen: http://obrazki.elektroda.pl/7629008900_1... CPU ustawione na Attiny13... I co z tym fantem... eclipse? Po czym monit: http://obrazki.elektroda.pl/2251961300_1... Dla mnie dziwne.. najpier źle podpowiada, po czym...
...Ciekawi mnie ten fakt i nie umie sobie poradzic z tym problemem a w mym programie wskazany jest wlasnie podzial przez 256. Prosze o pomoc Nie ma w tym żadnej tajemnicy ;) Poprostu , symulator Bascoma nie jest ideałem i ... to wszystko. Do symulacji wykorzystuj symulator z AVRStudio.Mimo iż ów nie jest pozbawiony błędów , to wydaje się , że ma ich...
Witam Wszystkich, To mój pierwszy post na forum, jakoś jak do tej pory wszystkie odpowiedzi udawało się znaleźć. Ale pojawił się następujący problem: Wykorzystuje ATmega8 do sterowania trzema serwami (jeden timer-jedno serwo). Z samym sterowaniem na przyciskach wszystko jest ok i nie to jest problemem. Nie wiem jak sobie poradzić z transmisją danych...
A mi wydaje się, że kolega nelik1987 powinien w końcu dostać OPR za to, że nie przetestuje nic nawet w symulatorze tylko siedzi i pyta po raz setny na forum. nelik1987 bez urazy, ale AVRstudio ma bardzo prosty symualtor. Napisz byle co i zasymuluj, zobacz jak działa timer, to jak odlicza, sprawdź jak z poziomu symulatora zmieniać wartości portów itd...
Mam taka uwage...Zrobilem sobie timer (T1) ktory mierzy do wartosci OCR1A...(atmega16, kwart 7372800 Hz, preskaler N= 8 ) Wszytko dziala tyle ze jak np chce odmierzyc jakas wartosc np 4.752ms to obliczajac ze wzoru na tryb CTC: OCR1A = Fkwarcu/ Dodano po 39 Zrobilem inny pomiar dla tych samych warunkow tyle ze symulowalem ekspymentalnie czas 1,28ms...
Witam serdecznie. Z racji chwili wolnego czasu piszę sobie kod do odbiornika IR na ATmega16. Korzystam ze scalonego odbiornika TSOP1736. O tym jak wygląda kodowanie sygnału w przypadku pilota do telewizora firmy Philips dowiedziałem się ze strony #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #include <stdint.h>...
http://obrazki.elektroda.pl/8259551800_1... Z uwagi na fakt, że pilot do posiadanego tunera DVBT firmy LTC jest niewygodny i złej jakości, postanowiłem przystosować odbiornik do sterowania posiadanym pilotem WIWA memo control, który jest dużo wygodniejszy i pewniejszy w działaniu. W tym celu w tunerze zainstalowałem translator kodów,...
To musi być że nie kasujesz poprzedniego programu. Powtórzyłem Twój zabieg w AVRstudio. Ustawiłem LED_TOGGLE; w przerwaniu. Oczywiście nie działało- bo niby jak- jak nie wiem jak zrobić z #define volatile- to chyba jest niemożliwe z zasady. Potem wróciłem do poprzedniej wersji- i wszystko działa. To jest jakaś upierdliwa głupota-tzn. chciałem napisać...
Nieścisle się wyraziłem, wspólczynnik wypełnienia zostawiamy w spokoju, tylko korzystamy z rejestrów od PWM ustawionych na Toggle & Reset Counter on compare match - im mniejsza wartość w TCNTC, tym wieksza częstotliwość na wyjściu . Ma to ta zaletę, że sobie działa w tle, a my zajmujemy się czym innym.... ;) No chyba, że coś pomieszałem z nowszymi...
Będą przekłamania gdy rzeczywista częstotliwość będzie inna od tej skompilowanej. Najlepiej jakbyś poszukał jakiegoś kursu na AVRStudio, skoro z niego korzystasz, bo ja akurat na jego temat nic nie wiem. Może tam być gdzieś opcja ustawiania częstotliwości , np w Eclipse ustawia się ją w pluginie, a tam nie wiem. Zdeklarowana częstotliwość musi być taka...
Nie rozumiem. Dlaczego bez optymalizacji nie ma błędów i w AVR_Studio 4 też nie ma błędów? [url=http://mikrokontrolery.blogspot.com... Użyj timera, większy zysk.
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...
Hmm... Spróbuj regularnie migać LED, jednocześnie komunikując się z PC, obsługując pomiar temperatury za pomocą 1wire (DS18B20) i wyświetlać ją na LCD, używając waitXX... ;) Timer0 jak nic do zastosowania... Tymczasem małe co nieco w załączniku (miganie LED z użyciem timera), zarówno dla ATmega8, jak i na ATmega8515. Ponieważ ATmega8 nie posiada przerwania...
Witam Napisałem program który ma sterować 7 segmentowym wyświetlaczem LED. Co sekundę ma następować zmiana cyfry. [syntax=cpp] #define F_CPU 1000000L #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> int liczba[10]={0x82, 0xEE, 0XC1, 0XC8, 0XAC, 0X98, 0X90, 0XCE, 0X80, 0X88}; //konfiguracja led int licznik=0; //licznik...
Witam! Z tego wszystkiego wgrałem program spod Bascoma, gdzie próbowanie wynosi 8kHz, ADC ustawiony na preskaler 8, Single Conv, rez. 16MHz. Dla potomnych, tak powinien wyglądać sygnał (i tak wygląda spróbkowany dzięki programowi z Bascoma). Sygnał 1kHz. http://obrazki.elektroda.pl/8315338600_1... Prawda, ze ładnie :)? Probkowany sygnał programem...
Trochę mnie nie było, ale nie rozwiązałem mojego problemu. Idąc tropem, że coś jeszcze jest nie tak z programem, poprawiłem go, aby reagował na przepełnienie licznika (według wskazówki I-light), ale to jeszcze nie to. Zacząłem bardziej analizować program no i zamiast znaleźć odpowiedzi więcej pytań się pojawiło. Pierwszy pomysł przyszedł mi z przetwornikiem...
Nie avrstudio5! To jest beta- w dodatku schrzaniona. Ściągnij normalne 4.18.
One właśnie mają wartość początkową. Gdy zmienne są deklarowane jako globalne na początku programu, to z automatu mają wartość równą 0. Sprawdzałem to w AVRstudio. Nawet jeśli coś by było z nimi nie tak, to do Timer3 ładuję wartość 125, więc ma program z czego odliczać. Także to nie to, bo zliczanie działa. Coś jest na 100% z rejestrem OCR, bo gdy ładuję...
:arrow: wojrol To napewno działa w AVRStudio 3.56 i w pracującym układzie: ldir16,1<<TOV0 outTIFR,r16 :arrow: Jacu$ Możesz ten bit zmieniać programowo ale pamiętaj, że jego skasowanie to wpisanie wartości 0 a nie 1. strona 17 dokumentacji AT90S1200: • Bit 1 - TOV0: Timer/Counter0 Overflow Flag The bit TOV0 is set (one) when an overflow occurs...
Jkaby nie patrzeć AVR Studio jest doskonałym narzędziem, na poziomie i takich właśnie narzędzi oczekuję od producenta. Symulacja działa doskonale i niezawodnie, do tego Jtag. Niedawno uruchamiałem projekt który mocno wykorzystywał wyświetlacz LCD, miał kilkupoziomowe menu, więc zrobiłem to w bascomie. Jakież było moje zdziwienie że na Medze16 Bascom...
SIGNAL (SIG_OVERFLOW2) { TCNT2=T2_INIT; ///funkcja } void main(void) { char buf[8]; flaga=1; TIMSK=(1<<TOIE0)|(1<... TCNT0=T0_INIT; TCNT2=T2_INIT; TCCR0=5; TCCR2=4; sei(); LCD_Init();// w tym miejscu się zatrzymuje avrstudio //funkcje }
Witam. Co wy na to ? Bardzo fajne, raz wklepać a potem używać, ale mam pytanko, co robi kompilator kiedy z tego dzielenia wychodzą części ułamkowe? Część ułamkowa jest obcinana, bo i tak nie da się jej wpisać w 8-bitowy rejestr licznika. Chcąc osiągnąć jeszcze większą dokładność, można próbować na mniejszej skali preskalera (np. 256) i/lub większej...
Witam, Mam też problem z PWM tylko trochę innego rodzaju. Też pracuję na Atmega16. Oprócz tego używam AVRStudio w wersji 4.13 oraz WinAvr 20070525. Mój kod wygląda następująco: #include <avr/io.h> void main(void) { DDRB=0xFF; DDRD=0xFF; TCCR1A=0x83; // wy. jest ustawianie po osiągnięciu warunku // równości podczas zlicznia w dół // zerowane po...
Witam Mam kilka pytań. 1. Czy w WinAVR jest możliwe wyłączenie dodawania przez kompilator prologu i epilogu do każdej wstawki asemblerowej. A jeśli tak to jak ? 2. Jak połączyć plik napisany w C z plikiem napisanym w asemblerze. avr-gcc -Wa,-adhlns=przerwania.lst,-gstabs -Wl,-Map=pierwszy.map,--cref -lm przerwania.S -o przerwania C:/WINAVR/BIN/../lib/gcc/avr/3.4.6/../.....
Witam, Napisałem całkiem złożony programik w C, ale wykrzacza mi się w prostym fragmencie main'a, tzn. obsługa przerwań z timera działa, ale uC nie chce wejść do nieskończonej petli while(1). Nie działa ani w debugerze ani w rzeczywistym układzie. Pomóżcie co tu jest źle... Oto fragment Kodu w AVRStudio #include <avr/io.h> #include <avr/interrupt.h>...
1. Jak mówił tmf, poczytaj o tym czym są przerwania i timery, za ich pomocą odmierzaj czas, a programy pisz tak, aby nie zatrzymywały się w pętli głównej ani na moment, jeśli nie jest to rzeczywiście konieczne - taki dobry nawyk (oczywiście czasem można dla prostoty użyć jakichś funkcji _delay_xx();, ale zwykle ich unikamy) 2. Czytelność Twojego kodu...
DZIAŁA!!! ALE MOC :) !!!!! Dwa dni męczyłem się, aby móc zmienić te bity konfiguracyjne, przez mój programator USBasp, avrstudio, atmel6studio, nakładki avrdude i wszędzie jakieś błędy w komunikacji, (dodatkowo też chciałem zobaczyć podesłany link odnośnie fusebitów http://code.google.com/p/avrmate/ , ale też errory), aż w końcu dzisiaj zainstalowałem...
Witam, Przesiadłem się właśnie z procka ATmega 16 na Atmegę 162 z powodu nie wystarczającej liczby portów. Napisałem program który ma za zadanie włączyć TIMER1 w tryb licznika z sygnałem taktującym na porcie PB1(T1). [syntax=asm].include "m162def.inc" .cseg .org 0 rjmp reset reset: cli ldi R16, low(ramend) out SPL, R16 ldi R16, high(ramend) out SPH,...
Jako literaturę polecam : Mikrokontrolery AVR w praktyce Jarosława Dolińskiego, książka ta kosztuje około 50zł (ja kupiłem za 53zł na wolumienie) Jako język programowania polecam asembler, proponuję używać "markowego" freewarowego softu Atmela AVRstudio http://www.atmel.com/dyn/resources/prod_... 20 pinowy AT90S2313 kosztuje około...
Przepraszam, niefortunnie zasugerowałem się AVRStudio w wersji 5 oraz jego dokumentacji w PDF-ie. Uruchomiłem już licznik cykli w AVR Studio 4 i rzeczywiście można wyciągnąć następujące wnioski: dla kodu ze zmiennymi statycznymi są 443 cykle dla kodu ze zmienną typu "register" jest 198 cykli Dziękuję tmf za podpowiedź, rzeczywiście przyspieszyłem przerwanie...
Rozpisałeś i zmieniłeś obsługę wspólnych elektrod, a co z segmentami, które tworzą obrazy cyfr? Też trzeba wszystko zanegować. Gołym okiem widać, że obsługa wyświetlacza jest napisana fatalnie i z błędami - bardzo długi i nieczytelny kod, odświeżanie na opóźnieniach, zamiast w przerwaniu timera. Jak masz podłączony ten wyświetlacz? Które linie portów...
heh w moim pliku nagłówkowym io dla tego uC (iotn2313.h) nie ma deklaracji rejestru TCCR0, jest deklaracja rejestrów TCCR0A oraz TCCR0B. Zapewne to ich należy użyć, ustawiając odpowiednie bity w A i B. W twoim wypadku, spróbuj TCCR0 zastąpić przez TCCR0B EDIT, i wywal linijke: int TCCR0 Sprawdziłem w jednym z moich projektów, wprowadzając timer1 w tryb...
... proste projekty często da się oczywiście wykonać bez używania przerwań, ale uwagi kolegów wyżej są właściwą drogą - timery i przerwania to podstawa wykorzystania mikrokontrolerów. Jeżeli masz problem z tym tematem, to zaglądnij do spisu treści na stronie, której link załączyłem i kliknij "Kurs AVR". ... będę musiał "dogadać się" z AVRStudio, które...
Witam Mam problem z przerwaniami w Xmedze. Zarówno przy Timerze jak i UART. Najprościej mówiąc uK nie generuje mi przerwań (podprogramy obsługi przerwań nie są wykonywane). Inicjowałem przerwania w danym "urządzeniu", ustawiałem poziom przerwania, aktywowałem poziomy przerwań i aktywowałem globalnie przerwania. Co trzeba jeszcze zrobić?
Zrób Sobie prosty filtr RC, gdzie będziesz podawał sygnał PWM o znanym wypełnieniu (widzę tam timer z funkcją PWM w ATtiny2313). Z kondensatora filtru RC podaj na jedną nóżkę komparatora, a na drugą napięcie które ma być mierzone. Następnie zmieniaj tak wypełnienie PWM, aż napotkasz zmianę 0 -> 1 lub 1 -> 0 (wykorzystaj przerwanie). Wypełnienie razy...
Witam! Zlecę napisanie prostego programu w assemblerze na mikrokontroler ATMEGA128. Docelowe projekt ma być symulowany w AVRStudio. Zalecenia do projektu:Opracowanie systemu sterowania sygnalizacją świetlną dla prostego skrzyżowania (dwie ulice równorzędne) z wykorzystaniem: włączania przycisku, zapalania diód i obsługą timera. Zainteresowanych proszę...
A poczytłeś może info w symulatorze ? Chyba nie bo tam jest napisane że w symulacji pewne operacje nie dzialaja prawdłowo m.in. wyzwalanie przerwania zboczem . To masz chyba jakiś popsuty symulator ;) W opisie mojego(AVRStudio4.13) symulatora stoi: All external and pin change interrupts are supported by the simulator. Piotrek
Ja właśnie wyczaiłem fajną róznicę na korzyść ATtiny2313A. Mianowicie do USI dodano dodatkowy bufor odbiorczy, czyli np. przy realizacji SPI nadaje się "po staremu" wpisując do USIDR, natomiast odbierać mozna "po staremu" czytając z USIDR bezpośrenio po odebraniu danych, bądź wygodniej - czytając z bufora USIBR - nawet w trakcie transmisji. Co ciekawe...
Jeśli piszesz w AVRStudio albo w Eclipse to częstotliwość zegara deklarujesz w opcjach projektu. Bo ta deklaracja obowiązuje tylko w main. Używam WinAVR, częstotliwość mam jeszcze w Makefile. Czy funkcje przerwań np. ISR(TIMER0_OVF_vect) również mogę "wyrzucić" z pliku main.c ?
Zamiast "cyklinować" w tym przypadku wystarczą przerwania od timera i maszyna stanów.
#include <inttypes.h> #include <avr/io.h> #include <stdio.h> #include <stdlib.h> #include <avr/iom32.h> #include <avr/interrupt.h> #include <string.h> #include <avr/pgmspace.h> #include <util/delay.h> #include "HD44780.h" //definicje zmiennych volatile int ms, s, m, h, znacznik; char buf[256];...
Wszelkiej maści kursy języka C na necie - uczą co najwyżej jak się poruszać w środowisku AVR za pomocą języka C a nie programowania tak ogólnie. Rzeczywiście akurat ten kurs z EdW jest chyba najlepszy. Ale żaden kurs z tych, które widziałem niestety nie nauczy tak całościowo technik dobrego programowania oraz wszystkich aspektów związanych z możliwościami...
Przecież liczby hex są bardzo łatwe do odczytu bo to są cztery wartości binarne, razem 16. Nie wiem do czego wam ten kalkulator? A niektórzy nawet zegarki binarne robią. Do ich odczytu potrzeba 60 liczb binarnych czyli w okolicach 4 razy więcej, i jakoś sobie z tym radzą. Kwestia przyzwyczajenia, tak samo jak do zapisu dziesiętnego też trzeba się przyzwyczaić....
Wit mam. Piszę pewien program. Przed wejściem do pętli głównej programu napisałem funkcję w której użytkownik wstępnie nastawia parametry programu głównego. Problem polega na tym, że przy naciskaniu klawiszy program wychodzi mi z pętli głównej programu do funkcji w której nastawiane są parametry. Funkcja w której mają być nastawiane parametry okrojona...
A oto prosta funkcja (kompiluje się w najnowszym AVRStudio) :D : #include <ATmega8535.h> .include "m8535def.inc" ; Prohibits use of non-implemented instructions (ATmega8535) #define XTAL 11059200 #define USART_BAUD 19200 #define _UBBR(_X,_X_BAUD) ((_X/(16*_X_BAUD))-1... #message "_UBBR =="...
ok . zamieszczam fragment kodu ,to jest cały program który nie działa -uaktywnia timer 1 -tryb przechwytywania -po przechwyceniu powinien generować przerwanie które ustawi porta w stan wysoki(zapali diody -up atmega32 -programator isp,program pony- translaror avrstudio4 pomocy .include "m32def.inc" .dseg lala: .byte 1 .cseg .org 0 jmp start .org 0x00c...
Witam wszystkich, to moje pierwsze pytanie na Elektrodzie, mam nadzieję, że nie zostanę na wstępie wyśmiany za niewiedzę ;) Mam następujący problem: Potrzebuję napisać pewien program w asemblerze dla µC ATmega128 (oczywiscie pod symulator avrstudio4), w którym, korzystając z przerwań wewnętrznego timera powinienem otrzymać opóźnienie 1Hz. Całą...
Po kolei: - w reset_pulse wysyłasz coś przez USART, wysłanie tego trochę trwa, w zależności od bitrate może trwać całkiem długo, co rujnuje timingi... - w write - początkiem nowej ramki jest krótki impuls ujemny. Może on trwać 1-2 us, to wystarczy. Więc jeśli nadajesz 0 to zrób 0 przez cały czas trwania ramki (prawie 60 us), a jeśli jeden, to po 1-2...
Po pierwsze to najspokojniej w świecie możesz używać dowolnej nośnej z zakresu 24-38kHz na nawet 22-40kHz i to nie wpłynie znacząco. Najlepiej zawsze 36kHz i będzie OK. oki, ja mam 36 wiec jest dobrze:) ptrail - no toć przecież widzisz pan, że ma to być impuls o określonej długości, tyle że to ma być impuls z nośną (pamiętaj o inwersji sygnału) pomiędzy...
Witam. mam mały kłopot z przerwaniami w bootloaderze na wymienionym procesorze (dataszit o ile mnie oczy nie mylą, mowi ze adresacja sekcji pamieci flash jest taka sama jak w zwyklej atmedze8) proc ustawiony na wielkosc sekcji boot na 1024 słowa, po resecie wskakuje do bootloadera. program skompilowany pod 0xC00 czyli w makefile de facto adres .text...
Przykładowy projekt migający diodą z ustawianą w #define wartością czasu cyklu (AVRasm2 - AVRStudio 4.12SP1) i to nawet na zegarze 16MHz : http://www.elektroda.pl/rtvforum/viewtop... P.S. powolne mruganie - wcale to nie denerwuje, tylko uspokaja - wręcz najważniejsze są powolne ruchy i głębokie oddychanie, jak mawia kol. wzagra......
Mam ATTiny26. Do portu A przypięta jest linijka diodowa, a do portu B przycisk. Naciśnięcie przycisku ma powodować zwqiększenie o 1 wartości rejestru (r17) i wyrzuceniu tego na port A. W AVRStudio wszystko działa tak jak powinno, ale w praktyce przy zbliżeniu palca do procka diody szaleją. Jak przycisk jest wciśnięty to jest ok, przy zbliżeniu palca...
Witam was wszystkich. W sumie chciałbym żebyście sprawdzili kod, który napisałem bo juz nie mogę znaleźć wyjścia. Kod to przepisywanie z 4 kanałów 8 bitowego ADC na kanały PWM. Problem w tym że nic na wyjściu PWM sie nie pojawia (nic tzn. stan wysoki). Żeby było prościej to powiem, że oddzielnie (program, który przepisuje tylko z jednego wyjścia ADC...
Hmm... A co ma cena procesora do ceny In-circut debuger-a ? Procesory kupuje się wielokrotnie, a debuger raz, po za tym dla AVR istnieją tańsze, nieoryginalne wersje - sam JTAG, bez obsługi DebugWire, już za trochę więcej niż 100PLN (np. na www.propox.com ) - również na USB. ATmega8 - 7-9PLN, możliwości : • Advanced RISC Architecture – 130...
jak kompiluje w avrstudio, to działa dobrze :) Ale już kompilacja przez to samo avr-g++ z którego korzysta avrstudio nie działa, więc problem jest chyba tak jak pisaliście w optymalizacji (Makefile). Zamieniłem z -Os na -O2 ale bez zmian. Później będe jeszcze to męczyć i pewnie napisze jeśli to nie to co myśle. W każdym razie dzięki za pomoc!
Dzieki za pomoc. Sprobuje przetestowac to, co napisaliscie. Powiedzcie mi tylko jeszcze, jesli wiecie, w jaki sposob przetestowac na AVRstudio wartosc opoznienia? A której wersji AvrStudio , Waści używasz :?: Piotrek
Nie doczytalem;) A testowales na zywo czy dziala? Bo w AVRstudio PWM nie jest do konca dopracowany, wiekszosc trybow nie jest symulowana poprawnie:(
Jako symulator polecam AVRStudio 4. Sam go uzywam z CodeVision.
no tak, spodziewam się tylko że już mam dość bo nie wiem jak zbudować nową formułkę tak żeby właśnie wysterować częstotliwość liniowo... I mam jeszcze problem jeden - jak można zaokrąglić liczbę do całkowitej ? I ostatnie już - czy floatów używa się z przecinkiem czy z kropką w avrstudio bo kompilator wywala mi przy obu blędy jakieś...
Witam, Mam Atmege88 i chciałem spróbować napisać obsługę przerwania wew. zegara 16bitowego. Korzystając z książki, która traktuje o atmedze8 i dokumentacji do atmegi88 udało mi się napisać taki oto mnw. kod: #include<avr/io.h> #include<avr/interrupt.h> //(...) ISR(TIMER1_OVF_vect) { // moj kod przerwania } ISR(BADISR_vect)...
Witam! Pisze sobie spokojnie program pod Attina2313 do obsługi 8-bitowego dwukanałowego PWM'a (na timerze1). ...no i mam pewien problem, otóż gdy chcę przypisać wartość wypełnienia do rejestru OCR1AL lub OCR1BL w sposób: unsigned char pwma, pwmb; //... //program //... OCR1AL = pwma; OCR1BL = pwmb; to kod wynikowy rozrasta sie do niewyobrazlanych rozmiarów...
Dokładnie na symulacji AVRStudio. Układ jeszcze jest nie polutowany więc nie mogę go na żywo przetestować. O czymś nie wiem?
No to coś napisałem na AVRStudio 4.05.0.181 (na kolanie) :) . Co prawda na ATmega8 , ale przeportowanie to pestka(niektóre wektory przerwań do skasowania/zmiany nazwy i "2313def.inc" zamiast "m8def.inc" , prędkość kwarcu Xtal też do poprawki...), raczej tu chyba nie ma rozkazów niezaimplementowanych w AT90S2313 . ;included in next file - line ".device...
Witam najpierw kawalek kodu :) TCCR1A=0x00; TCCR1B=0x01; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; TIMSK=0x04; // przerwanie interrupt [TIM1_OVF] void timer1_ovf_isr(void) { // Place your code here lcd_full(); delay_ms(100); lcd_cls(); } wektory...
avrstudio error stk500 avrstudio programy avrstudio
silnik simsona darfon philips rejestrator uszkodzony
gramofon ziphona hamulec volkswagen
Arduino IDE komunikat "A programmer is required to upload" – ATtiny85, ATmega328P, STM32, ESP32, bootloader, programator Einhell Dual – nagły brak lasera w piła ukośna: typowe usterki, diagnostyka, naprawa