Dlaczego jak napisze: On Timer0 Timer0_int Disable Timer0 nop nop nop Tirf.0=1 'Ustawiam flagę oznaczająca rzadanie przerwania od Timer0 nop nop nop Enable Timer0 nop nop Timer0_int: nop nop Return to program nie wykonuje przerwania po wykonaniu instrukcji Enable Timer0? Czy ustawienie bitu tirf.0 jest niemożliwe programowo? Czy to wina Bascoma?...
Witam. Schemat całego układu: Przed położeniem uC do snu ustawiam stany wysokie na bazach tranzystorów (zmierzyłem prąd samych tranzystorów, poniżej 0.00uA bo miernik nie chwyta). Ustawiam wszystkie pozostałe piny w stan wysoki oprócz: pinów przycisków S1-S4 które mają być masą dla pinu przerwania INT0 (który ustawiam jako wejście i podciągam wewnętrznie),...
Witam Właśnie przeczytałem rozdział manuala M8 dot. pracy T/C0 i rejestrów odpowiadających za timer, tylko nie wiem jak zrobić, aby timer odmierzał wartość 1 sekundy .... ;| Otóż policzyłem, że wg tego co mam to: F-CPU = 8MHz Prescaler = 64 MAX_VAL = 256 (bo 8-mio bitowy) więc: TOV ck = (F_CPU/Prescaler)/MAX_VAL = 488 czyli wynika że w ciągu jednej...
Witam. Projektuje właśnie zegar widmowy i mam do rozwiązania następujący problem... Wyświetlanie zamierzam zrealizować dzieląc "obszar rysowania" na n równych częsci. Stabilizację obrazu zrobiłem za pomocą halotronu podłączonego do INT0. W przerwaniu ustawiana jest flaga rozpoczęcia wyświetlania a opóźnienia generowane są fukncją waitms... Właśnie to...
Mam takie coś. Co jest nie tak? $regfile = "m8def.dat" $crystal = 8000000 $sim Config Timer0 = Timer , Prescale = 64 Config Portd = Output Portd.0 = 0 Portd.1 = 0 Portd.2 = 0 Dim Sekundnik30 As Byte Dim Minutnik As Byte Dim W As Byte Led1 Alias Portd.0 Led2 Alias Portd.1 Led3 Alias Portd.2 Stop Timer0 Timer0 = 0 Do Start Timer0 Wait 1 Led1 = 1 Wait...
Witam robie stacje lutowniczą z atmegą8 napisałem taki kod w bascomie, czy bardziej doświadczeni koledzy mogli by na nieo zerknąć i wytknąć mi poważne błędy jakie popełniłem. Temperatura z termopary jest brana za pomoca mac6675 i spi, uśpienie powinno się włączyć po minucie leżenia kolby nieruszanej i zmniejszyć ustawiona temp do 160 stopni, po podniesieniu...
Witam Mam taki program w symulatorze działa tak jak bym chciał czyli po nacisnięciu przycisku dioda sie zapala i po kilku sekundach gasnie ale po wgraniu do atmegi 8 niedziała prawidłowo czyli diode można zgasic i zapalić ale już nie gasnie po kilku sekundach.Czy ktoś wie czemu??? $regfile = "m8def.dat" $crystal = 1000000 Config Portb = &B11111111...
Z bascomem zacząłem jakiś miesiąc temu, w C zacznę programować jak jeszcze trochę poduczę się bascoma (już zacząłem, to skończę). Napisałem taki program: $regfile = "m8def.dat" $crystal = 1000000 Config Portb = Input Config Portd = Output Config Portb.0 = 1 Config Portb.1 = 1 Config Portb.2 = 1 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3...
Czy Kolega będzie może wiedział co jest nie tak od strony programistycznej ? Tzn. jeśli wyświetlam stałe wartości to jest ok, podobnie jak wyświetlam w pętli For... Next od 1 do 59. Dodałem jeszcze obsługę LCD, żeby widzieć, co się dzieje z czasem. Ale jak podepnę do tego PCF8563 i odczytuje czas z niego, a dopiero później wysyłam do SAA1064 to jest...
witam Mam do zrealizowania coś takiego: Wejścia INT0 oraz Int1 muszą reagować na pojawiające się na nich sygnały (zbocza narastające ) po czym muszę zliczać czas trwania stanu wysokiego na powyższych wejściach gdy pojawi się zbocze opadające na int0,1 liczenie czasu ma być przerwane i wartość ta zapamiętana. W skrócie jest to pomiar czasu trwania stanu...
Nie wiem dlaczego Timer0 nie generuje przerwania przepełnienia licznika. Zegar 12MHz Preskaler 1024 Każde przerwanie zmienia bit głośnika na przeciwny (XOR) czyli częstotliwość dźwięku to częstotliwość przerwań podzielona przez 2. Głośnik ma zakres od 20Hz - 20kHz Częstotliwość oczekiwana: f = 12MHz / 1024 / 2 = 5860Hz Dźwięk się nie pojawia niezależnie...
Jak w temacie. Podłączyłem do atmegi kwarce 32768Hz, Ustawiony jest tylko fus CKOPT (dołącza wewnętrzne kondensatory do kwarcu), CKSEL nie ruszane (powinny być 1001 ale takie ich ustawienie zawiesza procka, jest więc wartość domyślna 0001 czyli wewnętrzny RC 1MHz). Program działa ale nie moge wyregulować timera tak żeby odmierzał sekunde. Postanowiłem...
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. Mam problem ze startem TIMER'a Program: [syntax=basic4gl]$regfile = "m8def.dat" 'najpierw określamy typ proca $crystal = 16000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portd.0 , E = Portc.1 , Rs = Portc.0 Config Pinb.1 = Output Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down...
Witam. Koledzy trochę skomplikowałem sobie życie. Zaprojektowałem i wykonałem już płytkę i teraz widzę że mam problem. Otóż potrzebuję na wyjściu OC1A generować sygnał pwm ale TIMER1(16-bit) jest mi potrzebny do generowania przerwania co 1s. Czy dało by radę generować sygnał pwm z timera0 ale na wyjściu OC1A? Port PD.4 mam zajęty. A może nie komplikować...
Moim celem było aby mikrokontroler odliczał w górę co sekundę i wynik pokazywał na wyświetlaczu - pierwsze podejście do timer0. Początkowo sam obliczyłem wartości preskalera dla 8MHz, jednak na wyświetlaczu liczby pojawiały się ok 100 razy za szybko. Zastąpiłem swoje obliczenia tymi z tej strony: jednak nie rozwiązało to problemu. Próbowałem linijkę...
Witam, jestem w trakcie wykonywania projektu na podstawie: W tym projekcie jest podany kod źródłowy, ale ja piszę własny od podstaw w BASCOM. Doszedłem do timera i trochę stanąłem w miejscu. Musze ustawić jakoś Timer, tak żeby aktywował on się po przyciśnięciu przycisku START i co sekundy zmniejszał ilość sekund, aż dojdzie do 00:00. Po przyciśnięciu...
Witam. Czytałem wiele na ten temat, ale nie rozwiło to moich wątpliwości co do zastosowania timera0 w miejsce Waitms. Oto część programu w którym chcę wykorzystać Timer0: Oczywiści to tylko przykład. [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 8000000 Dim Licz_8ms As Byte Declare Sub 800_ms Config Timer0 = Timer , Prescale = 256 Enable Timer0...
Witam. Natknąłem się w internecie na program w który bierze udział Timer0 : [syntax=basic4gl]$regfile = "m8def.dat" 'Info dla kompilatora. $crystal = 16000000 Odmierz_1s: Timer0 = 6 Incr Liczba_przerwan_tim0 If Liczba_przerwan_tim0 = 50118 Then Liczba_przerwan_tim0 = 0[/syntax] Czy taką liczbę zliczy Timer0 ?
Witam, Mam Timer1 zajęty do bardziej zaawansowanych pomiarów. Muszę niezależnie wygenerować częstotliwość około 5Hz na pinie. 1. Jak wygenerować tak małą częstotliwość Tim0 lub Tim2 bez udziału przerwań? 2. Jak w CTC ustawić, żeby po wyłączeniu Timera wartość na pinie pozostała niska (L)? Pozdrawiam.
Będzie ci działało lepiej niż na starym już niestety ATmega8. Zdecydowanie lepiej. Wprawdzie jako początkujący może nie od razu odkryjesz wszystkie możliwości czy z nich nie skorzystasz - ale zapewniam cię , że w miarę jedzenia apetyt rośnie i szybko zauważysz że już chociażby to, że Timer0 ma dodatkowe tryby pracy w porównaniu z ATmega8 to już baaaardzo...
Witam. Potrzebuję pomocy z dostosowaniem kodu napisanego na atmegę8 na attiny13. Domyślam się że największym problemem będą tutaj timery, ale jestem w ich temacie puki co zielony, a potrzebuję koniecznie(i niestety pilnie) odbiornika IR który zmieści się i będzie działał na attiny13. Jak całość kodu działa rozumiem(jest świetnie opisana komentarzami)...
Witam Mam prośbę o rozjaśnienie pewniej sprawy - mam do Atmegi8 podpięty odbiornik IR (SM3385P) cudo to zostało wymontowane z jakiegoś odbiornika Czujnik podpięty jest pod PB0 - do tego posiadam pilot TTS35AI - od zestawu SkyStar2 - do przetestowania wykorzystałem program ze strony Kod poniżej [syntax=c] //--------------------------------------...
Witam, Czy nakierowałby mnie ktoś w jaki sposób wykorzystując PWM można zrealizować płynne sterowanie jasnością diody LED przy użyciu pilota nadającego w standardzie RC5? Do tej pory udało mi się zrealizować płynne sterowanie jasnością diody wykorzystując PWM i microswitche - oto kod: [syntax=c]#define F_CPU 8000000UL #include <avr/io.h> #include...
jestem początkującym mam odbiornik podczerwieni sfh5110-36 i atmege8 wszystko podłączyłem jak na schemacie wgrałem też plik //--------------------------------------... // Plik "main.c" // // KURS AVR-GCC (abxyz.bplaced.net) // // Dekoder RC5 // // (schemat i opis działania w artykule) // testowanie na atmega8 (8MHz) //--------------------------------------...
Timer- np. Timer1- jako licznik zlicza impulsy zewnętrzne. Podane na odpowiednią końcówkę- T1 w wypadku ATmega8. Nie potrzebuje żadnego preskalera- bo preskaler dzieli impulsy z zegara- a tu nie ma co dzielić. Ustawiamy bity CS10-CS12 na external clock source- falling lub rising. Czy ustawiamy końcówkę T1 jako wejście- nie pamietam. Można ustawić. Ilość...
Witam. "Przerabiając" książkę p. Tomasza Francuza "Język C dla mikrokontrolerów AVR" natknąłem się na problem obsługi klawiatury matrycowej w przerwaniach. Klawiatura ma wykorzystywać kolejne ustawianie stanu niskiego na pinach na potrzeby multipleksowania. Niestety wciskanie przycisków klawiatury nie powoduje żadnej reakcji. Co ciekawe (dla mnie) po...
Szkoda. Wprawdzie potrzebowałem 24MHz i ucieszyłem się że ten na 20MHz chodzi i na 24MHz. Ale liczyłem na to że jak zdobędę ten na 24MHz to łyknie ze 30MHz. Szczególnie że okazało się że 24MHz mi nie wystarczy. Wczoraj przypadkiem odkryłem w datasheecie dodatkowe rozkazy (muls, mulsu, fmul, fmuls, fmulsu, movx, lpm, Rx, Z, lpm, Rx, Z+). Pomoc BASCOMa...
A czego miałem szukać w nocie katalogowej? Ewentualnych odpowiedzi na ewentualne pytania dotyczące kodu... U mnie CALL oznacza rcall. OK, ale i tak bez ustawienia wskaźnika stosu się nie obędzie. Oto poprawna i sprawdzona wersja na timerze : #define F_CPU1000000 .nolist #include <m8515def.inc> ; Prohibits use of non-implemented instructions (ATmega8515)...
Witam, zbudowałem sobie układ diff -u Kopia ds1820tousb-20100717/Makefile ds1820tousb-20100717/Makefile --- Kopia ds1820tousb-20100717/MakefileTue Mar 23 07:55:24 2010 +++ ds1820tousb-20100717/MakefileFri Jul 1 22:05:55 2011 (at)(at) -8,7 +8,7 (at)(at) INCDIR= . # target mcu (at90s8515, atmega16, atmega8515...) -MCU= attiny45...
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...
Przerwania mogę obsługiwać na INT0 i INT1 a potrzebuję jeszcze trzeciego ^ To jest tylko jeden rodzaj przerwań - od zmiany stanów zewnętrznych cna odpowiednio oznaczonych wyprowadzeniach (zajrzyj do noty katalogowej... ;) ), nie ma nic wspólnego z przerwaniem Timera, które wystarczy jedno... Proszę bardzo, oto dramat w wielu "wątkach" do testów - wiem...
Niestety nie pomogło, poniżej pokażę kod główny plik rs.asm .nolist .include "m8def.inc" .list .def tmp=R16 .def tmp2=R19 ;rejestry gdzie laduje argumenty funkcji .def arg1=R17 .def arg2=R18 .equ TIMER_OFFSET=0x00 .equ TIMER_PRESCALER=0x2 .equ TIMER_STOP=0x0 ldi tmp,HIGH(RAMEND) out SPH,tmp ldi tmp,LOW(RAMEND) out SPL,tmp ldi...
Mam taki problem, że zrobiłem projekt Odbiornika Morsa na ATmedze8. W oryginalnym projekcie jest kwarc 10 MHz, a ja użyłem 10.240 MHz gdyż taki miałem w domu, a sklepu elektronicznego w mojej okolicy nie ma. Jak podłącze ten odbiornik do komputera i z programu morsik coś wysyłam to np. "adrian" dekoduje poprawnie, a "jarek" już nie, tylko na LCD pojawia...
Potrzebuję pomocy w konfiguracji Timer1 (ten mam wolny) ewentulanie modyfikacja obecnej konfiguracji Timer0. Obecna konfiguracja jest dla odliczania odpowiedniego czasu dla ramek RC5 odbieranych przez odbiornik TSOP322 przy taktowaniu procesora z F_CPU=8MHz, w celu oszczędności energii chcę zrobić odbieranie przy częstotliwości 1MHz. Jak widać z obsługi...
Witam, Pisze kod do projektu termometr na czujniku LM35 i Atmega8. Wartości zmierzonego napięcia z czujnika zapisuję w zmiennych TEMP oraz DZIESIATKI i JEDNOSCI. Mój problem polega na tym, że nie wiem jak mam zadeklarowac zmienne DZIESIATKI i JEDNOSCI aby mozna było te wartości przekazywać do obsługi przerwania ISR(TIMER0_OVF_vect) w którym chcę wyświetlać...
Wielkie dzieki za te informacje. Jak tylko znajde wolna chwile sprobuje ponownie zajac sie tym ATmega8535. Ale mam jeszcze jeden problem. Wlasciwie to moze nie problem, ale moze ktos wyjasnilby mi jak to jest z Timerami w tych AVR-ach. Przykladowo, Timer0 daje przerwanie np. co 10us, ale procedura wykonywana w tym przerwaniu trwa np. 15us. Co wtedy...
Programowy PWM jest w nocie Atmela 136. Deklarują że obsłuży do 23 kanałów. Przerobiłem ten program- sterowanie jest z sygnałów serw- czyli sygnał 1-2ms jest przerabiany na PWM. Wklejam- ale ew. przeróbkę to zrób sam- albo "z małą pomocą przyjaciół". Bo ja- to po nowym roku. [syntax=c] /* \section OA Original author Andy Gayne is the original author...
Witam. Chce uruchomić dekoder kodu Sirc(sony) na atmega8. Korzystam z tego rozwiązania [url=]Link, mam podłaczony TSOP1736 do wejścia INT0, zmianie pinów w kodzie na INT0 dla atmegi8 i odpisaniu F_CPU na 8mhz, za żadne skarby nie chce mi to się uruchomić, czy ktoś jest w stanie mi pomoc? Zaznaczam że jestem początkujący. Tak wygląda mój kod, po przerobieniu....
Witam. Jak widać jest to mój pierwszy post na tym forum. Na wstępie chciałbym prosić o wyrozumiałość - jeżeli temat znalazł się w nieodpowiednim miejscu, popełniłem jakiś błąd w składni tytułu czy coś tego typy, prosiłbym moderatora o poprawkę i pouczenie jak w przyszłości uniknąć powielenia problemu. Jestem w trakcie pisania pracy inżynierskiej dotyczącej...
Doczytalem na internecie ze ta biblioteka nie działa na Atmega8 bo korzysta ż Timer0 który fizycznie nie istnieje w tej Atmedze. Wiec zostaje mi napisanie wszystkiego od nowa lub kupno innej atmegi :P
Witam, skonstruowalem zegar widmowy, udalo mi sie zaprogramowac napis (wyglada przyzwoicie) ale pojawil sie problem, wyswietla mi sie, tzn gdy wlaczam diody na wyliczonych pozycjach (do 60) jest okej, natomiast gdy probuje wyswietlic cos na wyzszych katach (powyzej 60) jest problem i nie wyswietla sie nic, dziwna sprawa bo programowo robie tak samo...
A spróbuj to: [syntax=c] /* Program do przetwarzania sygnału z 6 sygnałów 1-2ms (do sterowania serw modelarskich) na wypełnienie PWM. kwarc 11059200Hz procesor ATMega8 Wypełnienie PWM- 0 w okolicach sygnału 1.5ms Zwiększa się od 0 do max w zakresie 1.5-2ms Zwiększa się w zakresie 1.5-2ms od 0 do max Co 20us sprawdzamy stan pinów PORTB na który są podawane...
Jestem jak w jakiejś matni. Czytam o tych uC kilka dobrych miesięcy, a praktycznie nic nie ruszyłem. Mam płytkę stykową z Atmegą. LM335 podłączony do pinu PC5. Po kompilacji tej funkcji, którą podałem wyświetlają mi się zera. Jak skopiowałem gotowca to pokazywał dobrą temperaturę, ale tak się 0 nauczę. Uczę się, próbuje cokolwiek zrobić, ale na razie...
Witam serdecznie. Niedawno postanowiłem przesiąść się z Bascoma na C. Postanowiłem napisać bufor kołowy do wysyłania znaków przez USART. Znaki niby się drukują, ale, jeśli rozmiar bufora jest ustawiony na 2 bajty to po drugim znaku dostaje "śmieci", jeśli na 3 bajty, to po trzecim, itd. main.c
i poczytaj ten temat: OK, teraz jestem krok do przodu, ale program nie reaguje na TWI_start. twi.h [syntax=c]#include <avr/io.h> #include <avr/interrupt.h> #include "twi.h" #include "usart.h" void Twi_Init(void) { TWBR = 0x20; // ((8MHz/100kHz)-16)/2=32 } void Twi_start(void) { TWCR |= (1<<TWINT) | (1<<TWSTA) | (1<<TWEN);...
Dzięki za odpowiedź. Już kilka prostych programików na tym uC popełniłem i nie miałem większych problemów. Ten był pierwszy który modyfikował Fuse Bity. Jedynym efektem działania programu jest miganie LED B1 i B2 z częstotliwością <> 10Hz. Poniżej całość programu: [syntax=c] #include <stdio.h> #include <avr/io.h> #include <util/delay.h>...
Witam. 1 - Stosuj aliasy. Np: drzwi alias portd.0 Później w kodzie po prostu drzwi = 1 lub drzwi = 0. bardzo poprawia czytelność kodu. 2 - Odczyt z przetwornika ADC powinien być do zmiennej WORD (przetwornik jest 10 bit). 3 - w pętli głównej masz instrukcje Wait. Powstaje problem ze sprawdzaniem stanu wejść, pętla może się wykonywać bardzo długo, w...
Witam. Program w bascomie proc AtMega8535 clk 8MHz, Stacksize=32, Framesize=16, Sstack=8. Program zbiera info z DS18B20, ADS1100. Timer1 generuje przerwania co sek., by zliczyć imp na timer0. Program zapamiętuje wartości max i min odczytanych danych(trzyma je w ramie). Na LCD 4*20 wyświetla min, max i watr chwilową tak, ze u góry jest wart. chwilowa,...
Dokładnie tak. Pytanie z jakiego uP korzystasz? Np.: tiny2313 ma 4 wyjścia OC: OC0A i OC0B dla Timer0 oraz OC1A i OC1B dla Timer1. Dla mega8 masz trzy wyjścia OC: OC1A i OC1B dla Timer1 oraz jedno dla Timer2 (OC2) Co do wejść oznaczonych TOSC1 i TOSC2 - w kontrolerach ATmega służą do podłączenia kwarcu zegarkowego (32kHz). Przy wykorzystaniu licznika...
Wybaczcie moje marudzenie ale takie makro wymaga co najmniej dodatkowych dwóch "difajnów". Proponowane "ułatwienie" spowodowało że musimy zamiast 11 znaków wklikać 50 i na dodatek w czasie analizowania skakać po dokumencie aby zobaczyć co oznacza makro a później co oznaczają poszczególne definicje z makra. Wszystko zalezy, z jakiego edytora korzystasz,...
Cześć, uczę się wykorzystania timerów w mikrokontrolerze Atmega8A. Chcę aby dioda migała co sekundę. Wykorzystuję do tego 8 bityowy timer0. Taktowanie ustawione mam na 8000000Hz, a preskaler na 1024. Chcę, żeby przepełnienie występowało co sekundę czyli żeby dioda migała co sekundę, ale tak się nie dzieje. Zmieniam wartość TCNT0 na 30, bo taka wychodzi...
zobacz sobie temat: program będzie bardzo podobnie wyglądał. Chodzi mi o Timery. Dodano po 2 ale czy te diody mają się świecić cały czas to znaczy, że jeśli będzie więcej impulsów niż 200, to mają się świecić wszystkie 3 diody czy tylko 3 dioda?? Tak na szybko napisałem( nie testowałem ale powinno działać): Dioda świeci się tylko jedna w danym momencie...
Przepraszam,już wklejam .nolist .include "m8def.inc" .list .def tmp=R16 ;rejestry gdzie laduje argumenty funkcji .def arg1=R17 .def arg2=R18 ;do tch dwoch laduje dwa bajty ktora zciagam ze stosu gdy jestem ;w funkcji .def highStack = R1 .def lowStack = R2 ldi tmp,HIGH(RAMEND) out SPH,tmp ldi tmp,LOW(RAMEND) out SPL,tmp ldi...
Witam szanownych forumowiczów. Wykonywany przeze mnie projekt to prosty sterownik lampek LED RGBW. Lampki sterowane są poprzez 4 kanały PWM, których współczynnik wypełnienia regulowany jest potencjometrami podłączonymi do 4 wejść ADC mikrokontrolera. Wyjścia PWM ustawione są w trybie fast PWM o częstotliwości 490Hz. No i poprawnie wykonana operacja...
emarcus zrobiłem tak jak kazałeś w avr studio i wygląda na to że jest ok!:) dodatkowo napisałem prosty program wykorzystujący przerwanie od timer0 dioda miga co 1,024s Rzeczywiście avr studio łączy się z prockiem, mimo to zaprogramowałem atmege z bascoma (stk 500 options) wcześniej próbowałem nadpisać w avr studio i co się okazało?? otóż nie mogłem...
To zmienia moją koncepcję :( obecnie mam ustawione tak: Timer1=Timer (odlicza mi jedną sekundę) Timer0=Counter (zlicza mi impulsy). Chciałem dodać do tego programu zegar z datą, ale wydaje mi się że sekunda z Timera1 na kwarcu 4Mhz nie jest zbytnio dokładna. Może jakaś podpowiedź jak najprościej przerobić program żeby mieć ten zegarek? (chciałbym użyć...
ok, jako, że nie wiedziałem gdzie dopisać usart transmit, skorzystałem dla sprawdzenia z gotowego kodu, efektem tego było wysyłanie znaczków, które trudno nawet jest nazwać , może mi ktoś wytłumaczyć dlaczego tak się dzieje ?? źródło kodu: [syntax=cpp] #include <avr/io.h> #include <avr/interrupt.h> //ustawiona częstotliwość - 18432000 #define...
Potrzebuje emulator DS18B20 na atmega8 - mam na PC program do odczytu temp i chciałem w tym programie dodac inne parametry ( np wilgotnosc ) ale nie zmieniajac programu - w scrachpadzie bede wisyłał inne dane nie temperature. ( w bajtach temperatury lub bajtach uzytkownika wolnych 2szt) Aktualnie używam "lampomitari" , ale napisalem przeróbke programu...
Witam! To mój pierwszy post, więc proszę o wyrozumiałość. Skonstruowałem licznik impulsów - częstościomierz, w oparciu o projekt AVT5025 (Mikroprocesorowy wykrywacz metali). Sonda wykrywacza umieszczona będzie przy bramie wjazdowej na parking i jeśli pojawi się nad nią samochód to na danym pinie mikrokontrolera pojawi się stan wysoki. Układ ma po prostu...
Witam wszystkich, robię mały projekt do którego używałem Atmegę8. Zaczyna mi brakować pamięci więc stwierdziłem, że wymienię ją na Atmegę328. Niestety jest trochę zabawy z przerobieniem kodu, po pierwsze w Atmega328 nie można używać PD0 itp, tylko PORTD0. Po drugie timery ustawia się innymi rejestrami. Ogólnie program sobie przerobiłem, niestety została...
Witam prosiłbym o napisanie jak ustawić Fuse bity w mikroprocesorze Atmega8 do programu: :'Piornik02.bas 'Różnica pomiędzy 01: w czasie pisania tekstu pozostaje on cały czas w okienku wyświetlacza 'oraz buzer przepełnienia pamięci jest z własnym generatorem (buzer z Portd.7 do +). 'Program do wyświetlania ściągi. 'Pozwoli zapisać treść w postaci 94...
To jest fragment kodu, którego używałem , żęby zrobić obsługę licznik, ale nie działa w symulacji $sim $regfile = "m8def.dat" 'Informacja dla kompilatora. $crystal = 8000000 'Też dla kompilatora,zastosujemy kwarc zewnętrzny 10MHz. Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E =...
Witam Mam oto taki problem jak ww w temacie. Napisałem program na odmierzanie czasu przerwanie co 1 sekundę i ogólnie po wgraniu programu wszystko działa czas leci i jest wszystko OK. Lecz po chwili a dokładnie 9-14 sekundach wyłącza mi się lcd. Nie wiem w czym jest problem:( A o to program $regfile = "m8def.dat" $crystal = 8000000 '$sim Config...
nowsze bascomy (np. 1.11.9.8) mają wbudowaną obsługę serw: CONFIG SERVOS Configures how much servo’s will be controlled. Syntax CONFIG SERVOS = X , Servo1 = Portb.0 , Servo2 = Portb.1 , Reload = rl Remarks Servo’s need a variable pulse in order to operate. The CONFIG SERVOS directive will set up a byte array with the servo pulse width values...
Witam. Piszę program obsługujący 4 wyświetlacze 7-segmentowe. Procesor to atmega8, program pisany w WinAVR. Wyświetlacze mają za zadanie wyświetlanie tego co znajduje się w zmiennej g_Bufor. Problem polega na tym, że chcąc wpisać dane do buforu w pętli while(1) układ nie reaguje/nie następuje zmiana początkowej cyfry określonej w linijce: [syntax=c]...
Witam ! Wykonalem niedawno sterownik pralki Amica, na atmega8. Wszystko super dziala z jednym szczegołem. Aktualnie regulacja predkosci silnika zrobiona jest na zasadzie włączania triaka z odpowiednim opóźnieniem względem zera sieci. To sie niestety nie sprawdza bo zaleznie od obciązenia bębna silnik ma różne obroty, i teraz pozostaje sprawdzanie napięcia...
Witam. Pewnie zabrzmi to głupio aczkolwiek lubię się upewnić czy pewne rzeczy robię dobrze czy też źle. Jako iż nie dysponuję w tym momencie pod ręką programatorem to nawet nie mogę sprawdzić czy dobrze piszę czy nie. Rozchodzi się o zmianę programu napisanego na Atmegę16 tak aby pasował do Atmegi8. Jest to nadajnik podczerwieni o określonej częstotliwości...
Witam, na początek dodam że dopiero zaczynam z Bascom'em. Mam problem w przepisaniu programu z ATTINY2313 na ATMEGA8. Oryginalną wersję zamieszczam poniżej: '************* Konfiguracja uC ***************** '***************************************... $regfile = "attiny2313.dat" $crystal = 16000000 Config Portb = &B11111111 : Portb...
Witam Znalazłem na elektrodzie poniższy kod: $regfile = "m8def.DAT" Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.4 , Rs = Portc.5 Config Portd.0 = Input Config Portd.1 = Input Config Portd.2 = Input Config Portd.3 = Input Config Portd.5 = Input Config Portb.4 = Output Cursor...
więc tak, schemat i fotka: wszystko działa, tylko tak jak pisałem z jakiegoś powodu procesor co jakiś czas wraca do początku maina. wszystkie zmienne zostają zresetowane, wpomniany MCUCSR nie rejestruje resetu. i dodam jeszcze kod [syntax=c] #define F_CPU 12000000L #include <avr/io.h> #include <stdio.h> #include <stdlib.h> #include...
Piszę ponownie, ponieważ jako, że z układem nie mam już problemu mam problem z napisaniem programu. W swoim rozwiązaniu chciałbym użyć dwóch przerwań od TIMER0 oraz zewnętrzne INT0. Teraz tu moje pytanie czy te dwa przerwania zaimplementowane w ten sposób jak poniżej, nie wpłyną na niedokładność pomiaru i czy jest może na to lepszy sposób. Mój kod:...
To może tak, kod w tej chwili wygląda tak: #define F_CPU 1000000L #include <avr/interrupt.h> #include <inttypes.h> #include <util/delay.h> #include <avr/pgmspace.h> #include <avr/io.h> #define LED_A 0 #define LED_B 1 #define LED_C 2 #define LED_D 3 #define LED_E 4 #define LED_F 5 #define LED_G 6 prog_uint8_t cyfry[10] PROGMEM...
Stworzyłem następny program. Położenie serva jest zmieniane za pomocą dwóch przycisków pilota RC5. Oto on: 'Jedno servo sterowane pilotem, 60 kroków $regfile = "m8def.dat" $crystal = 10000000 Config Pinb.0 = Output Config Int0 = Low Level Config Rc5 = Pind.2 Config Servos = 1 , Servo1 = Portb.0 , Reload = 10 On Int0 Pobr_rc5 Dim Address As Byte , Command...
Witam, mam następujący algorytm: short output; main() { int i; const short A=0x7e66; /* A=(1.975/2 * 32768) */ short y no i mam sie nim posłużyć przy generowaniu sygnału sinusoidalnego z mikrokontrolera ATMega8. Wrzuciłem więc tak: int i; const char A=125; /* A=(1.975/2 * 255) */ char y i dzieją się cuda, a nie sinusoida. Pomoże ktoś?
blood dwarf . Lepiej jednak przeskalować dane sinusa, gdyż po przełączeniu w tryb Dual-Slope PWM musiałbyś też zmniejszyć częstość generacji przerwań z przepełnienia Timer0. Inaczej pewne wartości z tablicy by wypadły i PWM by nie miał szans ich wygenerować (mechanizm Glitch Free by zadziałał). I aby uzyskać taką samą częstotliwość sinusa na wyjściu...
chciałbym zliczać impulsy generowane przez transoptor szczelinowy mam taki kod ............ prosił bym o jakieś wskazówki bo to dopiero początki z mikrokontrolerami i niektóre rzeczy mnie przerastają Daj sobie spokoj z Wait, Waitms. Do naliczania przedzialow czasowych zastosuj drugi timer np. Timer0. Nie musi to byc koniecznie 1 sekunda. Dodasz odpowiedni...
Podłączę się do tematu. Konstruuję sterownik silnika prądu stałego - serwonapęd. W tym momencie mam gotowe podprogramy: - odczyt pozycji z enkodera - regulator PID (nie działa tak jakbym chciał, albo potrzebny jest tuning parametrów albo mam gdzieś błąd w kodzie) W tym momencie silnik lubi oscylować wokół pozycji zadanej. W tym momencie stanąłem na...
Może trochę odgrzewam temat, ale długo się ostatnio zastanawiałem, dlaczego powstały dwa bliżniaczo podobne uC? A co w tym dziwnego. ATmega8 to staruszek już dużą siwą brodą. Powstała o wiele nowsza jego wersja, posiadająca sporo a nie trochę udogodnień. Bodajże jednym z najlepszych jest Timer0, który ma w końcu więcej trybów pracy niż w staruszku...
Przebiegi wygladaja na wyjściu falownika tak: dokładnie widać gdzie jest początek tablicy. Te przebiegi to już po przerobieniu delay'a na wybieranie kolejnych elementów tablicy za pomocą Timer0.
Witam, mam problem z napisanym przez mnie kodem. Założenie jest takie, że przy puszczonym przycisku Timer1 skonfigurowany jako Fast PWM ma mi powoli rozjaśniać listwę RGB. W momencie przyciśnięcia swicha Timer0 ma odliczyć 5 sekund i PWM ma mi ściemnić listwę. Ma to działać dla 4-ech niezależnych od siebie kanałów. Póki co zacząłem zrobić Fast PWM i...
Może tak. Funkcja usypiająca: [syntax=c]void usypianie() { EICRA |= (0 << ISC00) | (0 << ISC01); //Przestawienie przerwania Int0 na aktywację stanem niskim (żeby móc wybudzić) sei(); power_all_disable(); //wyłącza zasilanie TWI, Timer0-2, SPI, USART0, ADC cbi(PORTB,2); set_sleep_mode(SLEEP_MODE_PWR_DOWN); sleep_mode(); }[/syntax] Mam nadzieję,...
[syntax=c]#define F_CPU 8000000L //Częstotliwość taktowania #include <avr/io.h> #include <avr/interrupt.h> #include "kod_binarny.h" char Znak; int main(void) { DDRB = Bx11111111; TCCR0 |= Bx00000101;//Timer0: sygnał z oscylatora, presklaer 1024 TIMSK |= Bx00000001; //Timer0: włączenie przerwania z Timera sei(); while(1) { Znak = Bx10010111;...
Witam. Problem pewnie jest banalny ale nie mogę znaleźć nigdzie rozwiązania. W ramach ćwiczeń buduję na ATmedze8 zegar. Mam problem z wybudzeniem mikrokontrolera ze stanu uśpienia SLEEP_MODE_PWR_SAVE przerwaniem. Chcę aby po uśpieniu wykonujące się co ok. 250ms przerwanie obudziło mikrokontroler i zmieniło zmienną. Wtedy chciałbym aby wykonała się główna...
Cześć. Mam problem z charlieplexing-iem. Otóż posiadam Atmegę 8 i potrzebowałem wysterować 20 ledów. Zrobiłem więc coś takiego Jak widać do sterowania diodami wykorzystuję pierwsze 5 pinów portu D. Następnie stworzyłem taki kod: [syntax=c]#define F_CPU 8000000L #include <avr/io.h> #include <avr/interrupt.h> #include "E:\GG dysk\PROGRAMOWANIE\Mikrokontrolery\AVR\B...
Kawałek kodu : #include <avr/io.h> #include <avr/interrupt.h> // funkcje obsługujące przerwania #include "lcd.h" // funkcje obsługujące wyświetlacz LCD // #define DDR_Out DDRB // konfiguracja portu i pinu wyjścia #define PORT_Out PORTB #define Out PB0 #define clr_out bit_set(PORT_Out, bit(Out)) // operacje na pin-u...
Witam. Nie mam już pomysłu na rozwiązanie mojego problemu. Program działa, ale przy przesuwaniu tekstu w tablicy do prawej AVR GCC generuje dużo mniejszy kod (1002 bajty) niż jeśli zakomentuję tę część pętli głównej programu (1366 bajtów). Kompilacja przechodzi bez warningów w obu wypadkach. Dodatkowo po zaprogramowaniu układu program nie wraca do głównej...
Niestety schemat mi nie pomógł. Ależ pomógł, bo nie znalazłeś w nim żadnych zależności dot. kasowania timera przy jego wyłączaniu poprzez ustawienie preskalera zero. Jest to logiczne, ponieważ gdyby licznik timera był automatycznie kasowany, to zmniejszałoby jego możliwości, bo nie można byłoby go "puścić dalej" Schemat preskalera pokazuje natomiast,...
Config Hitag = 64 , Type = Em4095 , tymczasem w dokumentacji : syntax for EM4095 prescale - The pre scaler value that is used by TIMER0. A value of 8 and 256 will work at 8 MHz.
Witam, Potrzebuję zrobić na TDA1543A i Atmega8 regulowane napięcie stałe w zakresie napięc podawanych przez TDA1543A. Znalazłem przykładowy program i zmontowałem układ, atmega wysyła dane lecz na wyjściach TDA mam jedynie napięcie stałe bliskie napięciu zasilania. Atmega8A taktowana kwarcem 12MHz. Próbowałem także 1MHz i 8MHz i nic to nie zmieniało....
Na przykładzie timera0 ;wektory przerwań .org 0x00 rjmp reset .org 0x09 rjmp przerwanie_timer0 reset: .def acc = r16 .def maska = r17 ;### START TIMER0 in acc, TCCR0 ldi maska, 0b00000111 ; 3 ostatnie bity to ustawienie preskalera or acc, maska out TCCR0, acc in acc, TIMSK ldi maska, 0b01000001 or acc, maska out TIMSK, acc ; odblokowanie przerwania...
Witam Piszę program, który ma mierzyć długość impulsu podawanego z zew. źródła jakim jest odbiornik RC, częstotliwość impulsów to 50Hz, a ich długość mieści sie w przedziale 1ms-2ms. To mój pierwszy program na AVR w którym obsługuje przerwania zew. i mam pewien problem, program już napisałem, sprawdziłem go na symulatorze i wydaje się działać poprawnie,...
Jako, że od niedawna sam uczę się dopiero C, to proszę bardzo poniżej, najpierw kod do odbiornika RC5. Sprawdzony, krótki i odporny na zakłócenia oraz kody z innych pilotów - działa wyśmienicie i w ciekawy sposób wykorzystuje bit TOGGLE: // zmienne do obsługi kodów IR w standardzie RC5 volatile uint8_t address; // adres RC5 volatile uint8_t command;...
Witam Mam problem z komunikacją między dwoma uC. Dane są odbierane, jednak nie zgadzają się z wysyłanymi. Atmega32 - pełni funkcję Mastera #define VUART 38400 #define VUBRR F_CPU/(VUART*16)-1 #define T0_start 1 #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #include <avr/iom32.h> #include <stdlib.h>...
zamierzeniem programu, jest możliwość wyłączenia działania programu w dowolnym momencie przez naciśnięcie przycisku na porcie D2. Jest to mój pierwszy program z użyciem TIMER0 i nie wiem gdzie jest błąd, program po wgraniu do atmega8 kompletnie nie działa, tzn nawet dioda się nie zaświeci. Może mi ktoś wytłumaczyć o co chodzi z tym TIMER0? $regfile...
Właśnie mam już opracowany program pod Windows komunikujący się z modułami. Wykorzystałem następującą konstrukcję ramek: Każde 8 bit jest jakby jednym znakiem RS-232. Ramka ma stałą długość, więc mam nadzieję, że nie będzie potrzeby wprowadzania dodatkowych znaków typu '\n', czy '\r'. Nie wiem, czy to się uda, ale chciałbym, aby przy pierwszym odebranym...
Witam nie wiem jak rozwiazac problem z wyswietlaczem 7 segmentowym 4 cyfry a mianowicie wszystko bylo proste jak katody wyswietlacza byly podłączone do całęga portu wtedy stosowalem [syntax=c]PORTC = pgm_read_byte( &cyfry[cy1] );[/syntax] ale niestety w tym układzie co złożyłem pinologia jest następująca segmenty: A -> PORTD3 B -> PORTD1 C...
... ale niestety mądrala nie przytoczył jak powinno się to zapisywać... ) Oj, uważaj bo ktoś może poczuć się urażony i raportować post :) Na temat F_CPU w sieci można znaleźć wiele: F_CPU – gdzie definiować? Chciałbym dowiedzieć się co znaczą te TCCR2, OCR2, TIMSK, jak liczyć te przerwania i dlaczego timer po skopiowaniu tego kodu nie liczy faktycznie...
Witam, Mam problem z poniższym programem. Timer0 odlicza 1ms i generuje przerwanie. W programie obsługi przerwania zmienna "znak" przyjmuje wartość znak=15, a chyba powinna przyjmować wartość znak=34. Dlaczego program nie uwzględnia mi przypisania znak=34, które znajduje się w pętli for? Pozdrawiam Listing programu: [syntax=c].................................
Witam, Mam problem z obsluga przerwan od przepelnienia licznikow. W projekcie wykorzystuje 3 liczniki w atmega8, timer2 wykorzystuje do generacji sygnalu 40kHz natomiast pozostale dwa maja zliczac czas od nadania sygnalu do otrzymania echa. Narazie napisalem osobną obsluge kazdego z timerow i dzialalo. Po wrzuceniu wszystkiego do jednego projektu dziala...