http://obrazki.elektroda.pl/1342215400_1... Witajcie moi drodzy! Chciałbym wam pokazać kolejny mój projekt oparty na mikroprocesorze z rodziny PIC. Jest to płytka developerska obsługująca komunikację przez USB i RS232 oparta o PIC18F4550. W tym opisie skupię się na funkcjonalności USB, ponieważ jest ona trudniejsza i skutecznie odstrasza...
http://obrazki.elektroda.pl/4926270100_1... Diagnozer joysticków (np. do Pegasusa) na Atmega 8 Projekt Przyszedł wreszcie czas naprawić posiadane przeze mnie joysticki do Pegasusa. Zwykle uszkodzeniu (urwaniu) uległ kabel lub taki niesprawdzony/niesprawny joystick został zakupiony bez znajomości jego przeszłości. Jeśli kable się urwały,...
Witam, Podłączyłem sobie Wyświetlacz LED 7-segmentowy do mojego procka. I program wyświetla z 0,5sek opóźnieniem kolejne cyfry. Chciałbym aby gdy Pind.0 przyjmie wartość 0 (jeśli zewrze go z masą), cyfry szybciej się zmieniały (np. co 0,3sek) napisałem coś takiego: $regfile = "attiny2313.dat" 'najpierw określamy typ proca $crystal = 1000000...
Autor, kiedy zajmował się jeszcze prostymi układami bazującymi wyłącznie na tranzystorach BC547 i BC557, nie był w stanie wyobrazić sobie, jak z tych elementów skonstruować efekt charakterystycznego echa, które można zaobserwować przy rozgłaszaniu komunikatów. W tej chwili odpowiedź stała się dla niego prosta – można wykorzystać mikrokontroler...
Witam serdecznie Od jakiegoś czasu postanowiłem zakończyć moja przygodę z Bascomem i skupić się na języku C. Okazało się to bardziej czasochłonne niż myślałem, ale powoli idę do przodu. Napisałem program, który w przyszłości będzie zegarkiem, może nawet z termometrem i magistralą RS232, ale to odległa przyszłość. Na razie udało mi się opanować Timer0...
Nie doszła jeszcze paczka z termoparą, więc jeszcze się upewnię kod jest dobry. http://obrazki.elektroda.pl/1254396800_1... Ustawiłem bity rejestru SPCR w taki sposób: CPOL na 1 CPHA na 0 (domyślnie jest 0), czyli SCK w czasie oczekiwania wysoki, SCK w stanie próbkowania niski. Czy SCK w czasie oczekiwania powinien być niski i CPHA na...
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...
Od dłuższego czasu napisałem sobie specjalne makra pod AVR definiujące wszystkie porty, aby np. zamiast pisać: #define BTN1_DDR DDRC #define BTN1_PORT PORTC #define BTN1_PIN PINC #define BTN1_P PC0 #define BTN2_DDR DDRB #define BTN2_PORT PORTB #define BTN2_PIN PINB #define BTN2_P PB1 #define BTN3_DDR DDRD #define BTN3_PORT PORTD #define BTN3_PIN PIND...
To pójdzie na '51, tylko zapis taki jak portb.x zamieniasz sobie na P1.x (na przykład ) ;) Ogólnie tylko piny, do których podłączony jest LCD musisz zmienić i $crystal ustawić na wartość kwarcu, który masz w układzie :] I powinno śmigać ;) Pozdrawiam :)
Dobra już poprawiłem kod lecz nie jestem pewien co do funkcji ISR() [syntax=c]/* * Przerwania.c * * Created: 2013-12-01 17:11:49 * Author: Kamil */ #define F_CPU 4000000UL #include <avr/io.h> #include <avr/interrupt.h> //--------------------------------------... // SIGNAL(SIG_INTERRUPT0) // { // PORTB = ~PORTB; // zamieniaj...
Ja bym for(i=0;i<16;i++) { PORTB = (PORTB & ~(1 << 5)) | (((dane >> i) & 1)<<5); _delay_ms(5); clk1; _delay_ms(5); clk0; _delay_ms(5); } zamienił na: for(i=15; i<200 ;i--) //Od 15 do 0. Jak ominie 0 to przekręci się do 255 (65535?)...
Zamienia na przeciwny stan końcówki portu lub zawartość zmiennej bitowej. Składnia: TOGGLE pin gdzie: pinzmienna typu Bit, lub nazwa końcówki portu. Opis: Za pomocą instrukcji TOGGLE można szybko zmienić stan końcówki lub zawartość zmiennej bitowej na przeciwny. Dla przykładu, gdy końcówka portu steruje przekaźnikiem, który aktualnie jest w stanie OFF...
Powinno działać tak jak chcesz: Est Alias Pind.4 Dim Zmienna As Byte , Licznik As Byte Cursor Off Config Portd.5 = Input Config Portd.6 = Input Config Portd.7 = Input Config Portb.0 = Input Config Portd.4 = Input Portd.5 = 1 Portd.6 = 1 Portd.7 = 1 Portb.0 = 1 Portd.4 = 1 Cls Do Bitwait Est , Set Zmienna.0 = Pinb.0 Zmienna.1 = Pind.7 Zmienna.2 = Pind.6...
Wielkie dzięki panowie, na początku miałem problem ze zrozumieniem składni: PORTB = PORTB Or &B00010011 'ustawiamy bity bo brałem to sobie tak na 'chlopski rozum' (a tak się nie da i mi głupoty wychodziły) ja sobie to w głowie przetwarzałem na np. 8=8 or 3 (czyli aby to sobie uzmysłowić zamieniałem portb na cyfrę 8), i dla mnie to w ogole sensu nie...
EDIT: Tfu, ślepy jestem. :P Trochę niekonsekwentnie stosujesz wcięcia i nowe linie, zmniejsza to trochę czytelność kodu. Zamień też SIGNAL na ISR oraz nazwy przerwań w tych blokach (bierzesz nazwę przerwania z kolumny "Source" tabelki przerwań z karty katalogowej układu z dopisanym _vect ). Dodatkowo możesz sobie trochę ułatwić życie zamieniając długie...
Configure PORTB As Output Skąd to wziąłeś? Po za tym zrezygnuj z toggle bo będzie ci zamieniać ciągle stan na przeciwny.
Ja chyba zrezygnuję z obsługi kropki (włączę ją na stałe), bo wymagałoby to zwielokrotnienia zapisów w tablicy DIGITS. (każda cyfra musiałaby być zapisana podwójnie z kropka i bez przynajmniej tak to zrozumiałem) Układ działa już jak chciałem, jednak wydaje mi się, że kiedy kropka będzie na stałe zapalona można by skrócić jakoś ten kod do wrzucania...
Narazie problem pojawia się na etapie kompilacji, edytowałem plik mmc_avr_spi.c zamieniając poniższe linie: [syntax=c]#define CS_LOW() PORTB&=~_BV(PB4)/* Set MMC_CS = low */ #defineCS_HIGH() PORTB|=_BV(PB4)/* Set MMC_CS = high */ #define MMC_CD _BV(PC2)/* Test if card detected. yes:true, no:false, default:true */ #define MMC_WP _BV(PC3)/* Test if write...
Ooo to ja muszę się jeszcze dużo nauczyć :P zrobiłem na razie taki program ale teraz widzę, że to nie miało szans zadziałać z braku mojej wiedzy :P nie zwracałem uwagi na bit parzystości po prostu brałem adres zamieniałem go na binarny i wysyłałem 8 bajtów, czy takim sposobem mam szanse coś wyświetlić oczywiście jak poprawie to z parzystością bitów,...
Witam Na początku chce poinformować że to moja pierwsza zabawa z programowaniem AVR. Napisałem, lub przynajmniej starałem sie napisać program który miałby odczytywać położenie joysticka za pomocą ADC a następnie wychylenie zamieniać na obrót silnika krokowego o pewną ilość kroków z zależności od wychylenia joysticka. Proszę aby ktoś spojrzał i powiedział...
Tak właściwie to testowałem PWMa na takim programie: $regfile = "m8def.dat" $crystal = 1000000 Config Timer1 = Pwm , Pwm = 10 , Prescale = 1 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up Config Portc = Input Portc = 255 Pwm1a = 0 Pwm1b = 0 Do If Pinc.0 = 0 Then Pwm1a = Pwm1a + 1 If Pinc.1 = 0 Then Pwm1b = Pwm1b + 1 Waitms 2 Pwm1a =...
https://filmy.elektroda.pl/16_1521115476... [syntax=vbnet] $regfile = "m32adef.dat" $crystal = 16000000 Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 ,Db7 = Portb.7 , E = Portb.3 , Rs = Portb.0 , E2 = PORTB.2 Config Lcd = 40 * 4 dim ___lcdno as Bit dim xa as Byte dim xb as Byte ___lcdno=0 cursor on cls ___lcdno=1 cursor on cls...
Gratuluję wiedzy i Dziękuję za wyczerpującą odpowiedz, rzeczywiście zamieniając int na char wszytko ładnie śmiga, niestety zapis na flashu chyba czasowo się nie wyrabia z odczytem i mam krzaczki. Puki co przerobie tablice na dwu wymiarową . Dodano po 8 Aha coś sobie przypomniałem, co przeszkadza mi w zrobieniu dwu wymiarowej tablicy for(i=0;i<5;i++){...
(at)Light jaka to roznica zeby zmiejszac? Powinno teoretycznie dzialac w obu przypadkach... Ale moge sprobowac.... Bo w każdym przypadku układ się wyłączy, jak licznik dojdzie do 120, no nie ? Zamiast "nielegancko" zamieniać kod switchy na BCD, nie lepiej przykładowo wczytać całość stanu portu ?: _SW = PORTB BTW : Dla czytelności warto kod programu...
Witam. Mam taki problem. Chce zrobić układ który po stwierdzeniu zbocza opadającego i odliczeniu opóźnienia ( 1-1000ms ) zmieni stan 2 portów na przeciwny. Czas zwłoki jest zmienny ale w tym nie problem. Więc po uruchomieniu jest porx=1 porty=0 po podaniu zbocza ( zwarcie do masy) układ zamienia diody w nieskończoność sam. Co robię nie tak?? w C działa...
Miałem na myśli wartość, która ma trafić na port, czyli ta z tablicy cyfry . Skoro odbiór jest prawidłowy, ale poprawna wartość jest zamieniana na zero, to powodem jest to, że wartość odczytujesz na okrągło, bez względu na to, czy nadajnik coś wysyła, czy nie. Mam dwie propozycje. Pierwsza, rozsądniejsza, to wysyłaj nadajnikiem wartość o jeden większą,...
Zmyliło mnie oznaczenie Vss(głównie to V) a to ze względu na to że gdzieś wyczytałem żeby nie oszczędzać i zawsze V podciągać do +, plus oczywiście dorzucać kondensatory. Czy mi się dobrze wydaje że Vss ma być bezpośrednio podłączony do GND (według rys.18 i opisu). Co do uP nie zawsze tam będzie w szczególnych przypadkach będzie tam połączenie do innej...
I ja witam po przerwie. Możesz podłączyć wyjście przerwania z PCF bezpośrednio do wejścia M16 Pin B2. Jeśli to Zrobisz to następnie: 1. Konfuguracja i uaktywnienie przerwań, oraz przerwania zewnętrznego 2. [syntax=basic4gl]Config Int2 = Falling On Int2 Sekunda Enable Interrupts Enable Int2[/syntax] 2. Deklaracja zmiennej Sekunda i zmiennej Minuta [syntax=basic4gl]Dim...
W końcu jest tak jak kolega emarcus chciał? Czy ma jeszcze jakieś sugestie spostrzeżenia które z chęcią przeczytam Nie zupełnie tak chciał....(!) Poza tym nie jest łatwo analizowac twój program bo masz niekonvencjonalnie sporządzoną tabelę cyfr(!) przekonvertuj tabelę i podłączenie segmentów wg. kolejności jak niżej: (o wiele łatwiej analizowac)......
Spróbuj wykorzystać coś z tego kodu. ;E equ RA1 ;RS equ RA0 #include <P16F84A.inc> Start: call Conf call LCDinit movlw 'P' movwf 0x0C call Send2nibbles call Pauza movlw 'I' movwf 0x0C call Send2nibbles call Pauza movlw 'C' movwf 0x0C call Send2nibbles call Pauza movlw 0x31 movwf 0x0C call Send2nibbles call Pauza movlw 0x36 movwf 0x0C call...
No litości. Po prostu pozamieniaj w kodzie wszystkie linie CS = 1 na CS = 0 a wszystkie CS = 0 na CS = 1 PS. Ale nie używaj do tego tak po prostu funkcji "Znajdź i zamień", bo jak zamienisz „1” na „0”, to będziesz miał same „0” i potem wszytko pozamienia Ci na „1”. Zamieniaj ręcznie. Ewentualnie zamień:...
1. Zamieniałeś silniki miejscami, by sprawdzić, czy to wina silnika, czy układu? Tak silniki zamieniałem miejscami, skutek ten sam. 2. Jaką częstotliwość taktowania mikrokontrolera masz ustawioną? Domyślnie jest 1 MHz. 3. Przy jakiej wartości wypełnienia PWM, silniki piszczą? Próbowałeś dać wypełnienie 100%? Jaki efekt? Jak widać w programie, na samym...
http://obrazki.elektroda.net/52_12606996... Przedstawiam państwu wersję β (beta) projektu o oznaczeniu T102. Celem projektu było udowodnienie że możliwe jest zbudowanie modułów umożliwiających zdalne sterowanie dalekiego zasięgu (minimum 5-8km max - globalny), mieszcząc się w kwocie 15PLN (elektronika) i zapasie dostępnych w domu każdego...
Chciałbym dzisiaj przybliżyć Wam trochę tensometr, który czasem jest również nazywamy: czujnikiem tensometrycznym, belką tensometryczną czy też czujnikiem naprężeń. Będzie tutaj trochę teorii i praktyki. Zostanie tutaj opisany chyba najbardziej popularny tensometr czyli tensometr oporowy. https://obrazki.elektroda.pl/8825635100_...
Witam. Napisałem program do obsługi czujnika HC-sr04. Program ma wyświetlać na LCD wartość z timera( na razie nie zamieniałem jej na cm). Niestety program nie działa tak jak powinien tzn wartość z timera nie wzrasta wraz z oddalaniem i przybliżaniem przeszkody. Poniżej zamieszczam mój kod i chciałbym prosić o pomoc w wyłapaniu błędów. [syntax=c]* main.c...
Witam Szukałem w internecie odpowiedzi na swoje pytanie ale nie znalazłem konkretnej odpowiedzi. Straciłem 3 dni na doświadczenia i nic mi nie wychodzi. Pracuję nad urządzeniem które odczytuje temperaturę w czterech różnych miejscach. Dopóki wszystkie czujniki działają nie ma problemu. Jeżeli padnie któryś z czujników pojawia się problem bo po jego...
Gdy zamieniałem A = Getadc(0) na A = Getadc(1) lub A = Getadc(2) i odpowiednio miałem podłączone potencjometry układ działał z wybranym potencjometrem. Gdy wyrzuciłem z programu właśnie ten zapis A = Getadc(0) nie było żadnej reakcji. Jak w takim razie, gdy nie ma powyższego zapisu wybierałoby się odpowiedni kanał z ADC? Dodano po 1 Dzięki "emarcus",...
Witam Walczę z tym tematem już dość długo i nie mogę sobie sam poradzić, może wy pomożecie... Chcę z komputera za pomocą terminala sterować Attiny2313 za pomocą rs485. Wszystko dział ok po rs232 po 485 już nie. Po niżej pokażę schemat i program. Na schemacie jest podpisany układ MAX3468 ale w rzeczywistości jest tam MAX485 podłączony tak jak na schemacie....
Ech... nie wiem już co mam myśleć. Po załadowaniu oryginalnego programu z książki (C19j.bas): 'C019j Licznik rewersyjny 0...250 z konwersją BCD; w liczniku wstępnie liczba 137 $eeprom Tabela: 'kody cyfr 0...9 + kod wygaszenia + wstępna zawartosć zm. Licznik Data 192 , 249 , 164 , 176 , 153 , 146 , 130 , 248 , 128 , 144 , 255 , 137 Dim Setki As Byte...
Opierając się na jakimś kodzie znalezionym w googlach udało mi się wyświetlać czas w formacie HH:MM:SS i ładnie wyświetla, ale niestety nie potrafię zrobić ustawienia godziny za pomocą przycisków. To co jest napisane w tym kodzie i niby ma ustawiać czas, to nie działa w ogóle. Możecie mi wytłumaczyć jak takie ustawianie godziny ma wyglądać i jak to...
Witam Mam układ, który mierzy dwie temperatury ( DS18B20 ), dwa napięcia ( PCF8591 ( pobiera czas ( PCF8563 ), a z powodu niedużego wyświetlacza ( 12 x 4 ) wskazania są zmieniane do 10 sekund po przepełnieniu Timer1. Układy PCF8563 i PCF8591 są podpięte z "zewnątrz" przewodami około 10 cm. Magistrala I2C ma obniżoną prędkość przez Config I2cdelay =...
Coś jednak zrozumiałem :D Myśłałem, że to w C albo w ASM :P Configa nie zmieniasz wyswietlamy Wyswietl = Uniwersalny And &B111 Portc = &B0000000 Select Case Wyswietl ' obsluga wyswietlacza Case 1: ' wyswietl zawart. licznika jedn min Portd = Lookup(sekjed , Tabela ) Portc.0 = 1 Case 2: ' zawart licz. dzies min Portd = Lookup(sekdzies...
podziękuj redakcjii edw bo listingi są ich. zakłądam ze urzywasz bascom avr inne listingi do pobrania ze strony edw są to programy testowe do oślej łączki z kursu avr 'C018b Prosty zegar z budzikiem Dim Sekundy As Byte , Minuty As Byte , Godziny As Byte , Uniwers As Byte Dim Sekjed As Byte , Sekdzies As Byte , Minjed As Byte , Mindzies As Byte Dim Godzjed...
Udało mi się odpalić program na prędkości 312500 bodów (koleje dane z RSA przychodzą co 32us) , ale nie jest to granica możliwości: Mam taki kod: [syntax=c]#include <avr/io.h> #include "stdlib.h" #define LCD_RS PB4 #define SD_CSET 0x15 // column address setting #define SD_PSET 0x75 // page address setting #define LCD_CS PB0 #define RAMWR 0x5C...
zrobilem sobie taki zegarek RTC na I2C i LCD 16x2 na zestawie uruchomieniowym zl2avr jednak nie wiem jak sie zabrac za podlączenie LCD pod I2C myslalem zeby uzyc pcf8574 tylko nie wiem jak podlaczyc LCD do tego ukladu i czy nie trzema jakiejs dodatkowej biblioteki ?? co by to obslugiwala ?? oto moj programik jaki mam do tej pory bez LCD na I2C : $regfile...
wreszcie, po 3 dniach nierównej walki, udało mi się uzyskać zamierzony efekt:) dla potomnych przedstawiam rozwiązanie (część programu): $Device= m8 ' ATmega8 $Stack = 32 ' wielkość stosu $Clock = 12 ' MHz kryształu $Baud = 4800,M,8,1 'prędkość transmisji Declare Interrupt Urxc() Dim Bufor As String*38'w nim będą dane z uartu Dim Bufor1 As String*38...
ok wracam do mojego pierwszego programu ,więc zamieniam pin na porta przy tym ustawieniu porta Porta = &B11111101 led1 powinnien pokazywać "jeden" , a led2 "zero" wynik jest led1 "zero" led2 "zero" gdzieś w programie jest błąd lub brakuje jakiejś komendy Dodano po 4 dlaczego program działa bardzo dobrze tylko z porta.0 /led1,po dopisaniu porta1/led2...
Witam. Zdaje sobie doskonale sprawę że temat był wałkowany milion razy. Przeczytałem chyba wszystkie posty dotyczące odbioru RC5 w avr - sprawdziłem z 10 różnych programów i efekt ten sam - nie mogę odebrać żadnej komendy z odbiornika rc5. Dlatego po dwóch dniach walki postanowiłem zapytać. Sprzęt: -Układ testuje na ATMEGA32 na płytce uruchomieniowej...
Witam Mój problem to brak kompilacji przy konfiguracji Timer2 w tryb Counter Unknown CONFIG parameter Porblem polega na tym że w helpie BASCOM-AVR można konfigurować Timer 2 w tryb Counter. Wrzucam cały kod :[syntax=basic4gl] $regfile = "m16def.dat" $crystal = 16000000 Dim Freq As Long Const Licznik = 2789 Config Timer1 = Timer , Prescale = 256 Config...
Witam na wstępie od razu zaznaczę że jestem bardzo początkujący. (kilka słów od siebie) Od jakiegoś czasu staram się nauczyc programować uC, zacząłem od rodziny AVR, od Bascoma, C ale mi nie szło z powodów braku znajomości elektroniki, więc zacząłem zgłębiać tajniki assemblera. Moje eksperymenty przeprowadzam na płytce z kursu AVT 3505 (może nie najlepsza...
brother zamienia zamienia głośnik bascom portb
monitor wyłącza starcie wymiana rozrządu citroen xsara pobór prąd akumulator punto
Czerwona lampka w zamrażarce Beko FSE 1072 X - co robić? Ładowanie Nokii 6310i, 6610i, 8910i przez USB bez oryginalnej ładowarki