(at)seba_x:A co to za bzdura?:> • Peripheral Features – Two 8-bit Timer/Counters with Separate Prescaler, one Compare Mode – One 16-bit Timer/Counter with Separate Prescaler, Compare Mode, and Capture Mode A co do pytania autora, nie, zliczanie umożliwiają tylko dwa pierwsze timery. Trzeciego można używać jako wewnętrznego. Nie tylko...
Kiedyś umieściłem na obecnie niedostępnej stronie and.elektroda.eu materiał o dekodowaniu sygnału DCF. Urządzenie potrzebne było w urządzeniu, które wymagało synchronizacji czasu w pomieszczeniu gdzie wyprowadzenie anteny zewnętrznej do GPS było utrudnione. Poniżej umieszczam treść oryginalnego materiału, który może być pomocny przy budowaniu urządzeń...
a ustawiłeś Fuse Bity?? Bo jeśli nie masz ustawionych to ATmega pracuje z częstotliwością 1MHz. Musisz ustawić Fusy na albo 8MHz na wewnętrznym generatorze albo ustawić Fusy na zewnętrzny kwarc. i mniej więcej kod by tak wyglądał: $regfile = "m8def.dat" $crystal = 8000000 Cursor Off Dim Czestotliwosc As Long Const Licznik = 22336 Config Timer1...
No dobra, udalo ci sie polechtac moja proznosc wiec moze zrobimy tak. Opisze tutaj przykladowego mekafile-a z nastawieniem na WinAVR, Atmega8 i STK200 tak aby inni tez cos z tego mieli. W zasadzie wszystko jest opisane w angielszczyznie no ale jakby kto nie umial to daje po polsku. # Hey Emacs, this is a -*- makefile -*- #---------------------------------------...
https://obrazki.elektroda.pl/9317464400_... Witam Przedstawiam stację meteo nad którą pracuję już kawałek czasu. Początek prac to też mój początek zabawy z Arduino. Zaczęło się od gotowego projektu malutkiej stacji z wyświetlaczem OLED. https://obrazki.elektroda.pl/5611267500_... Wtedy już samo wgranie programu do...
Witam ponownie, Poszedłem o krok dalej i moim planem jest podłączenie każdego z czterech wtryskiwaczy do osobnego pinu Arduino Uno/Nano z Atmega 328p. Pozwoliło mi to na skonstruowanie programu aby sterować każdym wtryskiwaczem z osobna z tą samą częstotliwością i wypełnieniem, ale sygnał do ich wysterowania jest przesunięty około 90° (problem z rozdzielczością...
Ostatnio postanowiłem pobawić się z Arduino i do tego kupiłem tanie Arduino uno r3 z aliexpress (CH340 Atmega 328p) - od tego gościa: https://pl.aliexpress.com/item/100500603... Po problemach z instalacją pod Linuksem (chodzi o ten nieszczęsny CH340, który nie dość, że nie jest standardowo rozpoznawany, to daje jeszcze jakiś konflikt z oprogramowaniem...
Tym razem uwaga na temat taktowania timera B. Timer B ma bardzo zubożony dzielnik zegara gdyż may tylko opcję dzielenia przez 2 lub braku dzielenia. Alternatywą może być taktowanie zegarem zapożyczonym z Timera A, (sygnał pobierany zza dzielnika Timera). This peripheral uses the system's peripheral clock CLK_PER. The peripheral has its own local prescaler,...
Witam Mój problem wygląda następująco: -układ na jakim pracuje to atmega 8 a srodowisko programowania Bascom Po zalaczeniu i skonfigurowaniu countera w sposob następujący Config Timer1 = Counter , Edge = Rising , Noise_cancel = 1 Enable Interrupts Enable Timer1 Podczas odczytu wartości countera licznik szaleje (sam nalicza jakies nie stałe wartości)...
W takim razie nie twórz tablic (i nie używaj tablic stworzonych wcześniej, czyli statycznych) tylko licz sinusa na żywo. counter += period; if (counter >= 2_pi) counter = counter - 2_pi; TCF0.CCABUF = roundf(sinf(counter) * amplitude) + 2048; //Żeby zakres był od 2048 w obie strony Oczywiście to tylko przykład. Pasuje to jakoś...
Po co podłączasz rezonator kwarcowy, skoro działasz na wewnętrznym RC? Proszę skojarzyć z Real Time Counter with Separate Oscillator
Witam mam prosty program. Timer zlicza naciśnięcia przycisku. Problem polega na tym że po jednokrotnym naciśnięciu wartość zwiększa się o jakąś ilość (nie zawsze o 1). Jak temu zaradzić? np. żeby zmiana stanu licznika była możliwa tylko co określony odcinek czasu. [syntax=basic4gl]Config Pinb.0 = Input Set Portb.0 Config Timer0 = Counter , Edge = Falling...
Raz są zgodne raz są w przeciwfazie. A nie zależy to przypadkiem od stanu początkowego pinu? Config Timer1 = Counter , Prescale = 1 , Compare_A = Toggle , Compare_B = Toggle , Clear_Timer = 1 Nie znam baskoma ale toggle o tym mówi.
atom1477, spokojnie, przecież to podobno tylko kwestia konfiguracji i wybrania odpowiedniej częstotliwości. :) Chciałbym zrobić coś podobnego jak tutaj: http://obrazki.elektroda.pl/9591714300_1... Zmieniając tylko pewnie trochę wartości L i C oraz zastępując Attiny wyjściem PWM z Arduino. Niestety nie wiem jak to jest z tą częstotliwością...
"Od samego początku mam problem ze sterownikiem."...."A jeszcze jedno w kontrolerze jest włączony timer jako counter do zliczania impulsów ślimaka podajnika Przerywasz w programie procedurę wyświetlania na LCD przerwaniem od Timera.
jak nie odp ...wystarczy spojrzec na kod ... asembler jest tak szerokosc impulsu faktycznie zalezy od zadanej pozycji czyli od impulsow zliczanych prze counter to logiczne... ale nie w tym tkwi problem lecz w TCNT0=200... jak zmienic aby wychylenia serw byly bardziej dokladne czyli jak zmienic program aby atmega sie wyrabiala??
Chyba znalazłem choć może mi się wydawać, proszę o opinie fachowca :) jak w AVR Studio odpalę debugowanie i run, to po lewej w okienku "Procesor" jest wartość CYCLE COUNTER. Czy ta wartość podaje ile cykli procesor machnął od początku do aktualnego momentu? Jeśli tak to 8 ifów jest szybsze 282 cycle kontra 414 cykli przy użyciu pętli for i przesuwaniu...
Dzięki za tak szybkie odpowiedzi :-) Rozumiem, ze zmienne zadeklarowales jako volatile, czy zapomniales o tym?:) Druga sprawa - komplikujesz. Ustaw 16-bitowy timer tak, zeby np. mial impuls co 1us, albo czesciej, w zaleznosci jaka potrzebujesz rozdzielczosc. Tak, zmienne mam jako volatile, ale rzeczywiście nie policzyłem, że counter tak szybko się przepełnia...
Hmm, moim zdaniem gdzieś jest zmienna 8 bitowa (Byte) musisz zmienić ją na większy typ. np. Word, Long. zmienna word Dodano po 1 A czy trzeba konfigurować port Config Pinb.0 = Input Set Portb.0 pod counter0 atmega 32 Dodano po 11 [syntax=basic4gl] $regfile = "m32def.dat" $crystal = 8000000 $hwstack = 32 $swstack = 8 $framesize = 24 Config Lcd = 16...
Najprościej na przerwaniu. Nie pamiętam jak to przeliczać ale kiedyś potrzeba mi było odmierzanie czasu co 1s (bodaj na ATmega16 z kwarcem 8MHz). Da się przeliczyć (czytaj notę katalogową do procka) ale przy okrągłych herzach jakieś farfocle zostają ;) Mi wystarczyła dokładność +/- 1 sek. na 10-12 godzin :) Dodano po 3 I jeszcze jedno RTC nie zawsze...
Przecież autor pisze, że chce gotowca, a wy mu z mikrokontrolerami wyjeżdżacie. Najprościej jakieś używane Logo, Zelio, czy co tam jeszcze z przekaźników programowalnych. Podłączy zasilanie, 1 wejście, 1 wyjście przekaźnikowe i po sprawie. Rozumiem, że tak podłączone LOGO czy Zelio od od razu zacznie popranie pracować, bez potrzeby programowania czy...
Czesc, No niestety nie hula... probowałem tego. Myśle ze atmega jest zryta jakos... Mimo tego, ze mam obsługe przerwań i tak, wiem ze to musi działać bo skopiowałem to z mojego poprzedniego projektu, to mi się restartuje atmega. Zwrać na płytce nie ma. [syntax=c] #include <avr/io.h> // Załaduj bibliotekę input/output #include <avr/interrupt.h>...
http://obrazki.elektroda.pl/7218266900_1... Chronograf jest urządzeniem służącym do pomiaru prędkości obiektu. W najprostszej formie pomiar polega na wykorzystaniu dwu czujników, które będą „śledzić” obiekt, urządzenia do pomiaru czasu i interfejsu wyświetlającego wynik pomiaru. W niniejszym artykule zostanie przedstawiony...
Witam,. Mam następujący problem: Przetwornik analogowy na ADC pin 1 Przetwornik częstotliwość na Timer0 max232 1uF Kwarc 8Mhz i atmega16L Na kablu ze złączkami BNC mam połączenie atmega -> przetwornik czestotliwosci (2 kolumna). Wydaje mi się, że wszystko dobrze zlutowane oraz nie ma przerw w kablu BNC. Kabel mam 50 Ohm. Podczas wysyłania danych na...
Dobra. Wziąłem pierwszego lepszego pdf-a ze strony producenta. Są tam dwie końcówki ( T0,T1) . To są timery??? Dodano po 5 Doczytałem się też, że są tam dwa timery - jeden 16 bit ( counter 1) i jeden 8 bit ( counter 2). Czyli, że do 16-bitowego mam odwoływać się timer1 ??? do ilu zlicza 16-bitowy a do ilu 8-bitowy??? czy wiedząc,że jeden ma 8 bitów...
Problem jest taki że na symulatorze kod działa tak jak powinien, a na uC nie działa "menu" programu(funkcja Program) tylko od razu przechodzi do wykonywania pierwszej funkcji(funkcja Count). W ogóle atmega jakby nie reagowała na żadne przyciski. Zamieszczam kod programu: [syntax=asm].INCLUDE "m32def.inc" .EQUSYS_FREQ = 1 ldiR22, 0xFF ; set PORTA as...
Witam to mój pierwszy post na tym forum, stąd możecie mi wierzyć jak bardzo jestem zrozpaczony:) jeśli temat jest w złym miejscu to prosiłym moderatora o przeniesiegnie i z góry przepraszam:) zwykle staram się rozwiazywać wszystkie problemy sam ale tym razem mam coś czego nie jestem w stanie zrozumieć. Pracuję chwilę nad programem którego działanie...
Mam mały problem chcę zrobić prosty miernik częstotliwości w bascomie do ok. 600KHz Warunek ma mierzyć z dokładnością 1Hz i niestety nie wychodzi mi to. Taimer 1 mam skonfigurowany jako taimer (Config Timer1 = Timer , Prescale = 8) taimer 0 skonfigurowany jako licznik (Config Timer0 = Counter , Edge = Falling ) z resztą zamieszczam fragment kodu [syntax=basic4gl]$regfile...
Program na GLCD skleiłem z dwóch bibliotek - I2C Slave TMF (pierwsza książka) oraz obsługa wyświetlacza autorstwa "SunRivera" udostępnionej przez niego na Dropie. Podejrzewam, że mogłem coś namieszać w I2C - biblioteka była pisana na Atmega 88, ja skompilowałem ją na Atmega32. Kompilator protestował przeciwko obecności rejestru "TWAMR", którego 32 nie...
W zależności od MCU RTC jest trochę różne. W XMEGA masz dwie podstawowe wersje - RTC16 i RTC32, z opcjonalnym backupem bateryjnym. To co jest fajne w XMEGA to to, że jak dodasz kwarc zegarkowy, to możesz nim kalibrować wewnętrzny generator RC, dzięki temu nie potrzebujesz dodatkowego kwarcu dla procesora. Samo RTC działa po prostu jako 16/32 bitowy...
Powinieneś jeszcze pomyśleć o sytuacji, gdy masz pustą linię, ale przed znakiem nowej linii są biale znaki (spacje, tabulatory). Rozwiązanie które zaproponowałeś zadziała, ale tylko w przypadku znaku nowej linii na początku wiersza. Oto moja propozycja (fragment modułu parsującego plik konfiguracyjny demona, zarządzającego połączeniami ze sterowanikiem...
Na początku sprawdziłem, jest JMP 3-cyklowy, zapomniałem o tym wspomnieć, myśląc że komentarze w kodzie o tym mówią. Jest nawet dodatkowy NOP, aby przerwanie miało dokładnie 12 cykli, jakoś na parzystych łatwiej mi się dokonuje obliczenia. Może innym licznikiem sprawdzę ile tak naprawdę cały ten kod konsumuje cykli... Update: Wyszło na to, że cały ten...
;***************************************... ;* ;* "div8u" - 8/8 Bit Unsigned Division ;* ;* This subroutine divides the two register variables "dd8u" (dividend) and ;* "dv8u" (divisor). The result is placed in "dres8u" and the remainder in ;* "drem8u"....
Szanowni Forumowicze, staram się z byle błahostką tutaj nie pojawiać, ale niestety natrafiłem na problem w trakcie programowania µC z którym nie potrafię sobie poradzić. Ćwiczę programowanie w C i od kilku dni testuję Timery na Atmega8. Udało mi się zaprogramować je na wszystkie znane mi sposoby. Niestety po zmianie programu i konfiguracji na płytce...
Witam, próbuję zrobić projekt w stylu inteligenty dom i chcę sterować różnymi urządzeniami przez internet lecz nie chcę stawiać serwera bo i tak nie mam zewnętrznego IP. Pozostaje więc założyć zewnętrzny serwer i wysyłać dane na ftp w postaci plików. Byłbym wdzięczny za wskazanie jakiejś drogi (tutorial kurs cokolwiek) kod z działającym serwerem już...
Witam. Testowałem sobie różne opcje oszczędzania energii i trochę za szybko wgrałem program zmieniający częstotliwość taktowania za pomocą komendy CLKPR , przez co teraz nie mam komunikacji z mikrokontrolerem - nie mogę wgrać innego programu, bo dostaję błąd: avrdude: error: programm enable: target doesn't answer. 1 avrdude: initialization failed, rc=-1...
Witam, Męczę się żeby uruchomić bootloader w atmega 32 z przykładów Bascoma: Program któy chce wgrać to: '---------------------------------------... ' BOOTNEW.BAS ' (c) 2003, MCS Electronics ' The purpose of this file is to test the bootloader ' After the ? mark from the loader, set the focus to this window and then...
Owszem że chcę słuchać kolegi janbernat`a :) bo chcę się nauczyć, wczoraj i dziś próbowałem trochę poznać tajniki przerywań, a dokładniej TIMER0, jednakże nie za bardzo to rozumiem. Albo tak naprawdę nie wiem jak ma wyglądać konstrukcja programu żeby to chodziło. Czy coś takiego w uproszczeniu byłoby dobrym rozwiązaniem? (proszę się nie śmiać bo naprawdęnie...
Witam, Chciałem skomunikować ze sobą 2 atmegi32 i mam z tym problem. Jedna atmega wykonuje pomiar z wejścia adc i próbuję wartość ADC wyświetlić na wyświetlaczu podłączonym do drugiej atmegi, ale zamiast wartości np 467 na wyświetlaczu uzyskuję jakieś przypadkowe cyfry np. 13 10 19 51 54 ... Podłączone jest dobrze RxD do Txd i podciągnięte rezystorami...
Witam, Chciałbym napisać jakiś najprostszy program w VB do obierania wartości zmiennej wysyłanej przez Atmegę, wysyłana jest zmienna Lngfreq Program wgrany na atmęgę poniżej [syntax=basic4gl] 'Filename Encoder_100.bas 'Version 1.00 'Date 2012-03-19 'Purpose Test of ALPS STEC11B13 encoder (reichelt.de) 'Author Georg Latzel, DL6GL 'Copyright (c) Georg...
Witam Serdecznie wszystkich elektrodowiczów! Mam tak: Motor Yamaha dt80 Lc 2x16 Atmegę 8 Bascom I oczywiście dobre chęci! Chcę zrobić tak Aby atmega liczyła prędkosc obrotów silnika i pokazywała je na lcd a potem przeliczała na khm z dokładnością 5 khm w te czy we te Myślałem tak Ekran powitalny Szerokiej Drogi! Potem jak już ruszę jechać to atmel będzie...
Witam Jako że niestety spaliła mi się karta teleVGA postanowiłem wy myśleć inne rozwiązanie na obsługę TV lub monitora. Na elektrodzie było sporo tematów jak podłączyć telewizor bądź monitor pod mikroprocesor. Jedne z wykorzystaniem karty graficznej od PC ale niestety nikomu się chyba nie udało Ja znalazłem taki właśnie projekt na atmega 168 niestety...
Witam! Zwracam się z prośbą o wykrycie błędu, ponieważ nie mogę znaleźć przyczyny złego działania układu. Podaję kod na ATMEGA: [syntax=c]# include <avr/io.h> # include <inttypes.h> # include <util/delay.h> # include <avr/interrupt.h> # define UNSET_LED1 PORTB|=1<<1 # define UNSET_LED2 PORTB|=1<<0 # define SET_LED1...
Mam mały problem z programem napisanym w bascomie , mianowicie założenia są takie jest to odbiornik pilota IR na atmega 8 chodzi mi o sam algorytm dekodowania sygnału , który ma dekodować wszystkie rodzaje pilotów obojętnie czy są w standardzie RC5 czy SONY na wyświetlaczu LCD mam mieć wyświetlane umownie wartość jedynek i zer i problem polega na tym...
Nie jestem autorem kodu, który zamieszczam. Kod znalazłem gdzieś na forum, jeżeli jego autor nie życzy sobie abym go udostępniał niech da mi znać. rc5.h http://www.roboternetz.de/wissen/images/... TSOP1736 podpinam tak jak na obrazku (tylko pod PD3 - INT1), rezystor 10k
załączam program, ale to nie jest problem napewno tego.: spark2_nowy.h ioinit.h enkoder.h spi.c [syntax=c] static inline void SPI_SET_SS() { PORTB|=(1<<PB2); } static inline void SPI_RESET_SS() { PORTB&=~(1<<PB2);// SS -> PB2 } void SPI_master_init() { SPI_SET_SS(); SPCR = _BV(SPE) | _BV(MSTR) | _BV(SPI2X);// (SPE) SPI Enable, (MSTR)Master...
Witam, Jak można zainicjować dwa odrębne pola tekstowe tak aby wyświetlały dwie zmienne wysłane przez UART -Atmegi kod VB [syntax=basic4gl] Option Explicit On Imports System Imports Microsoft.VisualBasic Imports System.Configuration.ConfigurationSettin... Imports System.Windows.Forms Imports System.IO Imports System.Data Public Class Form1 Public comm_stat...
Tu jest gotowiec tyle że w C++ na Arduino - ale łatwo można zrozumieć ideę. [syntax=c] /* Implements a simple interface to the time function of the PCF8583 RTC chip Works around the device's limited year storage by keeping the year in the first two bytes of user accessible storage Assumes device is attached in the standard location - Analog pins 4 and...
Witam, postanowiłem dodać do programu pomiar temperatury mam czujnik DS18B20 , tylko że kod programu odpowiedzialny za sterowanie czujnikiem opóźnia działanie encodera ,gdzie jest tutaj błąd może czegoś nie uwzględniłem w tym kodzie ? poniżej cały kod [syntax=basic4gl] 'Filename Encoder_100.bas 'Version 1.00 'Date 2012-03-19 'Purpose Test of ALPS STEC11B13...
Witam, mam problem z kompilacją programu.(pliki ogolnodostępne dla projektu LED CUBE 4x4x4), :arrow: http://www.instructables.com/id/LED-Cube... Posiadam pliki main.c frames.c effect.c draw.c oraz plik Makefile. Odpalam AVR Studio, ustawiam procesor ATmega 16, ustawiam zegar 14745600 bo taki jest uzyty w programie, laduje wszystkie pliki (procz...
Moje problemy odbiegają od poprzedników ale temat zgodny, więc: Mam uP Atmega 8 oraz wyświetlacz zgodny z hd47780 2*16znaków. Gdy wrzucam jeden znak na wyświetlacz przy pomocy kodu niżej wszystko jest ok: while(1) { LCD_CLEAR; LCD_LOCATE(1,0); LCD_WRITE_DATA('d'); } return 0; } Mogę kilka takich znaków wrzucić...
Wybacz Kolego ale można się załamać - nie znasz podstaw programowania! Weź sobie jakąkolwiek książkę do C i przeczytaj chociaż KILKA PIERWSZYCH ROZDZIAŁÓW... Bardzo uprzejmie proszę. Forum nie jest od nauczania C, nawet na przykładach! Najprostszy program ma postać: #include <stdlib.h> #include <stdio.h> int main(void){ sleep(1);...
Witam Korzystając kodu Tuxgraphics zmodyfikowanego przez Kolegę Mundi1970 , chciałem również postawić prosty serwer pokazujący temperatury z kilku czujników oraz wilgotność i ciśnienie. Po zmianach regfile i pinu CS nie mogę go jednak skompilować. Występują trzy błędy: Error 46 Line: 363 Assignment Error Enc28j60_linkup Erroe 229 Line: 450 End Sub or...
Dodatkową niedogodnością jest to że Atmega2560 ma wspólny układ prescalera dla Timerów 0 1 3 4 5. a to nie wystarczy?: Timer/Counter 0, 1, 3, 4, and 5 share the same prescaler module, but the Timer/Counters can have different prescaler settings . Pytam bez analizy kodu. Nie definiuj F_CPU w kodzie z tych powodów: http://mikrokontrolery.blogspot.com/2011...
Problem nie koniecznie musi być związany z tą tablicą. Jak deklarujesz większą tablicę to część zmiennych przesuwana jest na dalsze pozycje i to po nich coś może mazać, może coś ze stosem się dzieje. Może opisz dokładniej na czym polegają te przeróżne rzeczy. Kolejna sprawa to przy tej operacji powinieneś zablokować przerwanie od uarta. rx_counter--;...
Ze względu na to że wujek google mi nie pomaga zwracam się do was. Tylko na Ciebie się obraził? http://avr-mcu.dxp.pl/rc5+remote+control... http://www.gjlay.de/pub/c-code/rc5.html http://mikrocontroller.com/php/counter/c... http://homepage.hispeed.ch/peterfleury/a... Itd., itd...
nigdy nie wnikałem po co JTAG ma reset ale ma ten pin wyprowadzony, więc nie napisze z pewnością czy jest aż tak niepotrzebny.
RTFM podrozdział "Asynchronous Operation of Timer/Counter2". W dużym skrócie: przed uśpieniem trzeba zapisać coś do jednego z rejestrów i czekać na wyzerowanie flagi Busy w ASSR.
(at)fabjan1994 Na moje oko to proces budowania nie działa popawnie (compilation termiated). Problem tkwi w powłoce sh . Tu masz rozwiązanie problemu: http://www.avrfreaks.net/forum/windows-8... A tutaj Twój makefile po lekkim formatowaniu. Działa bez problemów: [syntax=bash] # Hey Emacs, this is a -*- makefile -*- #---------------------------------------...
na żadnym - poczytaj datasheet Snow, Ty mało jeszcze wiesz. Jak ty za takie odpowiedzi zbierasz punkty to się nie dziwię twej wiedzy. Co bym sie tak rzucał jak kolega dobrze podpowiada: A jak chcesz wiedzieć jakie to są piny to proszę bardzo to jest przecież wyraźnie w Datasheecie napisane: TOSC1, TOSC2. Napisane jest też że należy tam podłączać tylko...
Kod piszę "na sucho", więc lepiej sprawdź czy działa.[syntax=c] #include <avr/interrupts.h> void timer0_init(void){ TCCR0 = _BV(CS02); //Mode 0, normal operation, prescaler 64 TIMSK |= _BV(TOIE0); //Timer/Counter0 Overflow Interrupt Enable } volatile unsigned long millis=0; volatile unsigned int okresy_migania_ledow[4] = {100,200,300,400}; ISR(TIMER0_OVF_vect)...
Masz poniżej zawartość dwóch plików, które trzeba podmienić: [syntax=c] #include <util\atomic.h> #include <util\delay.h> #include <avr\io.h> #include "1wire_basic.h" uint8_t Error; uint8_t PinMask; void OW_SendBit(bool bit) { ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { DDRB |= PinMask; _delay_us(3); if(bit) DDRB &= ~PinMask; _delay_us(60);...
zrób to mniej więcej tak: .INCLUDE "m8def.inc" .cseg ; początek segmentu pamięci programu .org 0 rjmp RESET ; wektor ZEROWY (po resecie) .org OVF0addr ; wektor przerwania od przepełnienia Timera0 rjmp Przerwanie_T0 ; i tu właśnie skok do obsługi tego przerwania RESET: LDI R16, HIGH( RAMEND) OUT SPH, R16 LDI R16, LOW( RAMEND) OUT SPL, R16 ; porządek...
Witam, niestety ale chyba coś jest nie tak? Na wstępie należałoby wyjaśnić że nie ma czegoś takiego jak "automatyczne przeładowanie timera" (reload/load timer1 powiedzmy). Termin ten jest związany z procedurą konfiguracji timerów występującą tylko w trybie "Normal", gdzie każdorazowo początkowa wartość timera musi być wpisana przez processor. Taka...
Najprostszy przykład jaki mi przychodzi do głowy to wykorzystanie tych dwóch dodatkowych funkcji do wygenerowania przerwania które nastąpią po przerwaniu A po czasie zadeklarowanym w rejestrach OCRxB/C W twoim kodzie będzie to coś takiego void setup(){ DDRB |= (1<<PB7); // ustawienie pinu 13 jako wyjscie PORTB &= ~(1<<PB7);//...
Witam, Wyczytałem w nocie katalogowej procesorów ATMEGA, że posiadają "Real Time Counter with Separate Oscillator". W związku z tym czy owa możliwość uC może zastąpić zegar np. PCF8583 albo DS1307, stosując kwarc 32768 na wyjściu TOSC i będzie dość precyzyjne?
Usunąłem kod obsługujący drugi kanał, bo była jakaś interferencja pomiędzy kanałami w wyświetlaniu. Powinno działać w miarę dobrze (sprawdzane na symulatorze): [syntax=c]#include <Adafruit_NeoPixel.h> //#define DEBUG_TEST_LEDS #define nonLinearLogAudio //#define DEBUG_PRINT_ANALOGVALUES //#define DEBUG_NO_PEAK_SWITCH const int useSensorValues...
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...
Help > Config serialin The following internal variables will be generated for UART0: _RS_HEAD_PTR0 , a byte counter that stores the head of the buffer _RS_TAIL_PTR0 , a byte counter that stores the tail of the buffer. _RS232INBUF0 , an array of bytes that serves as a ring buffer for the received characters. _RS_BUFCOUNTR0, a byte that holds the number...
Ale litości. Wstaw ATTiny2313. Po co aż ATMega32? ATMega8 to by było przegięcie a co dopiero 32. $crystal = 4000000 Config Lcd = 16 * 1a Cursor Off Config Timer0 = Timer , Prescale = 1024 Config Timer1 = Counter Dim Temp As Byte Dim R As Byte Dim Freq_compare As Word Dim Metal_type As Bit Dim Freq As Word Dim Dif As Word Dim Temp2 As Byte Dim Prescale...
P.S. To nie są '#define .....' Fakt, chyba przysnąłem :D Lecz jest jednak pewien problem w definicjach: #define COUNTER_EVENT (!signal_counter & signal_counter_copy) mieszasz operatory logiczne z bitowymi. Spróbuj zastąpić iloczyn bitowy [&] iloczynem logicznym [&&].
Wycinek z datasheet atmega8a: "The Asynchronous Timer/Counter uses the same XTAL pins as the CPU main clock but requires a CPU main clock frequency of more than four times the Oscillator frequency. Thus, asynchronous operation is only available while the chip is clocked on the Internal Oscillator." Niestety do poprawnego działania potrzebny jest oscylator...
Dla kwarcu 4MHz jest to prescaler 64 i początkowa wartość licznika: 193 Dla kwarcu 8MHz prescaler to: 64 i początkowa wartość licznika: 131 To pokazuje kalkulator. Chciałoby się zakrzyknąć : a nie mówiłem :-P Aby wpisać do Timer2 początkową wartość, to używamy poleceń: TCNT2=początkowa_wartosc Timer2= początkowa_wartosc Counter2=początkowa_wartosc...
Witam:) mam pytanie do forumowiczów w sprawie pomiaru częstotliwości, sprawa przedstawia się następująco: chciałbym zrealizować pomiar częstotliwości .............. wiem ze należy postąpić w poniższy sposób: 1. zatrzymanie zliczania impulsow z T0 2. zatrzymanie odmierzania czasu bramkowania T1 3. przepisanie zliczonych impulsów do rejestru głównego...
Specyfika tego mikrokontrolera, zmusza Ciebie do zastosowania Timera2 w trybie asynchronicznym, a mikrokontroler powinien być taktowany wewnętrznym generatorem RC, czyli tak jak radzi kol. wyżej. Przy takim rozwiązaniu korzystać możesz ze specjalnego trybu oszczędzania energii: POWER SAVE. Niestety nie da się w tym mikrokontrolerze taktować kwarcem...
Rzutować operacje na unsigned long! counter_temp += ((unsigned long)(*(Table_temp + 1) - '0')) * multiTable32[1];
To ten kod, w bibliotece nic nie zmieniałem #include <SPI.h> #include <max7456.h> #define MAX7456_TABLE_ASCII #include "max7456registers.h" Max7456 osd; byte tab[]={0xC8,0xC9}; void setup() { // put your setup code here, to run once; SPI.begin(); osd.init(6); //Max7456(6); osd.setDisplayOffsets(60,15); osd.setBlinkParams(_8fields, _BT_2BT);...
nie no to jasne ... jak coś komuś nie wychodzi to na bank wina Bascoma ... tylko ze jak ma liczyć impulsy to ma być skonfigurowany jako licznik COUNTER a nie jako czasomierz TIMER czyli nie CONFIG TIMER0 = TIMER , PRESCALE= 1 | 8 | 64 | 256 | 1024 tylko CONFIG TIMER0 = COUNTER , EDGE= RISING | FALLING
Czy zmienną counter (inkrementowaną prawdopodobnie w przerwaniu) masz zadeklarowaną jako volatile ? Jeśli nie, to kompilator najprawdopodobniej zoptymalizuje porównanie (counter<=nr) jako warunek zawsze spełniony lub zawsze nie spełniony do momentu zakończenia pętli, w której przecież żadna ze zmiennych porównywanych się nie zmienia.
Ale jeśli mniejsze, to już po 1 takcie zliczania powinno wyskoczyć z przerwania a tak nie jest. Taktowanie timera to 16MHz/1024 = 15625Hz. Pojemność timera to 256, więc przerwanie pojawia się z częstotliwością 15625/256 = ~61Hz. Aby uzyskać opóźnienie ok. 1 sekundy przerwanie musi pojawić się 61 razy i dopiero za 62 zapalić lub zgasić diodę. I tak...
A proszę bardzo wersję: Compiler version: 2.0.2.1 Compiler build: 2.0.2.1.0 IDE version: 2.0.2.0 Windows OS: Windows 7 Proffesional SP1 Oryginał legalny nie ma się czego wstydzić. Timera używam tylko jednego z odmierzaniem około 5 sekund. 'konfigurujemy timer wywoływany co jakiś czas (patrz procedura) Config Timer0 = Counter , Prescale = 1024...
A może przyczyną jest nie wyzerowany licznik preskalera (strona 75): Bit 0 PSR10: Prescaler Reset Timer/Counter1 and Timer/Counter0 When this bit is written to one, the Timer/Counter1 and Timer/Counter0 prescaler will be reset. The bit will be cleared by hardware after the operation is performed. Writing a zero to this bit will have no effect. Note...
Witam, jestem początkujący, chciałem zaimplementować w swoim układzie (dodatkowo) funkcję pokazującą czas, czyli generalnie zegarek. Układ będzie oparty na procesorze ATmega*. Poczytałem trochę na forum o kwarcach i chciałem uporządkować wiadomości. Jeżeli chcę by nie było dysproporcji między aktualnym czasem a wskazaniem układu, to rozumiem, że potrzebuję...
W jakim środowisku działasz? Jesteś pewny nazwy tego wektora? Nie ma żadnych ostrzeżeń? Bo mnie się tu coś nie zgadza: [syntax=c]ISR(TIMER0_COMPA_vect){}[/synt... Tak chyba powinno być prawidłowo: [syntax=c]/* Timer/Counter0 Compare Match */ #define TIMER0_COMP_vect_num19 #define TIMER0_COMP_vect _VECTOR(19) #define SIG_OUTPUT_COMPARE0 _VECTOR(19)[/syntax]
I teraz pierwsze pytanie: czy da się zliczać impulsy z zewnątrz używając Timer2? Wtedy bym podpiął do nóżki TOSC. The Oscillator is optimized for use with a 32.768 kHz watch crystal. Applying an external clock to the TOSC1 pin may result in incorrect Timer/Counter2 operation. Jak źle (lub dobrze) jest z tym w praktyce nie wiem. Tylko jeszcze zostaje...
Ja wolę przerwania: Dim Sekunda as byte Config Timer1 = Timer , Prescale = 256 On Timer1 Odmierz_1s Enable Interrupts Enable Timer1 do loop end Odmierz_1s: Counter1 = Counter1 + 34286 Incr Sekunda Return Podałem ci "szkielet" programu do odmierzania 1 sekundy za pomocą timera1. Pamiętaj że procek musi go posiadać i musi być taktowany przez oscylator...
Zaglądając do dokumentacji mikrokontrolera i wybierając jedną z dwóch możliwości: 1. preskaler timera - jedno z ustawień preskalera powoduje zatrzymanie timera czyli "No clock source (Timer/Counter stopped)." 2. zerując bit TOIE0 (jeśli użyjesz timer0), czyli Timer/Counter0 Overflow Interrupt Enable
regfile = "2313def.DAT" $crystal = 11059200 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portb.5 , Db5 = Portb.4 , Db6 = Portb.3 , Db7 = Portb.2 , E = Portb.6 , Rs = Portb.7 'Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.1 , Db6 = Portb.0 , Db7 = Portd.6 , E = Portb.3 , Rs = Portb.4 Cursor Off Config Pind.6 = 1 Config Pind.0 = 0 Portd.0...
Źle zrozumiałeś ten zapis. Część odpowiedzialna za taktowanie co 10us wygląda tak: ... _pulse_in5: (at)genus(9) ; THIS FOR 10 US UNITS but approx. depends on XTAL ; you can remove the above call and tailor this routine ; when remarked 10 cycles/loop are needed and for 1 Mhz this is 10 uS ; for 4 MHz you need additional 30 cycles and the...
Czy to poprawny zapis do uśredienia wyniku z 60 pomiarów kodu co wyżej podawałem (*) pytam z czystej ciekawości czy to poprawna forma To nie jest 'uśrednienie',- to jest zbyteczne rozszerzenie rachunku wydajności, które jest równoznaczne z pomiarem impulsów w czasie 60 sec. Inaczej, zamiast odczytywać zawartość Countera1 po zliczeniu 250 4-milisekundowych...
Zamieszczam przyklad programu napisanego na kolanie, zmienia stan lini PC3 co okolo (LicznikMax*10ms ) - wychodzi co ok. 100 ms Gdybyś miał wątpliwości to podniosłem moje kości z krzesła przed komputerem po płytkę z AtMega32 i sprawdziłem w ukladzie - DZIAŁA! Kompilowany pod ICC626, polecam "Wizarda" ,pomaga w minute ustawić co potrzeba bez sięgania...
Różnica będzie taka że w trybie 14 nie uzyskasz zerowego wypełnienia, a w trybie 15 nie uzyskasz maksymalnego wypełnienia. Jakiś czas temu sam się na to naciąłem The procedure for updating ICR1 differs from updating OCR1A when used for defining the TOP value. The ICR1 Register is not double buffered. This means that if ICR1 is changed to a low value...
Witam Proszę o pomoc. Potrzebuję wykonać okład mierzący bardzo krótkie odcinki czasu. START podanie impulsu na któryś pin, STOP podanie drugiego impulsu na kolejną nóżkę. Procesor Atmega32 język Bascom. Jaki najmniejszy odcinek czasu mogę zmierzyć ? Jak wygląda procedura pomiaru czasu miedzy Start a Stop? Bardzo proszę o podanie fragmentu kodu. A czy...
Witaj, Ja też walczę z SPI od pewnego czasu, ale używam SPI w Atmega8515 jako Slave. Jeśli dobrze zrozumiałem, to masz problem z USI w Attiny26. Z tego co wyczytałem w pdf'ie i z tego co pamiętam jak się bawiłem tym prockiem, to USI można skonfigurować jako normalny SPI. Musisz tylko odpowiednio ustawić bity rejestru USICR. Nie wiem po co liczysz impulsy...
] Gdybym chciał jednak mierzyć załóżmy do 1kHz to wymaga aby zliczać przepełnienia? Dlatego napisałem..."Nie znaczy to jednak..." w złym obliczeniu 1 sek wartość wynosiła 61630, przy prawidłowym obliczeniu wynosi 34 286 uwzględniając czas 1sek, częstotliwość taktowania 8MHz i prescaler 256. Przecież czas (1 sec.) odmierzasz timerem0, który jest 8-bitowy...
Witam Chcę wykorzystać bootloader który minimalnie zmodyfikowałem. Oryginalnie może działać ze wszystkimi mikrokontrolerami które mają nie więcej niż 128kB flasha. To istotny fragment kodu: [syntax=c]static void try_start_app(void) { uint16_t crc = 0xffff; uint16_t addr; /* check in-flash CRC */ #if BINARY_LENGTH < 64*1024 for (addr=0; addr<BINARY_LENGTH;...
Bardziej pokręconego kodu na delay to chyba nie widziałem. Ten delay to widzę, że ma być "nieblokujący" chyba, że taki skomplikowany :D bo jeśli nie to nie można poprostu czegoś takiego: [Psuedokod] [syntax=c] volatile int counter; delay(x) { counter = 0 while(counter<x){/* waits */} } ISR() { count++; } [/syntax]
A nie powinieneś czasem użyć bitu OCF1 i przerwania "0x006 TIMER1 COMPA Timer/Counter1 Compare Match A"?
Wygoda, wolę kręcić niz kombinowac z przyciskami, zwłaszcza te strt/stop. Chodziło mi o to że nie ma płynnej regulacji w locie (a jest w opisie). Takie zaglitch-owaneraczej trudno nazwać płynną i w locie. Płynna to nie, w locie to tak (raczej tak) PS nie pytałem o R-MIK tylko o ten projekt. A pytania zadałem bo IMO nieuczciwie kolega (at)gdL prezentuje...
Po przepełnieniu licznika on się zeruje automatycznie? W większości trybów licznik zeruje się podczas przepełnienia. Wyjątkiem są niektóre tryby PWM, np. Phase Correct PWM Mode: The phase correct PWM mode is based on a dual-slope operation. The counter counts repeatedly from BOTTOM to MAX and then from MAX to BOTTOM.
atmega counter atmega bascom counter atmega external counter
porty otwarte przekładnia hydrostatyczna instrumenty elektroniczne
Schemat serwisowy Doogee V20 LRO - dostępność i alternatywy Filtry do Scanii: Producenci i Wybór