Proponowałbym również modyfikację układu pod kątem alternatywnych funkcji pinów. Wspominałeś, że chciałbyś poćwiczyć na początku miganie diodami i sterowanie przyciskami. W porządku, jednak szybko to opanujesz i apetyt wzrośnie :) Po opanowaniu zwykłego sterowania diodami, myślę że rozsądnie byłoby zaznajomić się z obsługą przerwań, która jest kluczowa,...
A jak myślisz , co się dzieje z Twoimi diodami po wykonaniu poniższej instrukcji :?: [syntax=c]PORTC=0x00;[/syntax]
Jeżeli masz watchdog ustawiony na stałe a brak w programie jego kasowania to tu może być przyczyna. Pzdr. N.
w załączonym fragmencie nie masz kropki w m8def.dat program $regfile = "m8def.dat" $crystal = 1000000 Config Portd.0 = Output Led Alias Portd.0 led = 1 do led = 0 waitms 500 led = 1 waitms 500 loop end działa (sprawdzałem na płytce bez rezystora pod resetem) ale nie to jest problemem
Witam. Dla czytelności Waszych kodów... Autor tematu: michas: michas powiedział chyba wszystko, co trzeba było powiedzieć co do samego kodu i kilku zawartych w nim błędów, a ode mnie jeszcze pytanie - czy zadbałeś o filtrację zasilania Twojego uC ? Jest to wbrew pozorom bardzo ważny temat jeśli chcesz, żeby nawet takie proste miganie LEDem działało...
Proszę bardzo - kursik od podstaw: http://mikrokontrolery.blogspot.com/2011... z gotowymi programami, itp. a jak czegoś nie skapujesz - pytaj na tym forum :-) PS. Ode mnie 20 pkt, bo masz mało, a mogą się przydać na początku drogi.
po $crystal podawana jest częstotliwość w Hz, więc 1000000 jest ok dla domyślnie skonfigurowanej atmegi8. Z resztą to lepiej ustawiać w opcjach kompilatora. Aha i zamiast pisać: Do Waitms 250 Portb.0 = 0 Waitms 250 Portb.0 = 1 Loop wystarczy Do Waitms 250 Toggle Portb.0 Loop a to, że pierwszy listing działał wynika chyba z tego, że za każdym razem sprawdzane...
Zapewne podczas programowania nie wybrałeś przy pomocy FuseBits zewnętrznego rezonatora kwarcowego. Domyślnie ATMega8 korzysta z wewnętrznego oscylatora RC 1 MHz.
http://obrazki.elektroda.pl/5406378100_1... Moduł Peltiera jest elementem, który przy przepływie prądu pozwala na transport ciepła ze strony "zimnej", na stronę "ciepłą", po stronie ciepłej wydziela się dodatkowo moc strat. Co ciekawe ogniwo Peltiera pozwala zarówno na ochładzanie jak również ogrzewanie (w zależności od polaryzacji)....
Spróbuj tak. $regfile = "m8def.dat" $crystal = 1000000 Config Pinc.0 = Output Config Pinc.1 = Output Config Pinc.2 = Output Config Pinc.3 = Output Do Toggle Portc.0 Waitms 250 Toggle Portc.1 Waitms 250 Toggle Portc.2 Waitms 250 Toggle Portc.3 Waitms 250 Loop End
Brak 2 kondensatorów 27PF przy kwarcu dlatego oscylator pracuje niestabilnie. Rezystory trzeba dodać do segmentów A....G a CA1...C3 bezpośrednio do portów inaczej wszystko będzie zmieniać jasność świecenia.
jeep. ducker masz przechlapane za teorie z dioda. wstyd
I nie ma diodek ;)
Witam, Podłączyłem diodę LED do ATmega8 i napisałem w C program do jej migania jednak nie działa. Próbowałem wszystkich dostępnych kodów w Internecie jednak efekt jest ten sam: dioda się pali non stop. Zauważyłem jedną dziwną rzecz: użycie _delay_ms(); jakby zatrzymywało działanie programu bo bez tej funkcji mogę bez problemu sterować pinem w stan niski...
Nie mam pojęcia, ale jak już napisałem odnosisz mylne wrażenie, co udowodnił poprawnie działający program migania diodą.
Witam mam problem próbuję zrobić program na uC który będzie migał diodami naprzemiennie i w czasie zmiany ich piszczał z piezo. Zrobiłem już miganie i piszczenie. Wartości są takie na oko ponieważ w tym timerze nie da ustawić górnej granicy więc liczy sobie od zera do 0xFF. Proszę o pomoc, wiem problem jest banalny ale ja poradzić sobie z nim nie mogę...
Witam mam problem z działaniem takiego programu [syntax=avrasm] .INCLUDE "m32def.inc" .INCLUDE "czekaj_ms.inc"; oczekiwanie milisekundowe ldi R16,HIGH(RAMEND) out SPH,R16 ldi R16,LOW(RAMEND) out SPL,R16 ldi R16,0x01 out DDRC,R16 .EQU SYS_FREQ=8 ; Replace with your application code ldi R16,200 ldi R17,1 start: ldi R22,0x00 out PORTC,R22 call Czekaj_ms...
Witam mój problem polega na tym że nie mogę zaprogramować poprawnie atmegi8 programatorem takim jak ten: Usunąłem link do aukcji.
Witam. Dopiero uczę się programować i mam problem z bardzo prostym zadaniem. Otóż chcę zmieniać prędkość migania diod poprzez dodawanie lub odejmowanie pewnej wartości do opóźnienia. Poniżej podaje kod gdy mógł mi ktoś wyrzucić jaki to błąd poczyniłem. define F_CPU 16000000UL #include <avr/io.h> #include <util/delay.h> int main(void)...
Witam, domyśliłem się, że gotowców nie robicie (w sumie to i dobrze:) ), tak więc zabrałem się sam za programowanie. Chcę napisać prosty program zapalający diodę, podłączoną do bitu 0 portu B, po przyciśnięciu przycisku podłączonego do bitu 0 portu D. Teoretycznie napisałem, ale nie chce to działać. Znalazłem link na forum gdzie problem był opisany,...
To jest mój pierwszy projekt, używam Atmega8A, napisałem banalny program żeby migać diodą: [syntax=c]#define F_CPU 1000000 #include <avr/io.h> #include <util/delay.h> int main(void) { /* Wszystkie linie portu D będą wyjściami */ DDRD = 0xFF; /* Początek nieskończonej pętli */ while(1) { PORTD = 0b10000000; _delay_ms(100);/* opóźnienie 0.33...
Mam dziwny problem. Piszę sobie program o takiej treści: $regfile = "m8def.dat" Config Pinb.0 = Output Config Pinb.6 = Output Config Pinb.7 = Output Config Pind.5 = Output Config Pind.6 = Output Config Pind.7 = Output Led1 Alias Pinb.6 Led2 Alias Pinb.7 Led3 Alias Pind.5 Led4 Alias Pind.6 Led5 Alias Pind.7 Led6 Alias Pinb.0 Do Set Led1 Reset...
Steruję matrycą LED 8x8 za pomocą dwóch demultiplekserów i Arduino. Mój program zapala w pętli każdą diodę po kolei. Wydaje mi się że to powinno wyglądać tak, jakby wszystkie diody były zapalone naraz - jednak widać, że migają. Gdzie może być problem?
Witam ponownie. Ponieważ nie zdążyłem odpowiedzieć na pytanie o schemat i program, a już mój temat znalazł się w koszu pomimo, że zamieściłem go w zakładce dla początkujących: http://www.elektroda.pl/rtvforum/topic26... to proszę o wyrozumiałość i informuję, że schemat wygląda tak: VCC i AVcc - plus zasilacza 5V GND (oba) - minus zasilacza RESET...
Hej, mam taki problem, że ucze się języka C w poradnika Pana Teodora Otulaka, niestety dioda zamiast zapalać się i gasnąć co 1s zapala się i gasi co około 5s... :( Zmieniałem fusebity na zewnętrzny kwarc (lfuse: 0xEC, hfuse: 0x99), więc mógłby mi ktos powiedzieć co tu jeszcze schrzaniłem? (Wątpię, żeby to miało coś wspólnego ale dodam, że na PC mam...
Dioda po włączeniu zasilania miała mignąć 12 razy i zgasnąć. Może ktoś znajdzie mi błąd. Bardzo proszę o pomoc.
Witam otóż mam taki dziwny błąd, gdyż gdy chcę wywołać migotanie diod np co pół sek. to one mi działają co kilka sekund tak jakby wykonywało się to dużo wolniej i na jednej z nóżek mam cały czas 1.8V mimo że jest ustawiona wyjście i stan niski. Podejrzewam że to procesor jest uszkodzony, ale nie jestem pewien bo był nowy :]
Na poczatku daj dyrektywe $crystal=1000000. ATmega fabrycznie pracuje z wewnetrzny zegarem 1MHz mimo podpietego kwarcu. Trzeba przestawic fusebity zeby zmusic procek do pracy z kwarcem. Pozdro Dexter
Jeśli masz diody podłączone do plusa włączasz je komendą Reset a wyłączasz Set. Set podaje na pin stan wysoki (czyli plus) i dlatego ci to nie działa jak chcesz.
Dla tego napięcia powinien być opornik ok.220-470ohm , drugą końcówkę podłącz do + zasilania , bo procek ma obciążalność 20mA przy stanie niskim.
to zatrzymanie timera przed załadowaniem wartości jakby pomogło (przynajmniej nie zachowuje się dziwnie) teraz miga w równych odstępach ... Home Lcd "P=" ; P ; "us" Lowerline Lcd "I=" ; I ; "us " ; Licznik If Licznik = P Then Portd.2 = 0 End If If Licznik >= C Then Portd.2 = 1 Licznik = 0 End If ... Dobra odczepiam się od portów :) I już mówię dlaczego...
.... problem wynika z tego, że pin powinieneś podciągać do vcc, inaczej cały czas masz stany nieustalone czyli dodaj do inicjalizacji: DDRD &= ~(1<<PD3);//pin jako wejście PORTD |= (1<<PD3);//podciąganie wewnętrzne
Proponuję zamiast INPUT użyć INPUT_PULLUP.
Żeby sterować diodą za pomocą atmegi należy wykonać szereg kroków w odpowiedniej kolejności 1. poczytać o mikrokontrolerach 2. poczytać datasheeta od danego mikrokontrolera 3. zakupić układ, złożyć, podłączyć 4. napisać program, zaprogramować Pominąłeś dwa pierwsze kroki. Nie dziw się, że nikt nie chce ci odpowiedzieć. Po prostu rzeczy o które tutaj...
Tzn. chciałeś "przypisać" zmiennej x operację PORTB ^= 1<<PB0 ? Jeśli tak to: pomysł sensowny, ale niestety gwałcący zasady języka C ;) Mignięcie diody miało być w funkcji, która będzie kilka razy wywoływana w pętli, czyli chodziło mi o coś takiego:[syntax=c]//Funkcja migająca diodą void blink(void){ // Zapal diodę PORTB |= 1<<PB0; _delay_ms(300);...
Całkiem możliwe... bo masz delaya w przerwaniu... Spróbuj jeszcze w pętli głównej zrobić tylko miganie diodą bez użycia przerwań... z delay(1000) i 2x delay(500), albo jakimś mniejszym... potestuj
A ja bym sprawdził czy przypadkiem AvrStudio nie jest w trybie symulatora a z drugiej strony czy przypadkiem nie jest tak że program programem a programowanie wykonuje się z zupełnie innego plku hex niż autor się tego spodziewa ?
Witaj. 1. WGM12 nie jest w TCCR1A. 2. Dlaczego nie stosujesz funkcji przerwania? EDIT: Oj, zostałem wyprzedzony przez kolegę wyżej :)
Ok, SPL <> SPH... i podłącz AVcc, skoro uzywasz PORTC. Tak w ogóle to poczytaj notę katalogową (oczywiście nie staraj się zapamiętać wszystkiego, raczej gdzie co jest omówione), bez tego to jak bez mapy na nieznanej drodze...
Kilka warunków może być spełnionych naraz, stąd takie działanie
Niestety nie da sie w Pascalu. Przepraszam , ale śmiem się nie zgodzić. Jest kilka PASCAL-i na AVR. Np tutaj : http://www.e-lab.de/AVRco/index_en.html Może nie jest super udany, nie mniej jest to PASCAL. Dużo lepszy jest PASCAL dla PIC-ów, tej samej firmy. Jedyną zaletą jest to, że do przykładów jest dołączona dokumentacja z gotowymi schematami urządzeń....
Najpierw wklep mój kod. Problem miałeś w braku podciągania PinB2 do VCC, i w tym że najpierw gasiłeś diodę a potem ją zapalałeś w ifie i tak w kółko. Więc jak już to by CI bardzo szybko migała.
Taki jakie ustawiłem programowo - nie muszę tego sprawdzać :) Dlatego chciałem byś sprawdził, czy możesz migać diodą.
Brak osi symetrii, dublujesz wymiary, na przekroju podaj wymiary średnicowe ze znaczkiem "Φ". Bazą jest zawsze otwór bo na nim mocujesz to koło. Rzut główny niczego nie wnosi. Zmień przekrój na pół widok - półprzekrój. https://www.google.pl/search?q=atmega8+M...
Napisz dokładnie jak podłączyłeś diodę świecącą. Migania diody przy kręcącym się wiatraku nie zobaczysz ze względu na wysoką częstotliwość.
Od pierwszego programu do obsługi wyświetlacza daleko. Bascom jest prostszy niż C++ ale ma znacznie mniejsze możliwości. Na początek chyba lepiej pobawić się diodami. Programy typu włącz-wyłącz, miganie diody itp. To pomaga w zrozumieniu działania mikrokontrolera (przynajmniej ja tak zaczynałem).
Hej, Przedtem sprawdziłem tylko czy działa przetwornik. Dla pełni szczęścia ustaw jeszcze bit ADLAR w ADMUX (strona 205 pedeefa dla ATmega8). W przeciwnym wypadku bedą Ci migać co najwyżej dwie najmłodsze diody portu D. Jeżeli diody masz podłączone do VDD to mozesz zanegować ADCH (PORTD = ~ADCH) aby mieć zgodność świecenia diód z wartością ADCH. Pozdrawiam
Witam, zastanów się co się dzieje w switch (OPCJA) dla PRZEL == 1. Jak będziesz wiedział jak działa switch...case, możesz wykorzystać go do migania diodami bez ciągłego delay między nimi i blokowania całego programu.
witam wszystkich zrobiłem ostatnio sterowniczek zabezpieczający przed przytrzaśnięciem kogoś automatycznie zamykane drzwi, na drzwiach znajduje sie gumowy przetwornik, który pod wpływem nacisku zmienia rezystancję. Sterownik ten mierzy rezystancję i jak jest ok to zapala zieloną diode i przekaźnik jak rezystancja sie zmieni to puszcza przekażnik i zapala...
Witam, Jakim kwarcem kolega popędza ten układ? Podłącz diodę led do portu (przez rezystor) i migaj nią co 1 sekundę (programowo). Wtedy będziesz miał pewność, że procek popędzasz takim zegarem jak zadeklarowałeś.
...po toggle (albo end if - zależy od konstrukcji) jeszcze warunek na puszczenie przycisku, bo nie nadążysz patrzeć jak migają te diody ;)
Witam. Chciałbym poznać chociaż trochę asemblera.Nie chodzi mi o jakieś zaawansowane programy tylko na początek miganie diodą , operacje na portach itp. Najlepiej na Attiny2313 lub Atmega8. Czy nada się do tego programator stk200? Jaki kompilator( najprostszy i najlepiej po polsku) Do tej pory programowałem trochę w bascomie i więcej w C. Z książek...
Cześć chcę zrobić grę na atmega8 lub atmega32. Wyświetlacz z diod led koło siebie ułożonych nie dużo najwięcej 5*5 diod. Chciałbym żebyś podali napisany program do atmegi i jakim programem go zaprogramować? http://www.allegro.pl/item567754772_prog... Taki kupie programator wystarczy on? Na odpowiedzi czekam....
Jeśli chodzi o mikrokontrolery to w zasadzie tylko C, ostatnio też C++ jeśli nie chcesz trafić w ślepą uliczkę jaką jest np. BASCOM (sam używam i do zastosowań "domowych" jest ok, ale ma wrażenie że jego popularność spadła na rzecz arduino. Co do wyboru procesora nie ma znaczenia czy AVR PIC czy STM. Każda rodzina ma swoje wady i zalety, na początek...
A sprawdziłeś czy układ faktycznie ma te zaprogramowane 8MHz? Jakieś proste miganie diodą etc?
Zrobie tak TWPS = 1 TWBR = 2 Zobacze wtedy czy zadziała. Rozumiem, że to można jeden raz w funkcji Main wklepać, nie trzeba za każdym wywołaniem funkcji twistart() tego robić... Nie ma takiego rejestru TWPS chyba chodziło o TWSR Ale i tak nie działa. Dioda nie miga
Zwykle wygodniej projektuje się płytkę, gdy diody mają wspólny biegun, a rezystory są pomiędzy wyjściami uC i diodami.
Faktyczny. Prawdę mówiąc tak tego nie pomyślałem. Faktyczne X%/0% wypełnienia da miganie diody o zadanej intensywności światła. Dzięki i już wszystko jasne! Pozdrawiam B.
Witaj! Zmień: #define L 0xDC; #define H 0x0B; #define pres 0x03; Na: #define L 0x84 #define H 0x1E //7812 #define pres 0x05 //preskaler 1024*7812/8M=~1 - dioda miga co 1s Nie pisz średników w define Pozdrawiam!
Zgadza się, ale to stwierdzenie niczego mi nie wyjasniło
bascom miganie diodami miganie diodami arduino atmega8 miganie
smartfony samsung schemat schemat zamka centralnego układ zabezpieczenie ładować
monitoring zewnętrzny kamery suszarka electrolux ew8h458bp
Schemat licznika Seat Leon 1M0 920 820E – pinout, złącza T32/T32a, CAN, FIS, immobilizer De Dietrich MCR 3 – błąd E014, gaśnięcie palnika, kod E036 po kilku próbach