...pozostałe piny są w stanie niskim czyli 0 V. Źle, wejścia te mają wyłączone podciąganie do VCC.
A dałeś podciąganie na portach?:>
, przetłumacz poniższy kod z BASCOM AVR na Arduino Uno: $regfile = "attiny2313.dat" $crystal = 8000000 Dim A As Byte a=0 Config Pind.6 = Output led Alias Portd.6 led= 0 Config Pind.0 = Input Portd.0 = 1 Sw Alias Pind.0 do if a >1 then a=0 if sw=0 then bitwait sw, set incr a End If if a=1 then toggle led waitms 100 else led=0 end if loop end Przekształcanie...
Kolego, układy AVR mają nogę podłączoną do kilku rejestów. Pisząc słowo PIN konfigurujemy rejestry wejściowe, a słowo PORT rejestry wyjściowe. Chodzi tu o składnie języka Bascom. Ta informacja jest oczywiście niedokładna , a sama interpretacja błędna (!). Pisząc 'config ...' w efekcie edytujesz rejestr DDRx odpowiedniego portu x. Nie jest ważne czy...
Tak. Bo w takim stanie przerzutnik portu nie wymusza stanu logicznego z rejestru PORT a jedynie steruje tranzystorem, który służy jako podciąganie wejścia do zasilania (ekwiwalent rezystora ok. 50k). Dlatego do odpowiednich bitów DDRxy i PORTxy należy wpisać zera.
Czy włączyłeś podciąganie linii portów, do których są podłączone przyciski? Obsługa przycisków w programie też jest "nie tak". Naciśnięcie przycisku powoduje, że na wejściu będziesz miał 0, nie 1. To, co dalej robisz w programie, też jest średnio sensowne, ale to zauważysz dopiero wtedy, kiedy wykryjesz poprawnie naciśnięcie przycisku.
ustalam w ten sposób podciąganie pinu do stanów wysokich i niskiego(**) . Zakładałem, że po to jest alias (zawiera nazwę pinu), który sprawę rozwiąże. Co gorsza przyznam się, że taka była moja praktyka więc nie wiem jakim cudem błędy wyszły dopiero teraz. Podsumowując, właściwe jest podciąganie do VCC i GND poprzez SET i RESET a nie jak ja to zrobiłem....
Jakieś masło maślane. Stan portu jest w rejestrach oznaczanych PINx. Tak więc: Stan_portu_A=PINA Nawet jak port ustawisz jako wejście z podciąganiem i zewrzesz wejścia do masy.
Rocket_93- za dużo wiedzy jak na pierwszy program. A jeszcze nie wiemy czy już działa. W Bascomie kończy program End. I konfiguracja portów jest tak: Cały port: Config portx=output/input. Ale pojedyncza końcówka: Config pinx.y=output/input A jak się da: Config portx.y=output/input to nie wyrzuca błędu ale potrafi działać "dziwnie". A potem podciąganie...
ja podłączam klawiaturę i nie muszę dodawać żadnego Config PortB = ... lub tym bardziej PortB = ... i przy nie wciśniętym klawiszu zwraca 16 (lub 24 przy matrycy 6*4), bez żadnego podciągania... skąd pomysł na podciąganie? używam bascom 1.11.9.8
Witam Od dłuższego czasu męczę się z napisaniem prostego programu obsługującego sonar HC-SR04. Nie wiedzieć czemu, na lcd cały czas wyświetla się 0. Wyeliminuj: Bitwait Echo_ , Set ....a także nie ma potrzeby podciągania portu wejściowego PC.0. Jest on stale podłączony do SR04 (Echo Pulse), gdzie zawsze jest określony stan lolgiczny. Również zamiast...
Najprościej przeczytać dokumentację. Są nawet przetłumaczone wersje.
Pociąganie realizowane jest poleceniem "Set" - ósma i dziewiąta linijka. To nie jest podciąganie(!) Jest to próba wpisania wartości do rejestru, który z natury jest przeznaczony tylko do odczytu. Nie ma możliwości zmiany stanu rejestru "PIN.x" z poziomu programu. Stan PIN.x możesz zmienić tylko fizycznie z zewnątrz poprzez podanie tam napięcia o odpowiednim...
Programik żyje własnym życiem bo nie podciągasz wewnętrznie portów do których masz podłączone switche.
1.Konfiguruje się PORT 2.Podciąganie do plusa włącza się w PORT 3.Przyciski czyta się z PIN Sterować można PORT`em a sprawdza się PIN [syntax=basic4gl] Config PORT.x = Input 'nie podłaczamy driverow - port bedzie wejsciem PORT.x = 1 'sterujemy portem, podłączamy wewnętrzny rezystor Przycisk Alias PIN.x ' PIN PIN PIN PIN! [/syntax]
Jeżeli przycisk zwiera wejście do masy to trzeba jeszcze włączyć wewnętrzny rezystor podciągający wpisując do portu 1.
Nie działa bo masz nie włączone podciąganie do plusa. Rejestry PIN nie służą do zapisu w tym procesorze (tylko w niektórych modelach zapis 1-dynki do nich powoduje zmianę stanu odpowiadającego bitu w rejestrze PORT). http://www.atmel.com/Images/doc2503.pdf - strona 64 Musisz dać dla każdego przycisku po instrukcji Config ... Input instrukcję Set Portd.x...
To ja sie zapytam czemu podciągasz kilka razy przyciski do +? Przeca raz na początku wystarczy?
nie, nie deklarowałem tego, jednak w helpe i w "programowanie mikrokontrolerow avr w języku bascom" nie ma tej deklaracji jest jedynie : config rc5 = pinX.X ale probowalem tez z konfiguracjami jako wejście, podciągałem port do góry, ale to też nic nie dawało
Dzięki za zainteresowanie. Niby to w miarę proste a jednak ... portb=&B00000000 - wcale nie oznacza stanu spoczynkowego "0" dla pinów tego portu. Oznacza to, że piny tego portu są w stanie wysokiej impedancji ( HiZ), możesz to traktowac tak jakby były nie okreśone i bedą reagowc na przypadkowe sygnały pojawiające sie na wejściu, również te powodowane...
A dlaczego nie tak: $sim 'tylko do symulacji $regfile = "m8def.dat" $crystal = 8000000 'kwarc '---------------------------------------... 'Konfiguracja LCD wg wykonanej płytki PCB pod procesor ATmega8 Config Lcdpin = Pin , Db4 = Portb.3 , Db5 = Portb.4 , Db6 = Portb.5 , Db7 = Portc.0 , E = Portb.2 , Rs...
Witam, w dobrym kierunku idziesz, ale to ci nie zadziała bo jak? skoro na początku programu tylko raz ustawiasz piny klawiszy jako wejścia oraz pin przerwania INT0 też jako wejście. Więc co ma tutaj wymuszać stan niski na wejściu INT0? nic!. Aby ten sposób zadziałał - musisz jeszcze pomyśleć o zmianie kierunków portów wtedy gdy trzeba. Generalnie założenie...
Prosty program zmieniający z częstotliwością 0,5Hz stan końcówki PXY raz jako zwarcie z masą (logiczne zero) wmuszone stanem rejestru PORTX.Y, a po sekundzie wystawiający na końcówkę PXY wysoką impedancję. Fakt, jedynką ustawiasz masę, a zerem ustawiasz wysoką impedancję. Z tym chyba sobie poradzisz. [syntax=basic4gl]PORTX.Y = 0 'Wartość rejestru PORTX.Y...
Z tym dotykaniem masy pasowałoby mi niepoprawny układ taktujący (kwarc, kondensatory) może być też brak zewnętrznego podciągania RESETu do plusa i niepołączona masa układu i masa posrtu COM (5 pin w porcie DB9)
4) Przed wejściem w powerdown ustaw piny jako wejścia (wszędzie tam gdzie to możliwe), procesor nie będzie niepotrzebnie "wysyłał" napięcia na zewnątrz Wcale nie. "Wysyłanie" napięcia nie powoduje strat mocy. W końcu to samo napięcie. Z kolei skonfigurowanie wejść jako piny wejściowe (żeby nie "wysyłały" napięcia :D) owszem pobiera prąd. A to z powodu...
Przyciski muszą załączać przekaźnik nawet jak kontroler będzie wyłączony, to konieczność w moim przypadku stąd takie kombinacje. Na razie zrobię podciąganie wewnętrzne i zobaczymy jak będzie sobie radziło w dośc trudnym środowisku. Czyli generalnie zewnętrzne podciąganie jest pewniejsze? A jak wtedy ustawiać port, też go podciągać czy ustawiać jako...
≈0,3mA na dzielniku R10+R43 to święta racja, ponieważ tu nie są potrzebne żadne prądy, a tylko dzielnik napięcia dla ADC więc zwiększę opory, Inne spojrzenie na dzielnik. http://obrazki.elektroda.pl/3298128800_1... Pin portu ustawisz tuż przed pomiarem na zero ( dokładasz parę omów ) , po czym wracasz do jedynki bez podciągania...
Dziś zakończyłem pierwsze testy ale niestety efekt marny :-( Osiągnąłem tylko to że na diodach sygnalizuje error, busy, selected i mogę inicjalizować drukarkę z procesora. Czy powinienem nóżki danych podciągać do masy w przypadku stanu niskiego?? I czy na tym porcie danych powinienem wysyłać kod znaku ascii czy komendę ESC ??
Ja tak miałem, gdy porty były ustawione na wejścia ale bez wewnętrznego podciągania. nie wiem jak to zrobić w bascomie, ale normalnie wpisuje się np DDRx=0 - wejście PORTx =255 - wejście z podciąganiem Jesli nie da się tego już zmienić w programie, to do każdego wejścia podłącz rezystor do + zasialnia. powinno pomóc.
Witam. Wiem, że ten temat był wielokrotnie omawainy, ale z tamtych wypowiedzi nic nie zrozumiałem. Mam atmegę8 i problem jest taki, że przełączniki podpięte do portów nie chcą działać. Z tego co wiem, to trzeba je podciągnąc do + za pomocą rezystora albo wewnętrznie(?). Próbowałem podciągnąć rezystorem (różnymi rezystorami) i nic z tego. Na porcie mimo...
Witam W zasadzie powinno działać ale :) To mogłoby funkcjonować pod warunkiem że piny 1 i 0 portu D są fizycznie sciągnięte do masy rezystorami (np. 10k). Wpis w programie: Portd.0 = 0 Portd.1 = 0 nie daje nic , bo i tak 'by default' taki stan tam występuje, a nie jest to równoważne z podciąganiem portu. Owszem jest tego radzaju możliowość ale tylko...
Witam. Napisałem program do migania diodami i mam trzy pytania: 1.Czy da się ustawić cały port w stan spoczynku (coś w stylu PORTD = 0)? 2.Czy po każdej komendzie IF trzeba pisać END IF, czy da się to jakoś ominąć? 3.Czy poniższy kod jest poprawny, czy będzie działał? 1. Tak, możesz tak pozostawic. Bascom akceptuje kilka form ustawienia poziomu pinów...
Pisałem progam. Najpierw kofiguruje we/wy , podciągam porty na 1, pisze program potem F4 i F7 jak się wgra to układ jak zaprogramowany to tak działa. Zawsze w bascom wybierałem w zakładce chip mój układ który programuje czyli atmega8. Nigdy nie miałem problemu Dodano po 55 m8adef dokładnie tak widnieje w zakładce
Przetestowałem płytkę w taki sposób że wyjąłem ATmege i połączyłem ze sobą wyjście i wejście które podciągałem do procka(atmegi) i układ działa jak echo, wysyłam z portu COM i dostaje to samo. Więc jaki błąd popełniłem dalej jeżeli chodzi o komunikacje maxa i atmegi????
Zacznij od Set PORTD.6 a nie Set Pind.6 Rejestru PIN nie da się ustawiać. Co za tym idzie nie masz podciągania na tym pinie. Jest pewne niezrozumienie tego tematu w Bascom. Jeśli piszesz Config to potem mozesz pisać Pin albo Port, ale przez ten poprzedzający "Config" ustawienie będzie się tyczyło DDR.x Jednak ustawia się potem PORT.x a czyta z PIN.x
wiem że można to zrobić za pomocą toggle ale czy w takiej postaci ten kod jest poprawny i będzie działał zgodnie z założeniem? .................. Nie. Ten code nie jest porawny(!) Począwszy od configuracji i ustalenia stanów spoczynkowych portów wejściowych masz w konsekwencji cały program wymagający korrecty, albo tworzenia go od nowa... Wejście nie...
teraz jaśniej ????? Nie sądzę aby to było jaśniej. Namąciłeś mu w głowie okropnie!..... O wiele łatwiej jest przeczytać ze zrozumieniem jeden mały paragraf w „BASCOM Manual” odnośnie konfiguracji portów (str.145/146) PortB As General Digital I/O , gdzie w bardzo wyraźny sposób określono różnice co należy rozumieć PORT a co jest PIN. W dalszej...
Przy takim napisaniu programu funkcja debounce nie jest potrzebna bo jest wait 1 i to ona przytrzyma informacje o stanie przycisku. Wyrzuć " Set Porta.2" bo w tym przypadku nie jest potrzebne, jeśli definiujesz porty jako wejścia to będą podciągane do góry wewnątrz procka. Poza tym ducker1 dobrze napisał. W Bascomie aby zobaczyć stan rejestru odpowiadajacego...
Cóż, podpowiem jeszcze raz: 1. Sprawdź w necie jak odczytać stan przycisku ---- EDIT: w necie też piszą różnorakie bzdury o tym zatem może napiszę jak być powinno: Zwykle przyciski podłączamy tak, aby zwierały pin do masy. Aby odczytać stan danego pinu musimy: 1. skonfigurować go jako wejście instrukcją (np. - istnieje wiele odmian konfiguracji, ale...
ugh123 kolega miał dobrze zadeklarowane porty, a ty kazałeś mu poprawić na błędny zapis!! dla jasności (ostatnio pisałem to na forum w różnych tematach ze 100 razy): Config PORTn = Input / Output / &Bxxxxxxxx Config PINn.x = Input / Output 'czyli: Config Pinb.3 = Output i dla jasności: rejestr PINn to rejest odczytu rejest PORTn to rejestr zapisu...
Jesteś pewien że to LCD ? Czy procesor się nie resetuje lub zawiesza ? (umieść w kodzie polecenie gaszące i zapalające diodę podłączoną do któregoś z portów i sprawdź czy miga po wystąpieniu krzaków na LCD) Dla testu puść sygnał E kabelkiem w ekranie. Podciąganie wejść LCD jak najbardizej. Może kondensator 100nF przy zasilaniu na płytce LCD ?
Najkrótsza podpowiedź jakiej udzieliłem: Brak debouncingu. Program ten jest w całości statyczny (sprawdza tylko stan portu/pinów wejściowych) a output ma również charakter statyczny (nie zlicza impulsów czy też toggle stanu wyjścia) więc debouncing byłby nie konieczny. Inna rzecz to: brak tu kilku słów lub częci programu na temat podciągania do Vcc...
W moim programie brakuje konfiguracji podciągania portu D (ciągle zapominam albo o podciąganiu albo o konfiguracji wejść/wyjść). Po instrukcji Config B = Input należy wstawić PortD = &b00001100 lub na cały port PortD = &HFF. Brak podciągania może powodować niestabilnbą pracę. Można również dołączyć rezystory 10k od +5V bezpośrednio do wyprowadzeń procesora....
Mam nadzieję, że nie jest to jakiś bug w BASCOMie i u Ciebie będzie się zachowywać poprawnie. Z rejestrów PIN można tylko czytać wpisem do nich nic nie zmienisz. Dlatego podciąganie "internal pullups" włącza się w korespondujących rejestrach PORT. To jest błąd: [syntax=vbnet]Pinb.3 = 1 ' internal pull-up Pinb.4 = 1 ' internal pull-up Pinb.5 = 1 ' internal...
nie dotykam ale wytłumaczę to inaczej . Tak to jest... Jeżeli pin wejściowy reaguje na dotyk palca, to pierwszy powód jest brak podciągania na tym porcie, jeżeli jednak port ten jest podciągnięty do Vcc to przyczyną jest błędna konfiguracja tego portu. Wejścia konfiguruj raczej: config PINB.1 = input ; zamiast: config PORTB.1 = input Bascom tu nie...
Dzięki wielkie za dobre chęci - doszedłem już sam co było powodem , a mianowicie był pęknięty jeden kondensator (27p) przy kwarcu(mimo tego że był nowy) - po jego wymianie zadziałało i działa na wszystkich portach - jest podciąganie - szczerze mówiąc nie wiem czemu , co miał ten kond do podciągania , ale widocznie coś miał bo nie działało. Wielkie dzięki...
Udało się zejść do wartości <2µA ! Okazało się że pływał pin MOSI, mimo że cały port był ustawiany jako wejście i podciągnięty do "1". Robię teraz tak że najpierw cały port ustawiam jako wejście, podciągam, a na koniec ten jeden pin ustawiam na wyjście i wystawiam stan wysoki. Doszedłem do tego w ten sposób, że wziąłem kawałek przewodu który...
o to chodzi, że chcesz sterować rejestrem PIN, a więc wytłumaczę: Każdemu portowi w procesorach serii AVR8 są przyporządkowane 3 rejestry: 1. DDRn (np. DDRB) odpowiedzialny za określenie kierunku wyjście/wejście (w BASCOM ustawiasz to automatycznie za pomocą Config) 2. PORTn (np. PORTB) odpowiedzialny za stan pinu (w przypadku konfiguracji jako wyjście...
Witam, po pierwsze gdzie konfigurujesz końcówkę 0 portu D jako wyjście? Port D ten do którego dołączyłeś przekaźnik skonfigurowałeś jako wejście klawiatury. Do którego pinu w końcu podpięty jest przekaźnik? Wg. schematu gdzie indziej. Sprawdź miernikiem podciąganie do plusa. Co pojawia się bezpośrednio na nodze procesora??
Zobacz to: $regfile = "m8def.dat" $crystal = 16000000 Config Portb = Output Portb = &B00000000 Config Portd = Input Portd = &B11111111 Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Disconnect , Prescale = 1 Przycisk Alias Pind.1 Dim D As Byte , Czekaj As Integer D = 0 Pwm1a = D Czekaj = 0 Do If Przycisk...
Witam, Wykonałem płytkę, l fakt z przerwaniem od zegara jest problem bo brakuje podciągania. niestety u mnie aby RTC się odblokował muszę podawać ponad 7V na stabilizator a testowo podpinam pod 15V zasilacz i podciąganie do linii 15V (bo tam wygodnie można wlutować rezystor) jest chyba trochę ryzykowne ( czy linia pracująca jako wejście przerwania nie...
Takie problemy były już na elektrodzie. Możesz zrobić tak jak napisał przedmówca. Przycisk od portu do masy, poprzez set port podciągasz wejście do "+" i masz cały czas stan wysoki, po wciśnięciu sciąga go do masy i masz stan niski. Jeśli masz przycisk między portem a "+" to musisz go podciągnąć do masy dodatkowym rezystorem, bo nie ma wewnętrznego...
Najpierw wyjaśnij, co to jest "sterowanie plusem". Jeśli sterujesz podając napięcie z wyjścia jakiegoś układu, to nie musisz nic podciągać w żadną stronę. Jeśli sterujesz z wyłącznika (np. przycisku, czujnika stykowego itp.), to ten wyłącznik zwiera wejście do masy albo do plusa, w zależności od tego, jak jest podłączony. Kiedy wyłącznik jest rozwarty...
Witam Analizując http://www.elektroda.pl/rtvforum/viewtop... program w niektórych przypadkach mam problem ze zrozumieniem Trudno zrozumiec, bo akurat wybrałeś jego pierwszą wersję (zupełnie błędną), która uległa kolejnym poprawkom w dalszej dyskusji. Najbliższa do porawnej była umieszczona pod postem #10 (chociaż i ta wymaga...
W AVR domyślnie kierunek linii ustawiony jest na wejście. Wtedy ustawiając jej wartość na jeden podciągasz linię do plusa poprzez wewnętrzny rezystor. Ustawiając zero zmieniasz stan linii na wysoką impedancję. Pewnie o to chodzi. Proponuję zajrzeć do manuala. P.S. Aby uzyskać żądany stan musisz zmienić kierunek linii na wyjście. Ale w bascomie nie wiem...
Najczęściej robi się to odwrotnie - pin B.1 zwierasz do masy, a komendą SET podciągasz go do plusa zasilania. Wtedy program sprawdza "If portb.1=0 then...". Przy okazji, warto używać aliasów, wówczas program jest czytelniejszy, a ewentualna zmiana pinu to poprawka jednej linijki. Jeśli jednak z jakiś powodów musisz wyzwalać port jedynką, to podajesz...
Witam Programowo nie pomogę bo nie znam Bascoma :D ale... być może problem jest typu sprzętowego. Czy po resecie uC wyjścia ustawiają się w prawidłowej konfiguracji ( oczywiście pyt.1 - czy masz opornik podciągający reset )? Pozdr.
Gdy programowałem w bascomie nigdy nie dawałem rezystorów podciągających. W programie dopisywałem linijkę np. Set Porta.1 i to w zupełności wystarczało. Nie miałem nigdy problemów z zakłóceniami. No właśnie też tak zrobiłem, ale niestety w uC wypalił mi się port. Pomyślałem - przypadek, ale jednak gdy w 3 procku zrobiło się to samo, zacząłem wątpić....
Nie mam ściśle określonej liczby cykli, chce po prostu sprawdzić czujniki jak najszybciej. Zamiast Megi8 użyje AtMegi16 żeby uprościć sprawę wyświetlacza, po prostu podłącze go do dodatkowych portów A. Wyświetlacz LCD bedzie 2x16 ewentualnie 2x8. Spróbuj ten przykład (nie testowany) (!). Na symulatorze wygląda OK..............(?) Popraw/wygładź jeżeli...
Np. W helpie do Bascoma. Akurat help Bascoma nie precyzuje wyraźnie tego zagadnienia. Natomiat w dośc prosty sposób datasheet określa właściwości rejestrów związanych z portami processora (str.51) "Three I/O memory address locations are allocated for each port, one each for the Data Register - PORTx, Data Direction Register - DDRx, and the Port Input...
config portd=&B1111100 Wcześniej wejściami były Pind.1, Pind.2:idea: No ale dobrze. Więc tak: podciąganie wejść przez wewn. MOSFETy działa w ten sposób, że końcówki mają własną logikę z bramką NAND. Jedno jej wejście jest przez negator spięte z rejestrem DDRx,a drugie-bezpośrednio-z PORTx. dzięki temu tranzystor podciagający końcówkę do VCC włącza...
Magistralę ciągnę dwoma przewodami. Rezystor podciągający 511om bo powyżej nie działa nic tzn tak od 640om zanika na 1k nie ma już nic. Na czas konwersji podciągam DQ do plusa przez tranzystor. Odczyty termometrów są prawidłowe, więc cała magistrala działa na AT32 ale z przełączników działa tylko jeden. Na AT168 działa wszystko cacy więc napewno chodzi...
No fakt, zrobiłeś wszystko zgodnie z poprzednimi zaleceniami. Jest tylko jedno ale; gdy obsługujesz coś, co jest wejściem, to podciągasz komendą Set PORTX.X, natomiast stan odczytujesz : If PINX.X, a nie portx.x Jeśli dobrze zrozumiałem, to są aliasy: In1 = Portc.2 In2 = Portc.0 zamiast tego wpisz: In1= pinc.2 in2=pinc.0 i poszukaj jeszcze innych takich...
Czy ten kod nadał by się do zliczania impulsów z INT0, ewentualnie co trzeba by zmienić ? Nie. Po pierwsze: Nie możesz liczyć na dokładny pomiar czasu stosując Start/Stop Timer przy użyciu prescalera o wartości różnej od jeden. Wartość timera może zostać incrementowana już po jednym ticku zegara albo nawet po 100; 150; 193 itd. tickach zegara taktującego...
Na początek mam trzy wiadomości. Dwie złe i jedną taką sobie. 1.Nie znam się na sterowaniu telefonów- może ktoś inny pomoże. 2.Znowu fusebity- PORTC jest ustawiony do obsługi JTAG- trzeba to wyłączyć. Wchodzisz w ustawianie fusebitów- tak jak poprzednio. Szukasz Fusebit High H - i ustawiasz na disable. 3.Skoro skonfigurowałeś PORTC jako wejście- to...
Zacznijmy od pierwszych trzech linijek. Nie ma $regfile= Ustawiasz PortB jako wyjście. Ustawiasz dwa najmłodsze piny w stan niski. Ale nie wiadomo co się ustawi bo instrukcje oddzielasz średnikiem(; ) a nie dwukropkiem(: ). Kompilator nie ostrzega tylko robi jakieś bzdury- np. ustawia wszystkie piny w stan niski. Potem tu: W1 Alias Portb.4 W2 Alias...
Nie masz włączonego podciągania,tak wiec jeśli wykrywasz załączenie switcha: stanem wysokim to dajesz reset portx.x lub portx.x=0 stanem niskim to dajesz set portx.x lub portx.x=1 (dane polecenia w pętli lub przed instrukcą sprawdzania stanu na pinie) Porty mikrokontrolera sa na tyle czułe ze sciągaja cały syf z otoczenia ,dlatego można dać na zewnątrz...
Akurat w procku ATmega128 nie dałoby się przez przypadek przeprogramować pinu RESET jako port I/O bo jest on na całkiem oddzielnym pinie, zatem nie ma możliwości aby on wystawiał stan niski na zewnątrz, a to wynika z twojego opisu , że podciągasz go do VCC i pomimo to jest tam stan niski. Wg mnie coś źle robisz, sprawdzasz, masz uszkodzony miernik,...
Odświerzam, ale może jakiś pomysł poddam odnośnie obsługi panela dotykowego, chodzi o wykrywanie czy został nacisnięty jakiś klawisz. Można to zrobić np.: podciągamy obydwie strony warstwy X panela do zasilania poprzez uaktywnienie pullup w porcie, łaczymy obydwie strony warstwy Y do masy poprzez podanie stanu L na przez port, wejście przerwania sprzętowego...
To by potwierdzało moje podejrzenia o błędnym sterowaniu portów - kierunek zamiast stanu wyjścia, stale włączony rezystor podciągający.
Nie już jest wszystko w porządku wszystko tak jak w schemacie tylko trzeba jeszcze dodać ten impulsator....Przepraszam za zamieszanie... Dodano po 1 Tutaj Masz przykład w bascomie obsługi enekodera ' (c) 2004, MCS Electronics ' Encoder.bas ' Demonstracja funkcji ENCODER '---------------------------------------... 'Enkoder...
To wszystko o czym mówisz Pawle mam zachowane wiem ze porty wejściowe maja być podciągnięte do VDD(zasilania), u mnie w aducu ma byc jeszcze wpisane zero do rejestrów poru. Klawiatura mi działa, ale chodzi mi o to że nie mam tego zabezpieczenia przed przytrzymaniem przycisku przez dłuższy czas. Chciałbym żeby procesor nic nie robił wtedy, bo program...
To by musiało być coś takiego: Config portb.3 = input 'końcówki portów domyślnie są wejściami, więc nie jest to konieczne portb.3=1 'podciągamy wejście do plusa, bo przycisk będzie między wejściem i masą config portd.0 = output 'wyjście na diodę '1 wpisana do portx.y to stan wysoki na wyjściu dim tryb as byte 'deklaracja zmiennej do 'obsługa prycisku...
Pobieżnie przejrzałem Twój program (właśnie wychodzę do pracy...) i od razu widzę babola przy konfiguracji portów jako we/wy. Masz tam coś takiego: Config Portb.0 = 1 , Portb.1 = 1 , Portb.2 = 1 Portb.0 = 0 : Portb.1 = 0 : Portb.2 = 0 Wg mnie powinno być: Config Pinb.0 = Output Config Pinb.1 = Input itd... Aby to rozjaśnić załączam kawałek helpa...
Na stronie 16 datasheet jest opis, uproszczony przykład odczytu (żadne błędy nie są sprawdzane): [syntax=basic4gl]' przykładowa konfiguracja dla sprzętowego TWI Atmega 2561 $lib "i2c_twi.lbx" ' biblioteka obsługująca hardwarowe TWI Config Scl = Portd.0 ' konfiguracja SCL i SDA Config Sda = Portd.1 Config Twi = 100000 ' 100KHz 'Config Twi = 40000 ' 40KHz...
Może takt nie jest "plusowy" Wiesz, że po resecie każdy PORT ma wartość zapisaną która można odczytać w nocie "Default" albo "After reset" To najcześciej oznacza że każdy port ma po Reset wartość 0 (zero). Czyli nie ma żadnego podciągania do plusa. Jednak włączenie portu jako Output przestawia DDR i ze zwykłego Floata (pływający/mogący przybierać różna...
Ale dlaczego chcesz wykorzystywać końcówkę przerwania zewnętrznego jako wyjście? Przecież logiczne jest, że ma to być wejście, chyba że chcesz generować przerwanie programowo, ręcznie ustawiając stan końcówki, co w praktyce raczej mija się z celem. Końcówkę deklarujesz jako wejście z pull-upem do plusa i wystarczy, końcówka jest wtedy podciągana poprzez...
Jeśli tak znasz C jak Bascom to nie istotne czy zaczniesz pisać w C czy w Bascomie czy w czym zechcesz. Po pierwsze to nie Config Portb.0 = Output tylko Config Pinb.0 = Output Po drugie ciekawe czemu tak cho chwilę żonglujesz dyrektywą $crystal 4000000 czy zmieniłeś w ogóle fusebity na zewnętrzny rezonator kwarcowy ??? a jeśli tak to po jaką choinkę...
Config Portc = Input Config Pinc.0 = Input Config Pinc.1 = Input Config Pinc.2 = Input Config Pinc.3 = Input Skoro Config Portc = Input to po co Config Pinc.0 = Input Config Pinc.1 = Input Config Pinc.2 = Input Config Pinc.3 = Input Proponuję tak Config Pinc.0 = Input Config Pinc.1 = Input Config Pinc.2 = Input Config Pinc.3 = Input Portc.0 = 1 Portc.1...
Przełącznik mechaniczny w mikrokontrolerze? -to taki elektroniczny mezalians.Z uwagi na ważny temat napisze mój programik ' uwaga niedoskonały' $regfile = "m8def.dat" $crystal = 1000000 Config Pinb.1 = Output Config Pind.2 = Input Config Pind.1 = Input 'port do Int0 Set Portd.2 ' podciągam na stan wysoki Set Portd.1 Wy Alias Pind.1 ' zamiana nazwy ReturnWl...
Co do schematu to używając mikrokontroler ATTiny13 i dwa przekaźniki wyglądał by to tak: http://obrazki.elektroda.pl/7950091900_1... A przykładowy program napisany naprędce w BASCOM-ie wygląda tak [syntax=basic4gl] $regfile = "attiny13.dat" $crystal = 9600000 $hwstack = 8 $swstack = 8 $framesize = 8 ' Konfiguracja portów ' PB0 jako podciągane...
Program napisany w BASCOM AVR i wyskakujące 3 błędy , mogę wiedzieć dlaczego one wyskakują podczas kompilacji , poniżej zamieszczam kodzik. 'podwójny woltomierz i amperomierz (dwa kanały pomiaru napięcia i dwa kanały pomiaru prądu 'UWAGA _ PONOWNE WGRANIE PROGRAMU SKASUJE WARTOŚCI WSP KOREKCJI Z PAMIECI EPROM '---------------------------------------...
1. źle konfiguracja pinów, poprawnie powinno być Config PINx.n = Input/Output 2. po co potem drugi raz konfigurujesz za pomocom Config PORTn = &Bxxxxxxxx ?? niepotrzebne to jest. 3. Włączaj podciągania tylko na potrzebnych pinach, tzn: Set PORTD.0 Set PORTD.1 4. wszystko fajnie w pętli głównej, ale źle konstruujesz ify, ogólna składania wygląda tak:...
Oj. Koledzy. Może po raz 10 to wyjaśnię. Do konkretnego fizycznego portu przypisane są trzy rejestry uC Pierwszy rejestr to DDRX (X to oznaczenie portu). W rejestrze tym ustawia się kierunek działania tego portu. Jedynka to wyjście na danej końcówce, zero to wejście. W Basconie ustawia się to instrukcją Config Port X = Input lub Config Pinb.1 = 0 :...
Przepraszam za taką formę ale nie mogłem skopiować błędów. np; w końcowej części kodu napisałem Lcd tempu to znaczy że na wyświetlaczu pojawi się wartość zmiennej Tempu czy trzeba to zrealizować w inny sposób? 1. Zechcesz skopiowac tylko tabelkę błędów: -klikasz myszką w dowolnym miejsc na górny bar tabelki z napisem 'Errors', a następnie "Alt + print...
Wydaje mi się że adres dla odczytu/zapisu powinien mieć wartość &HF1. Jeżeli korzystasz z hardwarowego TWI (np. w Atmega 32 pin PC.0 i PC.1) to masz zamienione SDA z SCL. [syntax=basic4gl]$regfile = "m32def.dat" $crystal = 16000000 $hwstack = 40 $swstack = 32 $framesize = 32 ' konfiguracja hardwarowego TWI dla ATmega 32 $lib "i2c_twi.lbx" ' biblioteka...
Uda się tak zrobić, żeby kontroler reagował na switch? Chodzi o to że naciskam switch, kontroler robi coś tam i zapala diodę. Ty lepiej powiedz co chcesz uzyskać tak ogólnie, to chętnie ci ludzie podpowiedzą jak to rozwiązać. Bo wymyśliłeś sposób iście cyrkowy, potrójne salto mortale z pętelką a w sumie tylko po to, żeby JEDEN RAZ zadziałało po resecie...
Jeszcze wracając do poprzedniego pytania o sczytywanie z klawiatury to w końcu zajarzyłem że niezbyt dobrze napisałem , więc poprawiłem na : $regfile = "Attiny2313.dat" $crystal = 4000000 Config Portd = Output Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portd.2 , Db5 = Portd.1 , Db6 = Portd.5 , Db7 = Portd.4 , E = Portd.0 , Rs = Portd.6...
Ja bym to zrobił nie przez zmienną Menu i porównywanie Case, tylko przez flagi bitowe, a najlepiej poszczególne bity np. Dim Menu_manual as Byte a później ustawiał i sprawdzał poszczególne bity Manu_manual.0 Manu_manual.1 Manu_manual.2 itd. możesz wtedy używać operatorów logicznych w IF. przyciski mam podciągnięte sprzętowo 4k7 do VCC, więc podciąganie...
W Bascomie wyglada to tak: Config PORTA = Input PORTA = 255 '(lub &hFF lub &b11111111) Spowoduje to ze port A bedzie portem wejsciowym z podciagnietymi wejsciami do + zasilania. Jezeli w drugiej linijce znajdzie sie zero to wtedy port bedzie w stanie "trzecim" czyli tzw. "plywajacym" czyli nie bedzie podciagniety do niczego. Asembler: ldi r16,0x00 out...
:) O rzeczowa dyskusja - taka mi się podoba :))) Bez względu na kierunek transmisji stan spoczynkowy linii jest wysoki, stąd mowa o podciąganiu. Co ma załatwić jej wysoki stan po konwersji na poziomy TTL/CMOS ? Mój pomysł jest taki, że rezystor, gdy stosujemy rozwiązanie z tranzystorem, chyba, że o stan wysoki zadba linia wejściowa mikroprocesora, co...
Atmega 8 posiada sprzętowy interfejs TWI(I2C), więc go może wykorzystaj. Err (0-ok, 1-błąd). Nigdzie w programie zmiennej Err nie sprawdzasz. Jeżeli nie chcesz po każdym wysłanym bajcie sprawdzać zmiennej Err można to zrobić tak, zamiast: I2csend : [syntax=basic4gl]Const Saa1064_buf_len = 6 Dim Saa1064_buf(saa1064_buf_len) As Byte '.............................
Dobra rada, nie używaj zapisu: [syntax=c] DDRF |= 1<<7; [/syntax] tylko zdefiniuj sobie port i wyprowadzenie i używaj: [syntax=c] OW_PORT |= 1<<OW_PIN; [/syntax] a jeszcze czytelniej: [syntax=c] OW_PORT |= _BV(OW_PIN); [/syntax] Za chwilę kod rozrośnie się, będziesz chciał zmienić nr pinu i będziesz miał dużo roboty, w której o pomyłkę łatwo....
Ostatnie czasy na Elce coraz więcej nie działających procesorów/Programatorów/za szybko wykonywujących się opóźnień... W związku z tym może warto by było zrobić coś w stylu "Kompedium" co zrobić, jeśli nie działa...Jeśli macie jakieś z życia przykłady piszcie, będę uzupełniał:) Nie działa procesor: 1) sprawdź czy jest zasilanie na WSZYSTKICH Nóżkach...
Przerobiłem program na ATtiny2313 dodałem jeszcze jeden przycisk i ustawiłem baud dla TX i RX przeliczyłem Compare0a (za pomocą kalkulatora z MkAvrCalculator) nie bawiłem się już w ręczne liczenie :) Zmieniłem też ustawienia portów gdzie wpisałem już w konfigurację portu podciąganie dla D1 teraz wygląda to tak[syntax=vbnet]$regfile = "attiny2313.dat"...
1. rezystor wywalić - przyciski bezpośrednio do GND 2. diody odwrotnie (obydwie) 3. w kodzie (część konfiguracyjna) uaktywnić wewnętrzne podciąganie do Vcc PIND5 i PIND6 (PORT.X = 1 : DDR.X = 0) 4. no i oczywiście zmienić interpretację przycisków w programie na przeciwny stan Pozdr, Light-I
Witam. Jak należy konfigurować poleceniem w Bascom Config PORTx=&Bxxxxxxxx i PORTx=&Bxxxxxxxx piny używane do np. taktowania procesora-np. xtal, lub piny używanego ADC lub LCD lub np, jakiegoś interfejsu? CZy gdy są wejściami - włączać R podciągające czy niech pin "wisi w powietrzu"?
Ta zmienna u Ciebie jest dzielona cały czas prawie 16mln/s :D Na początku programu ustawiasz piny enkodera jako wejściowe, ale chyba omyłkowo, zamiast włączyć podciąganie na PORT B .0 i PORT B .1 włączasz segmenty na PORT C :D Poprawiłem co nieco, ale pewnie nie wszystko. Testnij. [syntax=vbnet] $regfile = "m8def.dat" $crystal = 16000000 $hwstack =...
silniki od wkrętarek, jak najbardziej ale oczywiście te z przekładnią planetarną przy zasilaniu takiej wkrętareczki napięciem 3V mają kopa i spory moment obr. a co do enkoderów to myslę że można by pomyśleć nad tarczą z przesłonkami od myszki i resztą elektroniki tzn.. tylko nadajnik IR i odbiornik IR o ile się nie mylę to jest to zintegrowany odbiornik...
Witam forum Jestem początkujący. Zakupiłem sobie mikrokontroler Atmega8. Początkowo bawiłem się w podpinanie tranzystorów NPN i wszystko było okej. Lecz, teraz spróbowałem podłączyć tranzystor PNP i mam problem. Wtedy gdy mam płytkę z Atmegą podpięta pod programator wszystko jest dobrze, tzn. ustawiam 0 na port i tranzystor zaczyna "przewodzić", ale...
podciąganie pinów bascom bascom podciąganie wejścia bascom rodzaje portów
anoda magnezowy zamontować tyrystorowy moduł zapłonowy schemat lotnicze słuchawki
Poprawa jakości zestawu głośnomówiącego w radiu RT6 Opel Astra Bertone - Niedziałająca lewa tylna lampa stopu i pozycyjna