jak w temacie, próbuje coś prostego napisać i nic z tego nie wychodzi, dioda nie swieci. #include<avr/io.h> #include<util/delay.h> #include <avr/interrupt.h> #include <stdint.h> #define LED1 (1<<PB2) int main( void ){ DDRB = LED1; PORTB = LED1; TCCR1A |=(1<<WGM11); TCCR1B |=(1<<WGM12);...
(at)atom1477 Wzmacniacz był badany za detektorem. Sprawdzane było zbocze narastające przy wywołaniu pojedynczym impulsem i przy wywołaniu sygnałem prostokątnym 40kHz nie było różnicy w amplitudzie ani w czasie narastania. Na tej podstawie stwierdziłem że wzmacniacz działa prawidłowo. Dodatkowo na oscylogramach kanał niebieski to bezpośrednio wyjście...
Wzorowałem się na przykładzie z sieci. Czy poniższy kod wygląda ok? Póki co nie mam jak sprawdzić na biurku, jedynie widzę, że krótkie połączenia pinu do masy pokazują mi na LCD pewno wartości i przeważnie zaraz się zerują(czasami zostaje jakaś wartość). [syntax=c] //************** ICP PRZERWANIE TIMER1 *************************************** ISR(TIMER1_CAPT_vect)...
Chciałbym zrobić symulację naciśnięć klawiszy na klawiaturze PS/2 wykorzystując ATMega328 z rezonatorem kwarcowym 16MHz i interfejs PS/2 na USB. Posiłkowałem się tym opisem PS/2. https://www.avrfreaks.net/sites/default/... Z opisu wynika, że urządzenie PS/2 (wspomniana klawiatura) musi być w każdej chwili przygotowane do odbioru...
Witam, mam problem, poniższy kod generuje prostokąt około 150Hz pwm1 - reguluje wypełnienie za pomoca potencjometru (działa) 0-5V pwm2 - tutaj dodałem przycisk (10 stopni) jednak nie działa on poprawnie, zamiast stopniowej regulacji wypełnienia - działa praktycznie losowo, na wyjściu pokazuje rożne napięcia, nie mam pojęcia dlaczego, dodam że jak zastąpie...
Witam Zrobiłem sobie układ, który ma na wyświetlaczu wyświetlać godzinę oraz temperaturę wody. Samą obsługę wyświetlacza jakoś udało mi się ogarnąć, natomiast mam problem przy odczycie temperatury z czujników oraz czasu z ds1302. Na początku ustawiam sobie godzinę 10:40 i to wyświetla się poprawnie, ale jak idzie odczyt z ds1302 to wyświetla mi się...
Jasne. Korzystam z tego programu żeby wysyłać wartość impuls oraz rmp na terminal. [syntax=cpp] #include "avr/io.h" #include <avr/interrupt.h> #include <avr/pgmspace.h> #include "util/delay.h" #include "myuart.h" #include "mk_term.h" volatile unsigned long int impuls; //zmienna która jest liczbą impulsów przed wyrezerwanie timera czyli z...
Witam Bawię się obsługą sprzętowego PWM. Skonfigurowałem trzy timery w tryb Fast PWM. Do uC podpiąłem kwarc 20MHz i ustawiłem fusebity. Wpisałem w OCR1A wartość 128 i podłączyłem oscyloskop. Okazuje się że okres wynosi zaledwie 0.1 ms to 10kHz, mimo tego że preskaler ustawiłem na 1... coś mi tu nie pasuje bo zgodnie ze wzorem: Fpwm = Fcpu/1/255 powinienem...
https://obrazki.elektroda.pl/7400017800_... Dzisiaj przedstawię proces portowania biblioteki obsługującej MultiFunctionShield na Arduino R4 oraz krótko zademonstruję jej możliwości, czyli wyświetlanie danych na 7-segmentowym, 4-cyfrowym wyświetlaczu oraz kontrolę klawiatury i buzzera. Przy okazji też zobaczymy jak można zrealizować...
z jakiegoś swojego starego projektu zerknąłem na ustawienia i mam tccr0a=a3, tccr0b=2 tccr1a=a1, tccr1b=2 tccr2a=a1, tccr2b=2 przy nich na 16MHz pwm'y chodzą 4kHz (możliwe ze jeden z nich na 8Khz)
Dodałem, ale nie chce się skompilować : d takie błędy wyskakują : http://obrazki.elektroda.pl/6299990400_1... dla takiego kodu : [syntax=c]/ Ustawienie timera 1 TIMSK1 |= (1<<TOIE1); // umozliwenie przerwan od timera1 TCCR1B |= (1<<CS10) | (1<<CS12); // prescaler na 1024 TCNT1 = 60000; // wartość rejestru w którym odbywa...
Witam .. a może spróbować takiej konfiguracji [syntax=c]TCCR1A |= (1<<COM1A0)|(COM1B0); TCCR1B |= (1<<WGM12)|(1<<CS10); OCR1A = .....[/syntax] Pisane na podst. dataschetu - nie sprawdzane. Nawiasem mówiąc nie meczy Cię przeliczanie wpisu w rejestry na kod HEX ?. Co do szerokiego przestrajania poczytaj o timerach programowych. Pozdr.
Dla sterowania dwoma serwami konfiguruję PWM1 poprzez bezpośredni zapis rejestrów: Tccr1a = &B10100010 'mode14 - fast pwm, icr1, prescale64 Tccr1b = &B00011011 Icr1h = &B00010011 'wartość icr1=4999 Icr1l = &B10000111 Tcnt1h = 0 Tcnt1l = 0 i steruję serwami przez Ocr1ah = High(pozycja_serwa) Ocr1al = Low(pozycja_serwa) lub Ocr1bh = High(pozycja_serwa)...
Coś takiego znalazłem. Co prawda na Atiny ale można przerobić. [syntax=c]// // Talking to ultrasonic sensor HC-SR04 with an ATtiny84, and // sending distance data using serial communications. // // electronut.in // #include <avr/io.h> #include <string.h> #include <util/delay.h> #include <avr/interrupt.h> #define F_CPU 8000000...
Udało mi się zapisać pierwszą stronę pamięci, potem modyfikowałem program i chciałem zapisać kilka stron - za każdym razem zapisywała się tylko 1 strona poprawnie aż w końcu zapisuję tylko pierwszą stronę i to błędnymi danymi. Długa noc przede mną... wrzucam w zasadzie cały testowy kod, przepraszam za bałagan bo jest w nim pełno zakomentowanych kawałków...
Co się rzuca w oczy, to konieczne zmiany: [syntax=c]ddrb |= 00000111; //pb0 pb1 pb2 ddrc |= 00101000; //pc3 pc5 ddrd |= 11100000; //pd5 pd6 pd7[/syntax] na [syntax=c]DDRB = 0b00000111; //pb0 pb1 pb2 DDRC = 0b00101000; //pc3 pc5 DDRD = 0b11100000; //pd5 pd6 pd7[/syntax] oraz [syntax=c]tccr1a |= (0<<com1a1) | (0<<com1a0) | (1<<com1b1)...
Preskaler znaczy taki mnożnik (ze max rozdzielczość to us(mikrosekundy) ale stosując ten preskaler można ją zmniejszyć np do sekund)? Jeśli tak to moj problem został rozwiązany. Poniżej zamieszczam kod który znalazłem na stronie #include <avr/io.h> #include <avr/interrupt.h> //Counts overflovs volatile uint16_t T1Ovs1, T1Ovs2; //Variables...
Cześć, Próbuję odtworzyć plik .wav z karty SD wykorzystując PWM ale nie do końca mi to wychodzi. Dźwięk jest w okropnej jakości, muzykę ledwo da się rozpoznać, strasznie charczy, ale jeśli się wsłucham to jakoś tekst wokalu wychwycę:D O to kawałek kodu odpowiedzialnego za odtwarzanie: http://obrazki.elektroda.pl/6893634300_1... Pozdrawiam
Program: [syntax=c] /* * main.c * * Created on: 18 gru 2014 * Author: User */ #include <avr/io.h> #include <util/delay.h> #include "HD44780.h" #include <avr/interrupt.h> #define ADCIN PC5 #define LED (1<<PB0) volatile uint16_t odlicz; volatile uint8_t led_mruganie; int main(void) { LCD_Initalize(); ADCSRA = (1<<ADEN)|(1<<ADPS0)|(1<&...
Mniej więcej co 2 tygodnie ktoś tu próbuje obsługiwać przycisk na przerwaniu portu i co dwa tygodnie próbujemy takiemu delikwentowi wybić ten nierozsądny pomysł z głowy. Przeszukaj archiwum. Przycisków NIE obsługuje się przy użyciu przerwań portu, a przy użyciu przerwania timera. Jak chodzi o mikrokontolery jestem początkujący. Tego typu obsługa była...
Mam ustawiony timer w Input Capture Ustawienie timera z przepełnieniem licznika IC_Timers 40000 (po prostu potrzebowałem równy czas też dla odmierzania zegarka i innych bajerów do odmierzania czasu ) przerwanie co 20ms. https://obrazki.elektroda.pl/6280175200_... Od lewej okres, czas stanu wysokiego, aktualny timer ICR1, poprzedni timer...
Czy istnieje możliwość dokonania modyfikacji przerwania w taki sposób, aby otrzymać możliwość regulacji pulsacji sygnału? Aktualnie sygnał generowany jest przez dwa przerwania o stałym wypełnieniu: [syntax=c] #include <avr/io.h> #include <avr/portpins.h> #include <avr/interrupt.h> #include <util/delay.h> #include "PWM.h" int...
timer1_on() wygląda tak [syntax=c]inline void timer1_on(){ uint8_t tccr=TCCR1B; tccr &= ~((1<<CS10)|(1<<CS12)); tccr |= (1<<CS11); TCCR1B = tccr ;// preskaler=8 }[/syntax] Nie zeruje tu TCNT1 bo nie mam takiej potrzeby, bo timer włączam tylko 1 raz, a po inicjalizacji zeruje licznik, później wartość OCR zmienia się tylko w pierwszym...
Próbowałem kilka dni uruchomić FreeRunning - niestety bez skutku. Stwierdziłem, że może lepie pójdzie mi z Timerem ale tutaj też klapa. Czy ktoś mógłby mi "łopatologicznie" wyjaśnić gdzie popełniam błąd? Teraz mam taką sytuację, że tylko raz dokonywany jest pomiar i wyświetlony, w dodatku na obu liniach LCD. [syntax=c] #define wej_2 PC2 #define wej_3...
Mam pewien eksperymentalny kod generujący SPWM dla falownika napisany dla Arduino UNO (AT328P), całość ma być jednym urządzeniem i zaczyna się robić mało miejsca na PCB a z drugiej strony są generowane tylko dwa lub trzy sygnały. Pomyślałem czy kod by nie zadziałał na ATTiny85A? Marny ze mnie programista, może ma ktoś "pomysła" na taką modyfikację?...
Witam Do atmegi 328p, do int0 mam podpięty jedną nogą pc814, drugą do masy, czyli ten pc814 zwiera do masy int0. LCD podłączony do portu D. Wejscie int0 podciagnięte wewnętrznym pullupem. W przewaniu próbuję zliczać te impulsy, ale otrzymuję dziwne rzeczy. [syntax=c]#include <avr/io.h> #include <stdlib.h> #include <avr/interrupt.h>...
Usiłuję napisać program takiego miernika i podczas analizy konfiguracji timer-ów w różnych tego typu projektach a szczególnie w jednym (ale o tym później) pogubiłem się trochę i pojawiły się wątpliwości. Do testów używam platformy arduino nano (atmega328p, 16MHz, 5V) i na chwilę obecną napisałem coś takiego: [syntax=c]#include <Wire.h> #include...
Jeżeli chodzi o pierwszy warning w tej bibliotece dotyczy SIG_USART_TRANS w sekcji __AVR_ATmega169__ [syntax=c] /* * FreeModbus Libary: AVR Port * Copyright (C) 2006 Christian Walter <wolti(at)sil.at> * - Initial version + ATmega168 support * Modfications Copyright (C) 2006 Tran Minh Hoang: * - ATmega8, ATmega16, ATmega32 support * - RS485 support...
Witam. Napisałem programik na procesor z tytułu, który mierzy długości impulsów na pinie, i wysyła wynik pomiaru na UART. Postanowiłem wykorzystać to do przechwycenia sygnału z pilota do tunera TV SAT (TechniSat, bo taki miałem pod ręką :) ), taktowanie: kwarc 4MHz, odbiornik typu TSOP, sygnał zanegowany przez 74LS00 i dostarczony na PD6, schemat pominę,...
Witam! Jestem początkujący w tym temacie, od niedawna uczę się programować mikrokontrolery AVR. Po pierwszych programach typu migająca dioda przy użyciu funkcji delay oraz opanowaniu timerów na tyle aby one sterowały diodą chciałbym "oswoić" serwomechanizm : TowerPro SG90. Trochę czytając na internecie oraz oczywiście dokumentacje atmegi328p udało mi...
Próbowałem już absolutnie wszystkiego aby transmisja działała. Siedzę już przy tym około 15 godzin i dalej nie mogę tego skonfigurować aby działało poprawnie. [syntax=c]#include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #define DIODA (1<<PB1) #define FOSC 8000000 // Clock Speed #define BAUD 9600 #define MYUBRR...
Witam, W Arduino posiadam 6 sprzętowych kanałów PWM. Jednak potrzebuję obsłużyć ich 7. Podpowiedziano mi, że mógłbym użyć dekodera (np. BCD -> DEC), jednego timera i przerwaniami obsługiwać kilka serw. Zacząłem kombinować i stworzyłem większy niż kilkulinijkowy kod, który kompletnie nie działał. Zacząłem go stopniowo upraszczać, aż doszedłem właściwie...
Dobra. Kod prezentuje się następująco: to jest program w którym wszystko działa jak potrzeba: [syntax=cpp]//Data utworzenie: 20-09-2014 #include <avr/io.h> #include <util/delay.h> #include <stdlib.h> #include <avr/pgmspace.h> #include "MYUART/myuart.h" #include "MK_TERMINAL/mk_term.h" #define REF_256 (1<<REFS1)|(1<<REFS0)...
A dlaczego przecinki? Sądzę, że Nsvinc miał na myśli tylko |= czyli tak: [syntax=c]TCCR1B = (0<<ICNC1)| (0<<ICES1)| (1<<WGM13)| (0<<WGM12)| (0<<CS12) | (1<<CS11) | (0<<CS10); [/syntax]
Mam następujący problem: Gdy zmieniam w przerwaniu zawartość zmiennej (co najmniej dwubajtowej) z kwalifikatorem volatile program w loop odczytuje czasem "hybrydową" wartość w której część bajtów pochodzi ze starej, a część z nowej wartości. Podobnie bywa przy odczycie w przerwaniu zmian wprowadzanych w loop. Sądzę, że problem pojawia się gdy przerwanie...
Nie wiem, może w kodzie mam błąd: [syntax=c] // KOD w setup() OCR1A = 999; // = 8000000 / (1 * 8000) - 1 (must be <65536) TCCR1B |= (1 << WGM12); TCCR1B |= (0 << CS12) | (0 << CS11) | (1 << CS10); TIMSK1 |= (1 << OCIE1A); // Ustawiam TIMER 1 TCCR2A |= (1<<COM2B1); TCCR2A |= (1 << WGM20); TCCR2B |= (1 <<CS21)...
Witam, postanowiłem napisać, gdyż dzisiaj bawiłem się mikrokontrolerem ATmega328p, a konkretnie timerem 1 w trybie PWM. Ustawiłem go tak aby mieć jak największą rozdzielczość, czyli żeby zliczał do ICR1 (mam wtedy 16 bitów). Z grubsza fragment kodu odpowiadający za generację PWM wyglądał więc tak: [syntax=c] TCCR1A|=(1<<COM1A0)|(1<<WGM1...
Działa. Pewnie o czymś zapomniałeś na wstępie. Mój działający kod: .include "m128def.inc" .cseg .org0x0000 rjmpreset ;skok po resecie systemu .org0x0018 rjmpdata ;skok po wykryciu zgodności reset: ldi r16, high(RAMEND) out SPH, r16 ldi r16, low(RAMEND) out SPL, r16 rcallKONFIGURACJA_TIMER1 sei loop: nop rjmploop ;......
Problem został rozwiązany. Wystarczyło spiąć ze sobą masę baterii/zasilacza i Arduino. Witam, Staram się okiełznać sterowanie serwem, ale niestety, nie wychodzi mi nawet najprostszy program :( Czy ktoś mógłby mi powiedzieć co mam źle? ICR1 = 16Mhz/(256(prescaler)*50(częstotliwość dla serwa)) = 1250 -> ustawienie MAX Timera na taką wartość da mi...
(...) odczytu temperatury. Jaki zaproponowałbyś kod (AVR GCC), aby nie trzeba było używać delay'a (może pooling lub maszynę stanu) ? Przy okazji przedstaw optymalną (bez zmiennoprzecinkowych liczb) konwersję danych ze scratpad'a na stopnie (może być złożeniem liczb całkowitych jako stopnie i części ułamkowe). Do obsługi termometrów DS18B20 bez blokowania...
https://obrazki.elektroda.pl/5452004500_... W temacie: https://obrazki.elektroda.pl/5131004200_... I już widać, że wynik jest raczej mało prawdopodobny, odchyłka 1Hz jest mało prawdopodobna w zestawieniu z danymi za 2015r. Na stronie https://obrazki.elektroda.pl/1500445700_... Efekty pomiarów zostały...
Witam. Nawiazujac do tego co opisal kol. tos18 chcial bym sie zwrocic z prosba czy byla by mozliwosc aby zrobic jedem GPIO na ESP32 ktory by dalo sie odczytywac jego stan 1/0 za pomoca rejestrow. Aby uzyskac duza szybkosc odczytywania stanu GPIO 25. Obecnie realizuje to za pomoca kodu : ((REG_READ(0x3FF4403C) & BIT(25)) != 0); Wczesniej nalezy zadeklarowac...
Zmien OCR1B na 2000 bo u Ciebie jest wypelnienie 50%, a powinno byc max 10%. Jak to nie pomoze to nie ustawiaj bitow w rejestrach z 'or' np TCCR1B |= _BV(WGM13) | _BV(WGM12) ; ..... TCCR1B |= _BV(CS11); , tylko zapisuj cala wartosc rejestru TCCR1B = _BV(WGM13) | _BV(WGM12)|_BV(CS11); , ostatnio sie natknalem...
Witam Mam problem z zainicjowanieniem timera1 dla pocesora ATmega128 w tryb licznika. Chcialem to zrobic chyba za prosto czyli tak : outp(0x40, DDRD); outp(0x00, TCNT1L); outp(0x00, TCNT1H); outp(0, TCCR1A); outp(6, TCCR1B); Ale jakos program nie dziala. Trzeba cos ustawiac w innych rejestrach ??
[syntax=c] TCCR1B |= (1<<CS11)|(1<<CS10); // 8Mhz / 64 /1250 = przerwanie co 10ms [/syntax] to nie jest czasem co 100ms?
Witam po przeszukaniu forum niestety nie rozumiem bądź nie umiem ustawić tych timerów. Zegar wewnętrzny 8MHz - Atmega128 w tym 1 potrzebuję około 1s TCCR1B |= (1<<WGM12) | (1<<CS12); TIMSK |= (1<<OCIE1B);//zezwolenie na przerwanie TCNT1 = 0; OCR1B = 32582; } ISR (TIMER1_COMPB_vect){ TCNT1 = 0; s_czas ++; } [/syntax] tutaj potrzeba...
No umnie na 7,38MHz (ATMEGA32) trwa ok. 10s TCCR1B=(0<<CS12 | 0<<CS11 | 1<<CS10);// (no prescaling) TIMSK = (1<<TOIE1); SIGNAL (SIG_OVERFLOW1) { static int count = 2000; TCNT1H=0x63; TCNT1L=0xBF; if (count--) ; else count = 2000; }
Mam problem z uruchomieniem PWM na Atmedze 128. PWM z korekcją fazy i częstotliwośći. Oto kod: DDRB|=(1<<PB5)|(1<<PB6); ICR1=100; OCR1A=25; OCR1B=50; TCCR1A|=(1<<COM1A1)|(1<<COM1... TCCR1B|=(1<<WGM13)|(1<<CS11)... Procesor nie reaguje. Na wyjściu nie ma nic. Proszę o pomoc.
...przy 10000HZ na LCD wyświetla 0666... No to prawie jak liczba szatana :) if(licznik==4) { T1=TCNT1; utoa( T1, bufor1, 10 ); lcd_gotoxy(3,0); lcd_puts(bufor1); TCNT1=0; } Widzę, że dodałeś pozycjonowanie kursora, żeby wynik za każdym razem był wyświetlany w tym samym miejscu wyświetlacza. Trzeba by jeszcze...
Witam, Potrzebuje wygenerowac sygnal prostokatny na atmedze32A 8Mhz (zakres od 1-1000Hz). Postanowilem w tym celu uzyc trybu 4 CTC. Z tego co zrozumialem to powinnem zrobic tak: [syntax=c] TCCR1B |= (1<<WGM12); //włączenie trybu CTC TCCR1B |= (1<<CS10) | (1<<CS12) ; //ustawienie preskalera na 1024 OCR1B = 1000; //wartość do której...
bascom atmega328 usbasp atmega328 programy atmega328
tonsil pianka allegro at9100 dioda lenovo ladowanie
diagbox peugeot głowica wymiana
Jak wyłączyć tryb grzania w piekarniku - porady Stukanie w grzałce akwariowej: przyczyny i rozwiązania