witam Na początek sprawdź Fuse Bits (taktowanie procesora) na jaką częstotliwość zegara jest ustawiony procesor. Potem już w programie zainicjuj magistrale TWI. Jak to zrobić, ano tak: void TWI_inicjacja(void) { // Czestotliwosc TWI(i2c) = 100kHz (max 100kHz) // ----------------------------------------... /* TWSR =...
Ja zawsze inicjuję wszystkie używane komórki pamięci ale ostatnio, na skutek drobnego błędu, program zaczął wyświetlać mi dane na LCD z obszaru, który nie był zainicjowany. Za każdym włączeniem zasilania na LCD były inne krzaczki. Mikrokontroler ATmega8.
Witam! W związku z powyższym kodem który zamieściłeś nasunęła mi się jedna uwaga która pewnie nie rozwiąże twojego problemu w jakimkolwiek procencie, aczkolwiek powinieneś sobie z niej zdawać sprawę. Chodzi mi o kasowanie flag przerwań np. tak jak w przykładzie: TIFR|=1<<TOV1; //wyzeryj flage od przepeln Wiadome jest że aby wyzerować flagę od...
Nie zgadzam się z Tobą! Według Twojego wzoru (błędnego to fakt) otrzymamy 104, taki błąd nie jest w stanie uniemożliwić transmisji co działo się w przypadku twojego kodu. To jedna sprawa. Druga, czytaj dokumentacje! W przypadku atmega8 adres rejestru UCSRC i UBRRH jest współdzielony, wybór dokonywany jest poprzez znacznik URSEL. Do czego zmierzam: w...
Proszę o wyjaśnienie mi pewnej kwestii a mianowicie: zrobiłem płytkę na której zamieściłem atmega8 (ma to być termometr cyfrowy do golfa ) układ wyprowadzeń jak na schemacie. Element Q5 będzie wymieniony na termometr dallas. Jak skonfigurować port c tego mikrokontrolera aby działał jako wyjścia. Robiąc to w ten sposób: Config Portd = &OUTPUT Portd =...
Czasem znajdujemy się w takiej sytuacji gdy nasze założenia projektowe nie pokrywają się z elementami elektronicznymi jakie posiadamy. Może zaistnieć konieczność zwiększenia wyjść logicznych mikroprocesora jaki wykorzystujemy. Ten krótki poradnik dla początkujących pokaże wszystkim zainteresowanym jak sterować 16 wyjściami logicznymi w tym wypadku...
Witam. Próbuję napisać program do obsługi dwóch rejestrów przesuwnych za pomocą sprzętowego SPI - pierwszy z nich, 74HC165, jest podłączony do 8-pozycyjnego DIP switch'a i chciałbym za jego pomocą włączać/wyłączać poszczególne diody podłączone do drugiego rejestru 74HC595. Po pierwsze prosiłbym o sprawdzenie poprawności schematu: Niestety nie wiem do...
Witam, chciałbym usłyszeć (przeczytać) uwagi, sugestie i komentarze nt. zaprojektowanego układu. Temat umieściłem już w Automatyce/Robotyce, ale byćmoże ten dział jest odpowiedniejszy... Jest to układ obrotomierza z linijką LED i prędkościomierza z wyśw. 7-segmentowymi na ATMega8, z rejestrami CD4094+ULN2803 oraz 74HC4094 dla wyświetlaczy. Żeby nie...
Potrzebuję podłączyć do ATMega8 kilka rejestrów 74...595. Czy przy zasilaniu 5V układy HC będą dobrze działać czy muszę użyć HCT?
Jakiej wersji kompilatora używasz? Get RC5 domyślnie używa timera0 a Atmega8 to nie to samo co Atmega88 i timery są inne, inne rejestry sterujace. Zobacz do noty np. Timer/Counter Control Register TCCR0 w ATMega8 steruje preskalerem a w ATMega88 TCCR0B Timer/Counter Control Register B, dwa różne rejestry inne adresy, różne też są flagi zdarzeń timerów...
Nie wiem jak inicjujesz te porty. Atmega ma 3 rejestry. Jeden określa czy port jest wyjściem czy wejściem, drugi czy domyślnie jest stan wysoki czy niski, a trzeci o którym mało kto pamięta używa się do komunikacji i obsługi klawiatury. Ustawiasz port jako wejście lub wyjście i włączasz wbudowane oporniki podciągające i ten stan jest utrzymywany przez...
Witam Z braku Atmega8 kupiłem Atmegę88, zastosowałem się do manuala migracji z Atmegi8 na Atmegę8, pozmieniałem rejestry.. Wyświetlacz działa, ale nie działa najważniejsze obsługa zliczania impulsów z urządzenia zewnętrznego i podczas wchodzenia do przerwania INT0_vect samoczynnie się restartuje, wszystkie zmienne wewnątrz procedury przerwania są volatile....
Dlatego najlepszą moim skromnym zdaniem propozycją dla kol. atom1477 będzie przesiąść się z ATMega8 na jego nowszy odpowiednik ATMega88. Oczywiście cały kod będzie musiał zostać skompilowany ponownie, gdyż są pewne istotne różnice pomiędzy tymi dwoma kontrolerami. Na przykład: większa ilość wektorów przerwań, rejestry specjalne w przestrzeni IRAM...
witam Mam pewien problem ze skonfigurowaniem przerwania w Atmega8. Program ma wysyłać dane przez UART w zależności od stanu na końcówce PD2 ( INT0 ). Jeżeli ma stan niski to sprawdza jedną zmienną i w zależności od niej wysyła dane. Jeżeli ma stan wysoki to tak samo. Ale tylko jednorazowa zmiana powinna powodować wysłanie danych. Wymyśliłem, że obsłużę...
Witam! Mam problem z programem na atmega88PA. Gdy program działał na atmega8A nie było takiego problemu. Przesiadłem się na atmega88PA, zmieniłem potrzebne rejestry i konfigurację projektu - Atmel Studio 6.2 (najnowsze). Kompiluję z param. optymalizacji -Os. Definiuje F_CPU=14745600UL fusebity ustawione są prawidłowo. Program działa bez problemu dopłóki...
Witam! O ile sie nie mylę to ATmega8 nie ma preskalera zegara, taka opcję ma np.: ATmega88. W ATmega88 odpowiada za to rejestr CLKPR i poprzez zmianę jego zawartości można sygnał dzielić przez kolejne potęgi 2. Proponował bym cały program wykonać z prędkością 8 MHz, a po wykonaniu części programu który miał być wykonany z mniejszą częstotliwością, przejść...
Procesor ATmega8515. Silnik sterowany PWM z portu OCR1B z płynną regulacją prędkości. Działa ładnie i jak należy, ale chciałbym w pewnym momencie wyłączyć pwm i całkiem zatrzymać silnik. Robiłem to na dwa sposoby: 1) TCCR1A - zerowałem najstarsze 4 bity żeby odłączyć od pwm port oc1a i oc1b 2) TCCR1B - zerowałem 3 najmłodsze bity żeby zatrzymać timer....
Witam! Pubus napisał prawdę, ale nie całą ;) Konkretnie na tym pinie zmienia się stan w momencie, gdy rejestry licznika i rejestry porównania mają taką samą wartość (compare=porównanie, output=wyjście). Licznik nie musi pracować w trybie PWM, ale to trochę wyższa szkoła jazdy. Pozdrawiam! Marcin "Max" G.
W kodzie akurat zapomniałem podać, ale tak. Próbowałem już na różne sposoby włącznie z sei i bez. Bez rezultatu. Pytanie czy kod jest poprawny? Dodano po 2 Skoro nikt nie wie to sam sobie odpowiem bo może komuś się przyda. Właśnie doszedłem że trzeba też w rejestrze TIMSK ustawić TOIE0 czyli zezwolenie na przerwanie od przepełnienia licznika 0.
Nie podałeś jak ustawiasz pozostałe rejestry. Poza tym po wykonaniu procedury startu i odczekaniu aż TWINT = 0 należy wyzerować bit startu TWSTA gdyż nie jest zerowany automatycznie. To wystarczy żeby wywalić transmisję. I gdzie jest stop?
Witajcie forumowicze, może nie udzielam się tu zbyt często, ale tym razem potrzebuję pomocy i nie wiem już do kogo mógłbym się zwrócić. Mam 2 x ATmega8. Łączę je między sobą przez SPI. Master posiada dodatkowo UART do rozmawiania z konsolą na PC, slave ma dołożoną jedną diodę do sprawdzania najstarszego bita w przesłanym bajcie (tak w ramach kontroli)....
Właściwie z duchami się juz uporałem, ale zamieszczam to, o co kolega prosił. Pomogło dodanie opóźnienia 700us po wygaszeniu lampy. Oto schemat sterowania jednej lampy: $regfile = "m8Def.dat" $crystal = 4000000 Config Portb = $b11111111 '8 Portb = $b11111111 Config Portc = $b1111111 Portc = $b1111111 '7 Config Portd = $00011111 '8 Portd =...
Witam wszystkich. Zaprojektowałem i uruchomiłem zegarek z wyświetlaczami LED(SA10-21GWA) i układem PCF8583 współpracującym z mikroprocesorem Atmega8 oraz układami PCF8574AP na szynie TWI(i2c). A teraz chciałbym go wam zaprezentować. Na początek podręcznik języka C w formie pliku pdf -> 'C.pdf' i plik -> 'atmega16mmr.pdf' ,oraz obrazki -> 'Atmega8.gif'...
Zmieniasz wektory w rejestrze MCUCR, a odpowiednie bity są w rejestrze GICR. Więc table jest nie tam gdzie trzeba.
Mam procek ATMEGA8515. Zrobiłem w nim instrukcje przerwania. Powiedzmy, że procesor wchodzi do programu przez zewnętrzne przerwanie INT0. Blokuje przerwania w SREG. Zaczyna wykonywać program. Teraz podczas wyłączonych przerwań przychodzi impuls na wyjście INT0. Nie ma włączonych przerwań więc ustawia odpowiedni bit w GIFR. Kończy się program i ponownie...
Pisząc program dla ATmega88PA-AU natknąłem się na problem przy np. takim rozkazie: OUT UBRR0H,R17 W datasheet dla ATmega48/V;ATmega88/V;ATmega168/V taki rozkaz jest, ale kompilator go nie przepuści. Jak mam załadować R17 do rejestru UBRR0H? Za pomocą rozkazu np ST używając adresu dla rejestru UBRR0H, wyszczególnionego w ATmega88PA Summary?
Witam, Chcę sterować diodami led za pomocą atmega8A-AU, nie chcę wykorzystywać rejestrów ani buforów, by uprościć budowę układu. Niżej zamieszczam szkic schematu. Chcę w nim zastosować tranzystor PNP, na którego bramkę chcę wysyłać sygnał PWM by sterować jasnością wszystkich led. Diody będą podczepione z osobna do UC by każdą z osobna gasić lub zaświecać....
Wielkie dzięki. A da się jakoś wyczyścić (ew. zablokować) to przerwanie? Próbowałem juz wpisywać w procedurze przerwania cli(), wyłączać INT0 w rejestrze GICR, ustawiać flagę w GIFR. Póki co z marnym skutkiem. możesz zarówno zarówno zablokowac każde przerwanie z osobna, a także wyczyścić flagę od ich zgłoszenia. Możesz to uczynić także w przerwaniu....
No domyślam się że przypisuje rejestrowi PORTx wartości znajdującą się w następnych komórkach pamięci?
A rejestry konfigurujące transfer po UART przekonfigurowałeś na nową częstotliwość taktującą rdzeń?
Ok jeszcze musze obczaic co z tymi rejestrami ;) i jak to sie tym poslugiwac ;). Alarmu jako takiego by nie bylo jedunie odliczanie :). i tak wlasnie ze jesli bedzie godzina 15:20 to zeby potem nie odliczal juz az do 08:00 daty nie bede chyba wykorzystywal :). Pozdrawiam Dodano po 48 Hmm cos mi sie wydaje ze to z tymi rejestrami to za wysokie loty jak...
wiatm, jestem poczatkujacym i prosze o pomoc. Staram sie sterowac silnikiem DC za pomoca PWM. No i mam procek atmega8, patrze w dokumentacje procesora i tam napotykam problem.Czytam o phase and freguency mode no i tam nie rozumiem jednej rzeczy: wartoc TOP(czyli wartosc do ktorej bedzie zliczany TCNT1) okreslona jest przez rejestr OCR1A, a przeciez...
Właściwie to potrzebujesz automat z pewną sekwencją bitów, która będzie się przesuwała w rejestrze a jego wartość bedzie kopiowana do portu. Najpierw ustal sobie sekwencję załączeń kolejnych cewek zależnie od kierunku obrotów. Wyjdzie Ci z tego tabelka, w której zauważysz wędrujące jedynki. np. 001001001 010010010 100100100 itd. Jeśli zapętlisz sobie...
Używam poniższego kodu do inicjalizacji połączenia z komputerem samochodu (według protokołu kw2000). Używam tam komunikacji USART 10400baud 8n1. Chciałem zwiększyć taktowanie do 8MHz i usunąłem programowo dzielnik fusebita CLKDIV8 zmieniając na początku funkcji main() rejestr CLKPR w ten sposób: CLKPR|= _BV(CLKPCE); CLKPR&=~ _BV(CLKPS1); CLKPR&=~...
:arrow: projektavr EESAVE działa tylko podczas kasowania układu przez programator (odcina sygnał kasujący od EEPROM-a). Starsze wersje AVR'ów miały tą wadę, że podczas wahań zasilania w czasie zapisu EEPROM zerowany był rejestr adresowy EEARH:EEARL, co powodowało zapisywanie do zerowej komórki pamięci. Pomijając zastosowanie układu BOD, poleca się nie...
Na moje to trzeba jeszcze ustawić rejestr DDRA.x = 1 - czyli porta.x bedzie jako wyjscie i diode podłączyć do masy.
SBI to makro które ustawia stan określonego bitu , a CBI - zeruje określony bit ,np: sbi(DDRB,PB1) - ustawiasz bit PB1 ( bit PB1 jest zdefiniowany jako 1 ), czyli w rejestrze DDRB ustawiasz bit 1 na 1 . cbi(PORTB,PB1)- zerujesz bit PB1 , czyli w rejestrze PORTB ustawiasz bit 1 na 0 . to jest to samo jakbys napisal : sbi(DDRB,1) - ustawia bit 1 rejestru...
Witam. Artykuł ten pisałem z myślą o wszystkich, którzy dopiero zaczynają swoja przygodę z magistralą TWI (czyli magistralą I2C) w procesorze Atmega8. Jest to program-szkielet, w który trzeba wpisać własne funkcje i procedury i wykorzystać gotowe procedury do komunikacji w magistrali TWI. A na praktyczne zastosowanie magistrali TWI zapraszam na: //--------------------------------------...
Tylko nie wpadnij na pomysł kupienia odrobinę tańszej ATMegi 88 to już co innego, wprawdzie może lepsza, ale ma inaczej rozłożone rejestry i inne ich nazwy. Przy Twoim poziomie zaawansowania spokojnie zastosuj oscylator wewnętrzny, nie musisz kupować kwarcu, a i procesor fabrycznie jest ustawiony do rozpoczęcia pracy właśnie w konfiguracjii z własnym...
zrobiłem takie coś: [syntax=basic4gl] 'Program do kalibracji rejestru specjalnego OSCCAL $regfile = "m8def.dat" $crystal = 8000000 $baud = 9600 Dim I As Byte Print "OSCCAL w procku ma wartosc:" ; Osccal Wait 1 Do Osccal = Osccal - 20 For I = 0 To 40 Wait 1 Osccal = Osccal + 1 Print "OSCCAL=" ; Osccal Print "" Next Wait 5 Loop End [/syntax] Wartość oryginalna...
Witam, Robiłem to kilkanaście razy na innych procesorach, a nie mogę zrobić na ATmega88PA. link do DSa: opis rejestrów TIMER0 na stronie 105 Timer1 i Timer2 mam ustawione w trybie PWM i działają bez zarzutu. Walczę już 2 dzień i nie rozumiem pewnych mechanizmów. - włączenie Timera0 powoduje, że pętla główna nie działa... Do portu PC0 (TQFP32) mam podłączoną...
Witajcie moi drodzy. Chciałem zrobić komunikację po RS232, na początek w jedną stronę - z atmegi do komputera. Niestety, ciągle pojawia się taki błąd: Korzystam z zewnętrznego kwarca 16MHz bez kondensatorów. Takie mam fuse bits: Podłaczenia MAX232 mam takie jak tu: Kod natomiast taki (autorstwa dondu, z tym, ze dodalem mruganie diodą i przerobilem pod...
witam! probuje zainicjowac wyswietlacz z noki 5110 kontrolerem atmega8... z tego co wyczytalem i z prgramow obslugujacych wyswietlacz lcd ktore przegladnalem w asemblerze wydedukowalem taki oto kod w c... problem w tym ze wyswietlacz wogole nie wstaje, w telefonie dziala... czyli kod jest bledny... domyslam sie ze moze uzylem jakiegos blednego rejestru...
272 to taka nieciekawa wartość do mnożenia. Ja zrobiłem tak: Przerwania z TIM0 i TIM1 TIM0 zlicza impulsy z wejścia zliczającego, i gdy się przepełni jest króciutkie przerwanie inkrementujące parę 3 rejestrów. TIM1 zgłasza przerwanie równiutko co pół sekundy. Na samym początku obsługi przerwania jest odczytywana wartość impulsów z TIM0, i jest on resetowany....
Witam, dziękuje za odpowiedz, ja niestety mam ograniczony dostęp do internetu i stąd to opóźnienie. Generalnie problem rozwiązałem wstawką w asm gdzie wpisuje bajt do rejestru SPDR i czekam aż bit SPIF z rejestru SPSR będzie równy 1. Różnica pomiędzy M8 i M88 jest w podprograme sprawdzającym bit SPIF dla Atmega8 sbis SPSR,SPIF rjmp _spi_Wait ret dla...
Sprawdź dokładnie połączenia z Atmega8. Jaki masz ustawiony programator w zakładce options-- programmer powinieneś mieć sample electronics programmer Pozatym jak pisalem ci kiedys na gg na poczatku programu nie zaszkodzi: $regfile = "m8DEF.DAT" Informuje kompilator, by użył podanego pliku definicji rejestrów, zamiast określonego w opcjach kompilatora....
A, to bardzo dobra książka. Tam są opisane rejestry. Jak to opanujesz to ani Bascom, ani C czy ASM Ci nie straszny. Rejestry są opisane tez w datasheet, za darmo- ale po angielsku. Ale co książka to książka- można ją wziąć np. do autobusu. A rejestry są najważniejsze. Należy je wydrukować i wsadzić do książki.
Witam Napisałem program który mierzy napięcie na ADC0 i wynik wyświetla na po-2-jnym wyświetlaczu LED. Niestety nie chce wyświetlać dziesiętnych napięcia wejściowego. Dlatego napisałem program w DEVcpp aby sprawdzić czy sposób formatowania wyniku jest dobrze interpretowany, oto program, który dziła bez arzutu. -liczbę 2,62745 mnoży przez 10 co daje...
Witajcie moi drodzy. Udało mi się obsłużyć (częściowo) klawiaturę matrycowa. Proszę o sprawdzenie kodu (kod bazuje na przykładzie dondu bo przez rs232 wysyłam to co kliknięto) 1. Co można ulepszyć/usprawnić? 2. Czy idea (oraz tryby pracy portów) są poprawne? 3. Czy wartość rezystora jest odpowiednia? 4. Czy wartości w delay są odpowiednie czy jakoś...
Witam. Chciałbym zaprezentować wykonany przeze mnie zegar binarno-cyfrowy oparty o mikroprocesor Atmega8. Dlaczego binarno-cyfrowy? Ponieważ ma dwa tryby działania: 1. Tryb binarny, gdzie świecą jedynie niebieskie diody. 2. Tryb mieszany, gdzie dodatkowo oprócz postaci binarnej mamy też możliwość odczytu godziny w standardowy sposów na zwykłych wyświetlaczach...
Mam wielką prośbę o pomoc. Mam napisać następujący program dla procesora atmega8 (pisze w AVRStudio). Na porcie B pin0 robi za pierwszego leda, pin1 za drugiego leda. Na porcie D pin0 robi za pierwszy przycisk, pin1 za drugi przycisk. Po naciśnięciu przycisku pierwszego miga LED1 co 1s. Po naciśnięciu przycisku drugiego miga LED2. Gdy nic nie jest naciśnięte...
Hej! Ja podpinam pod reset coś takiego (załącznik). Naciśnięcie przycisku powoduję reset mikrokontrolera. Dodadtkowo układ zabezpiecza mikrokontroler przed samoczynnym resetowaniem się pod wpływem zakłóceń. Co do reszty to masz rację, reset powoduję dokładnie to samo jakbyś wyłączył i ponownie włączył zasilanie. Proponuję skończyć z mitami, i na solidnie...
Hmm, wiec troche ciekawych rzeczy sie porobilo. Odlaczylem zasilanie wyswietlacza, a wynik, zamiast na LCD, wysylam UART'em do kompa... No i powiedzmy, ze dziala... Chociaz wartosci rejestru sa troche inne, niz wczesniej... W trakcie dzialania programu podpinam zasilanie LCD i wartosci rejestru spadaja o polowe w dol, ale nadal program dziala, jak powienien.....
Chciałbym odczytać bajt ze wskazanego miejsca w eepromie 24c16 za pomoca nastepujacego kodu: odczytbajtu: SER W OUT TWBR, W CLR W OUT TWSR, W LDI W, (1<<TWINT)|(1<<T... OUT TWCR, W RCALL wait IN W, TWSR CPI W, 0X08 BRNE error LDI W, 0XAA OUT TWDR, W LDI W, (1<<TWINT)|(1<<T...
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...
Próbuję złożyć (a właściwie jestem na etapie rozmyślań) zegar na tym scalaku ale mam pewien kłopot. Układ będzie dosyć rozbudowany więc przerwania zewnętrzne muszę zostawić w spokoju. Z tego co zdążyłem się zorientować to można za pomocą timera wytworzyć przebieg i zliczać go przez preskaler i kiedy rejestr się zapełni uzyć wewnętrznego przerwania aby...
Jeżeli zadeklarujesz OFF tak, jak napisałem wyżej to ten kawałek kodu będzie działał jak należy. Guzik prawda. Stan linii wejsciowej chcesz pobierać z rejestru PORT? Powodzenia.
Witam Ja także wyzerowałbym rejestr przed nastawianiem go, a co do softwarowego SPI to faktycznie nie jest to najtrafniejszy pomysł: o wiele lepiej przełączać się między układami (CS) SPI programowe będzie dużo wolniejsze i łatwo o babola :) Pozdrawiam
Witam. Mam problem. Chciałbym dopasować wsad do programatora AVR910 (przeznaczony dla ATtiny2313/AT90S2313) tak, aby zamiast wymienionych procesorów można było użyć ATmega8L. Obecnie posiadam taki programator na AT90S2313 i jestem z niego bardzo zadowolony, chciałbym jednak zrobić sobie wersję niskonapięciową (mam MAX3232 i ATmega8L). Oczywiście najprostszym...
Koledzy. Z jednej strony kol. Pijopic ma rację: Jeśli kod (źródłowy w domyśle) korzysta z nowych żródeł przerwań i innego HW dostępnego w M88 to nie da się go po prostu przekompilować na M8 z powodów technicznych. Z drugiej strony kol. upanie też ma rację, gdyż do kilkunastu rejestrów w M88 - które były dostępne przez IN/OUT w kostce M8 - dostęp jest...
Zwracam się z uprzejmą prośbą o przerobienie programu w ASM z AT90S2313 na ATmega8. Prośbę swą motywuje tym że program o którym mówię może przydać się nie tylko mi ale też wielu innym użytkownikom forum. Nie byłoby prościej przerobić na ATtiny2313? Między nim a AT90S2313 są niewielkie różnice. Wystarczyłoby pewnie zmienić nazwy niektórych rejestrów....
Nie. Ale w ATMega8 też nie. Programy na których testowałem pobór prądu były identyczne (nie licząc innych adresów rejestrów). W przykładzie z 5V i 24MHz chodzi ADC i jeden kanał PWM od Timera1. Tylko w dwóch innych przypadkach programy były inne, ale nie wpłynęło to wynik pomiaru poboru prądu (tzn. wpłynęło ale mikroskopijnie).
Mam problem z wysterowaniem wyświetlacza LCD na ATMEGA8. Podejrzewam że gdzieś zrobiłem jakiegoś byka i świeże spojrzenie na problem może pomóc. Wyświetlacz ( #include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> //#include <util/delay.h> #include <stdio.h> #include <avr/pgmspace.h> // Definicje dotyczace...
Jak masz liczyc na RC wewnetrzny to lepiej tego nie rob ;) Pobaw sie rejestrem OSCCAL moze pomoze ;]
przeczytaj mój post dotyczący jak korzystać z manuala: przeczytaj go proszę, zajrzyj do manuala i postaraj się sprawdzić jak poustawiać bity. Aby użyć timera jako licznika impulsów podawanych np z przycisku czy czegokolwiek innego, należy go podpiąć pod odpowiedni pin (sprawdź jaki) i ustawić timer tak, aby jego źródłem zegarowym było zewnętrzne źródło...
Nie ma się co poddawać. Prędzej czy później i tak będziesz musiał używać przerwań i liczników bo bez tego większość programów robi się zagmatwana o ile nie niemożliwa do napisania. W necie jest dużo przykładów, Bascom jest o tyle prosty, że nie grzebiesz po rejestrach. Timer już masz, dodatkowa linia konfiguracji i kawałek kodu da Ci obsługę przerwania...
kolego to naprawdę proste. bierzesz datasheet na rozdział mówiący o 16bitowym liczniku nr 1 i patrzysz na jego rejestry. Przyjmujemy częstotliwość taktowania i wyliczamy przeskalować tak by uzyskać przepełnienie licznika po czasie dłuższym od najdłuższego okresu który chcesz uzyskać. wyliczasz wartości compa dla których okres bedzie wynosił twoje minimum...
Witajcie Chciałem się z Wami podzielić ostatnim projektem. W ramach czasu wolnego i wyzwania noworocznego stworzyłem świetlną dekorację w kształcie śnieżynki do zawieszenia np na choince. Inspiracja wzięła się z obserwacji migotania sznura świateł chińskiej produkcji podczas wizyty w gości skwitowane moim stwierdzeniem " ja zrobiłbym lepsze ". Sterowanie...
Każda rodzina procesorów ma swój własny assembler. 8051 i AVR nie mają ze sobą prawie nic wspólnego. Jeśli chcesz pisać programy pod AVR to musisz zapomnieć prawie wszystko co się nauczyłeś o 8051 i zacząć się uczyć od nowa rodziny AVR czyli architektura, rejestry, rozkazy, działanie. Śćiągnij sobie pdf'a od atmegi8 i poczytaj. Poniżej załączam przykładowy...
Cóż, firmware zawsze można edytować ;-) W sumie nie ma się do czego przyczepić, choć jestem ciekaw, gdzie to urządzenie znalazło zastosowanie i jak wygląda ew. odporność mechaniczna (płytka chyba nie jest zabezpieczona żadnym preparatem poza kalafonią (a i nawet co do tego nie jestem pewien?). W zasadzie nieużyte piny UART możesz wykorzystać jako rejestr...
Teraz jest znacznie lepiej :) Na początek przetestuj sobie poniższy program w CManiaku: [syntax=c]//===== ATmega8 - Prosty symulator do nauki języka C ============ #include <dondu/dd_atmega8.h> //Wymagane do symulacji definicji i rejestrów ATmega8 int main(void){ ADMUX = 0xff; ADMUX &=~ (1<<MUX1)| (1<<MUX0); //tutaj jest błąd :-)...
Witam Mam Problem Z Napisaniem Programu Do Atmega8. A Mianowicie Sprawa Wygląda Tak: Każdy ds18b20 Podpięty Do Innego Portu. I Chcę: 1. Zrobić Alarm Po Przekroczeniu Określonej Temperatury: a) W Miejscu Danego Czujnika np. 2 Zamiast Temperatury Wyskoczył Napis "GORĄCO" i Po Chwili Zniknął i Pojawiła Się Temperatura i Znowu Napis "GORĄCO" I tak W Kółko...
nikt nie zauwazyl, ze zmienna buffer - w zamierzeniu bufor znakowy - ma pojemnosc 1 znaku? program dziala tylko przypadkiem, bo napisany jest tak, ze ma on calkowite prawo masakrowac pamiec RAM, stos czy cokolwiek mu sie tam trafi za ta zmienna buffer... kolejna kosmiczna sprawa jest to, ze po skonwertowaniu liczb na stringa (tablice char'ow) wysylasz...
... ale czy dało by się tą ATMege zastąpić ATMega88, ponieważ mam dostęp do paru takich. Od tego trzeba było zacząć ;) no ale wtedy nie dowiedziałbyś się że ATmega8 ma takie zwarcie pomiędzy VCC I AVCC. Procka ATmega8 lepiej traktować już jako zabytek muzealny prawie. Czy na niej też była by taka wada? Pisałem, że tylko w ATmega8 takie coś się przydarzyło....
Witam. Napisałem prosty program do odbioru danych z akcelerometru MMA7455L. W zasadzie chcę odebrać tylko 8 bits output value X adres: $06. Jednak na wyjściu funkcji read_czujnik() dostaje wartość 9C która zapewne nie jest przypadkowo wartością wpisywaną w TWI_write(0x9C); na chwilę przed odbiorem. main.c [syntax=c]#define F_CPU 8000000UL #include <avr/io.h>...
C nie znam ale: TWCR = (1<<TWINT) | (1<<TWEN); powoduje odczyt z PCFa bez ACK. Czyli PCF powinien zerwać transmisję. Aby odczytywać z ACK to ustaw jeszcze bit TWEA. No ale widzę że czytasz 1 bajt więc robisz to jako NACK bo bajt jest ostatni, czyli jest ok. Jednak aby wyświetlić na lcd E3 to czekasz w pętli na ACK które przecież nie przyjdzie...
Witam, Mam do zrobienia projekt OSD dla quadrocoptera. Wykorzystalem pomysl. Uklad pomimo ze tak prosty dzialalby znakominie gdyby nie jeden fakt. Tymczasowego psucia sie wyjscia MOSI. Zasada dzialania jak i opisu problemu jest smiesznie prosta. Ustawiamy SPI w tryb master. Wlaczamy generator przez odpowiednia wartosc w rejestrze DDRB: ldi r16, 0x08...
Błędne są nazwy rejestrów. Ale poprawnie tego nie jest banalne - ATTiny85 korzysta z interfejsu USI, którego nie ma ATMega8. Ona ma USART, wymagane zmiany w kodzie będą znacznie większe niż tylko zmiana nazw rejestrów. Także albo ściągnij wersję dla swojego procka, alb temat sobie odpuść do czasu aż nie poznasz bliżej c, assemblera i przede wszystkim...
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...
C:\Users\RafaĹ‚\Documents\Arduino\... error: ' PCICR ' was not declared in this scope Wydaje mi się, że moja ATMEGA8 miała problem z obsługą I2C, zamieniłem na ATMEGA328 i śmiga bez problemu. Przecież to ładnie widać w pokazanym błędzie - rejestr PCICR nie występuje w ATmega8. Podobnie pozostałe komunikaty. Oj, czytaj...
A jakiego Bascoma kolega używa? Używam Bascom-AVR 2.0.7.5. Mikrokontroler ma do jednego portu przynajmniej trzy rejestry. Jeden służy do tego żeby wybrać czy port służy jako wejście czy jako wyjście. Nazywa się DDRx gdzie x to litera portu. Czyli spotkac się możesz z DDRB DDRC lub inną literą na końcu. Drugi służy do ustalania stanu portu który Ty...
1. Co to za silniki? Podaj parametry, wielkość, itp. ... może zdjęcia. 2. Nie podłączaj zasilania Vcc2 z tego samego miejsca z którego podłączasz mikrokontroler. Skoki napięcia przy zmianach prędkości obrotowej silnika (szczególnie podczas włączania) mogą powodować resetowanie mikrokontrolera. Czy tak się dzieje można sprawdzić za pomocą diody LED i...
Witam, mam atmega8L w trybie master. komunikuje się przez sprzętowy SPI z kartą SD. jak wymusić przebiegi SCK w momencie, gdy to karta SD nadaje dane, a procesor "wypchnął" już ostatnie dane z rejestru przesuwnego? z datasheet (str. 122-123) wynika, ze po opróżnieniu bufora wyjściowego ustawiany jest SPIF, co (chyba) kończy przebiegi na linii SCK. tylko,...
Czy może ktoś wie gdzie można znależć opis po polsku ATMega8. Nie chodzi mi o całego przetłumaczonego PDF-a firmowego, ale jakieś skrócone opisy podstawowych elementów tego procesora i jego rejestrów. Musze zamieścić to w dokumentacji wykonywanego sterownika maszyny i programu. Wymóg jest aby był opis procesora po polsku, a czas nagli i przetłumaczyć...
Odgrzeje temat. Czy ktoś skompilował to źródło i posiada hex'a ? Ja chciałem zacząć moją przygodę z AVR właśnie od tego projektu, ale w WinAVR-20100110 jak do tej pory nie udało mi się skompilować tego kodu - wyskakują błędy. Chciałem to zrobić na atmega8. Czy pomoże ktoś bardziej doświadczony z AVR ? Jeżeli konkretnie chodzi o te błędy to wysypało...
Pomiar ADC odczytuje się z rejestru ADC, a nie z definicji pinu PC0 :) to: [syntax=c] pm=ADCIN;[/syntax] zamień na: [syntax=c] pm=ADC;[/syntax]
Hej, Zepsuł mi się w domu analogowy sterownik do pieca, więc postanowiłem wykorzystać okazję i zbudować własny. Moje dotychczasowe doświadczenia z elektroniką równe są zeru, zaś na chleb zarabiam programowaniem. Stąd też pytania będą dotyczyły hardware'u. Założenia funkcjonalne: * piec ma dostawać 12V DC żeby grzał (dystans 5m kabla od sterownika),...
atom1477 no bardzo prawdopodobne bo podłączyłem inną atmege zasilając tylko VCC i na AVCC było właśnie około 4,4V. W układzie z rolet, przy takim samym zasilaniu na AVCC jest 0V. Oj kolego, podstawy: Częstotliwość duża to nie jest, choć w tym projekcie spokojnie wystarczyło by 1Mhz także zmienię, pewnie zmniejszy to pobór prądu. Jak nie jest duża,...
Każdy kiedyś patrzył na przykłady a nie od razu główkował. Proszę. Baw się dobrze. Przetestowany ;) [syntax=vbnet]'#########################... '# Program włącza jeden z trzech przekaźników w zależności # '# od tego ile razy lub jak długo naciesnieto przycisk # '# Jeden krótki Przekaznik1 na czas 1s # '# Dwa krótkie Przekaznik2...
co każda z nich oznacza? Oczywiście, chętnie wyjaśnię znaczenie każdej z tych instrukcji dla mikrokontrolera Atmega8: 1. Instrukcje arytmetyczne i logiczne: - ADD (dodawanie): Dodaje wartości z dwóch rejestrów i zapisuje wynik w jednym z nich. - ADC (dodawanie z przeniesieniem): Dodaje wartości z dwóch rejestrów oraz bieżącą wartość przeniesienia (carry)...
Witam. Mam problem z przetwornikiem w Atmega8.Na wyświetlaczu chce wyświetlić zawartość rejestru ADC. Problem jest w liczeniu. Program liczy od 0 do 89 w porządku potem dzieje się coś dziwnego: ...88,89,80,90,91...99,90,91..99,00. Dodatkowo na 1 segmencie cały czas wyświetlana jest cyfra 8. Nie mogę sobie poradzić z tym problemem. #include <avr/io.h>...
Hy! Chciałbym mieć CD-ROM z avr mcu. Na jednym forum węgierskim znajduję opis na ten temat. Podążam za tym opisem i piszę program w języku Basic. Chciałbym wysunąć tacę CD-ROM. Mój program nie działa. Masz pomysł na wyrzucenie? Mój program jest tutaj: $regfile = "m8535.dat" $crystal = 4000000 Dim Bsy As Bit , Drq As Bit _reset Alias Portb.0 _iow Alias...
Witaj. Temat związany z naszą dyskusją: 1. Błąd, który nie pozwoli na skompilowanie kodu - brakuje znaku | : przesunięć bitowych : CManiaku skompilować poniższy program: [syntax=c]//Wymagane do symulacji definicji i rejestrów ATmega8: #include <dondu/dd_atmega8.h> int main(void){ unsigned char i; for(i=1; i<=4; i<<=1){ printf("%s\n",...
Witam, pracuje nad małym systemem modułowym do sterowania w domu. Na ten moment mam : -klawiaturę Matrix do wpisywania kodu do drzwi (atmega88pa) -manipulator do temperatury (atmega164pa) -czujnik temperatury (attiny84a) Zamówiłem wszsystkie części i własny projekt płytek pcb. Klawiatura działa bez żadnego problemu, program wgrywa się i działa w 100%...
Jeśli to kogoś interesuje to problem rozwiązałem przez zmodyfikowanie biblioteki m8535.dat dopisując pod linią określającą adres do ADCSR, taką samą linię, ale z ADCSRA. W uC ATmega8535 zamiast rejestru ADCSR, pod tym samym adresem, występuje ADCSRA a kompilator odwołuje się do ADCSR i stąd brał się błąd. Pozdrowionka!!!
Z tego co pamiętam to ustawienia w tym rejestrze powodują wybór rodzaju i zakresu działania generatora a nie jego częstotliwości. Dla wewnętrznego generatora istotny jest jeszcze rejestr OSCCAL
Potrzebuje zbudować urządzenie które bedzie zliczało czas do momentu gdy mierzone napięcie przekroczy napięcie odniesienia. Więc skorzystałem z Timera1 i oczywiście z komparatora. Otóż mój problem polega na tym że komparator nie działa(chyba). Próbowałem zrobić to na 2 sposoby za pomocą kontroli stanu wyjścia komparatora(wyjście ustawione 1 jeżeli napięcie...
Ah ten bascom jak ja go kocham ;-).mniejsza z tym.No coz nieco sie pozmienialo w rejestrach konfiguracyjnych.Nie wiem jak bascom sobie z tym radzi ale widocznie nie najlepiej.Po szczegoly odsylam do dokumentacji procesorka ATMega8535, wszystko jest tam opisane.
Zrobiłem tak jak mi poleciłeś, czyli w rejestrze TCCR0 ustawiam dodatkowo bit CS00: TCCR0 = _BV(COM01) | _BV(COM00) | _BV(WGM01) | _BV(WGM00) | _BV(CS00); Poza tym zamieniam wszystkie liczby spoza zakresu ośmiobitowego na mniejsze. Wygląda na to że symulacja działa prawidłowo. Rejestr OCR0 bardzo ładnie zmienia...
Ok. ZbeeGin masz rację. Set S1 nie ustawi pociągania dla PC0 bo rejestr PINC jest tylko do odczytu, czyli nic do niego nie wpiszemy. Już doczytałem i trzeba ustawić Set portc.0 na początku rpogramu (przed pętlą) i dopiero wtedy dołącze rezystor podciągający. Jęsli chodzi o Load 250 to oznacza, że Timer0 ma zliczyć 250 impulsów po czym zostanie przeladowany....