Włącz podciąganie na wybranym pinie w trybie wejściowym.
Standardowy błąd początkującego. Nie włączone wewnętrzne podciąganie (pull-up) na wejściach na których są switche.
...pozostałe piny są w stanie niskim czyli 0 V. Źle, wejścia te mają wyłączone podciąganie do VCC.
Najprościej przeczytać dokumentację. Są nawet przetłumaczone wersje.
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.
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.
Stawiam na brak podciągania wejść przycisków.
, 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...
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
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.
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.
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....
Jeśli wejście sterujące na PD.2 to przycisk, to czy ma podciąganie rezystorem? Programowego nie widzę.
Panowie, jeżeli steruje procesor plusem to nogę która jest wejściem muszę podciągnąć rezystorem do masy. Jak jest kiedy steruje minusem? Czy muszę podciągać nóżkę rezystorem do plusa ?
Aby wyprowadzenia PCF8574 były wejściami trzeba wysłać np. 255 (ustawić 1 na wybranym wejściu). Nie jest potrzebne zewnętrzne podciąganie.
Jeśli "noga" procesora ustawiona jest jako wejście to stan logiczny na tym wejściu odczytujesz za pomocą PinX.y. Jeśli jako wyjście to stan logiczny na wyjściu ustawiasz za pomocą PortX.y. Dodatkowo, gdy "noga" procesora jest jako wejście to za pomocą PortX.y włączasz lub wyłączasz wewnętrzne podciąganie wejścia poprzez wbudowany rezystor do VCC.
Na piny P1.0 i 1.1 musisz podać stan wysoki, żeby wejścia komparatora nie były połączone z masą. Te piny nie mają wewnętrznego podciągania do Vcc, więc będą "wisiały w powietrzu" (i tak ma być :D ). Stan wyjścia komparatora odczytujesz jako pin P3.6 W BASCOMie jaokoś tak (nie pamiętam, dawno nie używałem, ostatnio tylko asm :D ): SET 1.0 SET 1.1 żeby...
Podciągałeś wejścia do zasilania wewnętrznym rezystorem? /edit: zauważyłem, przepraszam
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...
1) Nie potrzebne jest ustawianie stanów spoczynkowych. Jeśli tego nie zrobisz będą miały domyślną wartość czyli chyba 0. Tak samo domyślnie wszystkie piny są ustawione jako wyjścia czyli w (DDRX.Y = 1 <- nazwa rejestru kierunkowego w BASCOMIE nie musisz się tym martwić). 2)Co do drugiej części pytania powiem tak: najbardziej naturalnym rozwiązaniem...
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...
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...
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...
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...
Po pierwsze to po resecie mikrokontrolera piny są ustawione jako wejścia więc nawet nie trzeba tego robić Po drugie to kierunek ustala się za pomocą rejestru DDRx a nie PORTx (to nie Bascom) Po trzecie to musisz doczytać jeszcze o przesunięciach bitowych bo szybko na tym polegniesz w C. To podstawa. Po czwarte to klawisze (słicze) musisz mieć albo podciągnięte...
Ponieważ można włączyć wewnętrzne podciąganie pin'a do plusa zatem aby zmienić stan na wejściu wystarczy je dołączać do masy.
Te wejścia są skonfigurowane poprawnie, choć podciąganie jest podwójne (przez mikrokontroler i zewnętrzny rezystor). Któryś zapis powinien się wykonać, w zależności od momentu w którym puścisz przycisk...
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...
Jeżeli przycisk zwiera wejście do masy to trzeba jeszcze włączyć wewnętrzny rezystor podciągający wpisując do portu 1.
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...
Nie mogę skompilować z taką deklaracją PORTD.0=1, używam KontrollerLab pod Linux-a, i nie trawi takiej deklaracji. Chyba że to jest z BASCOM-a? Ale obsługa przycisków jest podobna, na początku podciągam je programowo do plusa, potem ustawiam jako wejścia i dopiero odczytuję.
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??
[syntax=basic4gl]$lib "mcsbyte.lbx"[/syntax] W helpie przy GETRC5 zalecają użycie tej biblioteki. Odbiornik IRED powinien wystawiać 1 na wyjściu gdy nie odbiera żadnego sygnału (sprawdź czy tak jest), więc sygnał zaczyna się stanem niskim. [syntax=basic4gl]If Pind.2 = 0 Then Gosub Rc5 [/syntax]jest zatem właściwe Spróbuj przed pętlą główną skonfigurować...
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...
idź na stronę www.picbasic.org jest tam kompilator którego osobiście używam i polecam. Proton-plus może to jednak program ponosi odpowiedzialność za złe zachowanie się procka lub brak podciągania wejść , zły zasilacz, układ resetu. ewentualnie mogę ci przepisać w wolnej chwili soft z AVR na pica pozdrawiam
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 ?
Wygląda tak jakby ładowała się jakaś pojemność. Upewnij się że wszystkie końcówki mikrokontrolera połączone z modułem są w ustalonym stanie. Jako wyjścia, albo wejścia z włączonym podciąganiem. Mikrokontroler i moduł zasilane są z tego samego źródła? Problem może wystąpić kiedy napięcia na końcówkach I/O nie osiąga pełnej wartości napięcia zasilania....
Po pierwsze w ogóle nie widzę sterowania wyjściami. Po drugie nie zakładasz opcji, że kable są zwarte ze sobą, co może skończyć się podsmażonym procesorem. Ledy źle podłączone Poza tym z tym schematem boli rozdzielczość? Daj coś bardziej wyraźnego, uwzględnij zasilanie, podciąganie resetu. Postaraj się zapomnieć w Bascom o Goto itp. Styl programowania...
Tak przeglądając sobie datasheet do obydwu układów zauważyłem ze pcf8583 nie ma wejścia reset tylko adres. Natomiast PCF8593 posiada wejście reset i wymaga podciągania tej lini do Vcc. Masz podciągniętą tą linie? Może układ w ogóle nie startuje?
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...
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....
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...
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????
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...
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...
Witam Zaczynam rozumieć... ufff nie trzeba było tak od razu :) Pomysł na podciąganie wziąłem z praktyki (atmega128 / 16MHZ). Nie wiem dlaczego ale gdy nie ustawiam portów jako wyjścia lub wejścia to przy naciskaniu klawiatury czasami zdaży mi się iż co innego zostanie wybrane. Po spróbowaniu i skonfigurowaniu portów 4-ech wyjściowych i 4-ech wejściowych...
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...
Config Debounce = 30 ' Wydłużenie czasu na wygaszenie drgań styków do 30ms ' Pin wejściowy musi mieć podciąganie (wewnętrzne lub zewnętrzne) do Ucc 'by gdy przycisk jest wciśniety był wymuszony konkretny stan wejścia Do ' Główna pętla programu debounce p1.1,0,klaw112,sub Loop klaw112: obsługa ret
http://obrazki.elektroda.net/29_12872391... Opis działania tego skomplikowanego układu: Po włączeniu zasilania sprawdź przed upływem 1/10s stan na pinie do którego jest podłączony. Pin jako wejście bez podciągania. Jeśli jest 0- układ nie był zasilany przez ostatnich 100s. Zaświeć odpowiednią diodę. Jeśli 1- układ był zasilany w ciągu ostatnich...
Ech... sorry, ale nic z tego nie będzie... Proponuję Ci Kolego wziąć coś prostego na warsztat. LCD graficzny to trochę wyższa szkoła jazdy. ...do tego edytujesz posty zmieniając diametralnie ich sens. Podpowiedź : podciągasz wejście do VCC, a następnie sprawdzasz w warunku czy jest podciągnięty. Dwa warunki pod rząd nie powodują zmiany zmiennej. Obsługę...
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...
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...
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...
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...
Słuchaj możliwe błędy w przerwaniu: 1) nie ustawione jako wejście 2) złe wyzwalanie (w to wlicza się brak podciągania) 3) brak włączonej obsługi przerwań 4) jeszcze raz złe wyzwalanie! 5) źle zrobiony hardware! 6) Nie krzycz na ludzi mających większe pojęcie niż Ty i wytykających Ci oczywiste oczywistości gdzyż jak już to zadziała, będziesz marudził...
Najpierw "mikroswłicz" który po wciśnięciu drga. Czyli przełącza wielokrotnie- a nie wiesz jaki stan procesor bada na wejściu- po są drgania. Najprostsza metoda: If Pinb.3 = 0 Then waitms 20 If Pinb.3 = 0 Then ......... end if end if To oznacza że po wciśnięciu mikroprzełącznika odczekujesz 20ms i jeśli po tym czasie masz taki sam stan to się "uspokoił"...
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...
Hmm.. Może się mylę, ale: -chyba w tej opcji trzeba dołączać zewnętrzne rezystory, bo nie widzę, żeby wejścia były skonfigurowane z podciąganiem. -Czy na końcu pierwszego If'u nie powinno być End If podobnie jak w drugim? Bo samo end chyba kończy program tak? -I chyba nie wziął kolega pod uwagę, że nie mają to być dwa przyciski - włącz i wyłącz tylko...
Kolego skompiluj sobie kod poniżej i poczytaj zawarte w nim komentarze. I jeszcze jedno masz spory problem z tak prostym kodem a jednocześnie wartość po $crystal wynosi u ciebie 16MHz rozumiem że poprawne konfigurowanie fuse w tym uC masz opanowane. [syntax=basic4gl]$regfile = "m32def.dat" $crystal = 16000000 'KONFIG WYJSCIA Config Portb.2 = Output...
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...
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ć....
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...
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...
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...
po pierwsze dodaj podciąganie do linii przycisków podciagniecia czyli ustaw stan wysoki na wejściach np. PORTB.2 = 1 Dzięki, to zadziałało, zmienna już samoczynnie się nie zmienia. po drugie poczytaj nieco o timerach to wyeliminujesz wait'y i program będzie działał jak chcesz :wink: A nie można byłoby tego zrobić na wait'ach i dać spokój timerom (czytałem...
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...
A po co mi w C ?ja C nie znam Przeportować z C na Bascom nie duży problem. A ASM na Bascom tez nie. Z Bascom na C tak. Nie chodzi tu o typowe rozkazy, jak pętle itp, to banał. C jest "blisko" sprzętu, taki bardziej assembler, Jeśli w C jest odwołanie do rejestrów np TWI bez problemu przeniesiesz to na Bascom, coś w rodzaju tłumaczenia np z angielskiego...
Procesor ATTINY (jak każdy inny) można usypiać. Usypianie w przypadku ATTINY jest niezwykle skuteczne - prąd mierzymy w nA. Oczywiście wszystkie linie muszą być podciągane, należy wyłączyć też zbędne układy procesora (zwłaszcza BOD). Ale tak jak jest też może być. Potencjały na liniach wejściowych mogą wychodzić poza zakres napięć zasilania. Jeśli jednak...
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...
Tam nie ma nic do liczenia. Dolny rezystor służy do tego, żeby podczas włączania mikrokontrolera ściągnąć bramkę do masy. Może on mieć nawet 5 Mohm, chyba, że mikrokontroler ma domyślnie włączone podciąganie wejść - wtedy musi on mieć rezystnację kilka razy mniejszą od tej podciągającej, dlatego 10k jest dobrą wartością bez zaglądania w dane uC. drugi...
Atmega 8 jest układem cyfrowym, więc na nóżkach zdefiniowanych jako wyjście w tym wypadku Portb może być napięcie bliskie 0V lub bliskie Vcc. A słyszał kolega o stanie wysokiej impedancji na wejściu HI-z ??? w tym stanie (a w taki wprowadza autor) normalnym jest, że napięcie może być prawie dowolne pomiędzy 0-5V (jest wtedy pływające i to całkiem normalny...
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...
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...
Po pierwsze - dlaczego pętla główna jest na końcu ? I gdzie jest end ? Nie tak się używa podprogramów Po drugie - przydałby się schemat połączeń. Po trzecie - przyciski zwieraj do masy, a wejścia podciągaj wewnętrznie. No.... i po czwarte .... Cls Gosub Menu Cls Menu: Uwielbiam tego typu kod :) Ciekawe gdzie by program poszedł gdyby nie ten Gosub...
config pinb.0 as input <<<<------ to nie jest błąd w składni ? do Reset Portb.0 <<<<-------- po co to robisz ? If Pinb.0 = 1 Then disp1 = 8 'wyswietl 8 na LED else disp1 = 0 'wyswietl 0 na LED end if loop <<<<----- w tej pętli cokolwiek by się działo i tak resetujesz pinb.0 na początku jak chcesz używać pinu b.0 jako...
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...
pioszura --> już dwóch ludzi pyta cię o to czy dałeś diody równolegle do przekaźników??? a ty wciąż swoje o filtrowaniu zasilania. Bez tych diod to kaplica. Diody o których pisałeś na bazie tranzystora to w ogóle nie to - coś ci się może pomyliło - to po pierwsze.... ... a po drugie to skoro ci się układ resetuje od włączania lutownicy obok - to mogę...
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ę...
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...
Witam, Programik, który wklejam poniżej idealnie funkcjonuje na ATmega8... Wcale w to nie wierzę... Wg schematu, - wielokolorowa dioda jest w wersji ' z WSPÓLNĄ ANODĄ (CA) ', którą to podłączyłeś do GND. Ta dioda nigdy nie zaświeci niezaleznie jaki potencjał będzie na jej pozostałych elektrodach. Odnośnie programu... (najlepszy przykład jak nie nalezy...
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...
Ty to jesteś krejzolka Aldoro wiesz hahahahaha Podłączył byś wyjście transoptora do wejścia INTx albo ustawił Timer jako Counter a wyzwalanie jako, na przykład Falling, Co sekundę sprawdzał byś ile impulsów nabiło przez sekundę. I to wszystko. Bez obsługi przepelnienia Timera osmiobitowego zmieścił byś 255 impulsów na sekunde. Miłego dnia. Mogłeś wcześniej...
No chodzi o to że sprzętowy pin SS jest na tym samym pinie. A on nie może być wykorzystywany bo będzie zawieszał transmisję SPI. Już widziałem takie cuda jak i sam też je przerabiałem. Tylko o tym zapomniałem. SPI sobie działa i działa, a tu raptem bach, przywiecha. Więc jak by nie było, zmień ten pin CS a pin SS (PortB.4) ustaw jako wyjście i w stan...
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...
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 :...
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...
Witam, dziękuje za zainteresowanie... Kolego arktik1 Piszesz, że mam zadeklarować zmienną, tym samym zlikwidować pętlę FOR...NEXT? Jak zrealizować w takim wypadku wygaszanie płynne za pomocą PWM? zupełnie nie wiem jak to zrobić, pisałem, że dopiero się uczę programować, moje dotychczasowe programy to tzw. składaki. Po prostu patrze jak ma ktoś inny...
No więc rozwiązanie okazuje się (jak zwykle) banalne; W dataszicie czytamy : ***************** When switching between tri-state ({DDxn, PORTxn} = 0b00) and output high ({DDxn, PORTxn} = 0b11), an intermediate state with either pull-up enabled ({DDxn, PORTxn} = 0b01) or output low ({DDxn, PORTxn} = 0b10) must occur. Normally, the pull-up enabled state...
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...
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...
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....
Zanim przejrzałem ten temat, wymyśliłem coś takiego: 'Pokazuje ilość obrotów na minutę 'Pomiar co sekundę, wejście PB0...1 'Cls : Cursor Off $baud = 19200 Dim Count(2) As Long , Last_state As Byte , Tmp As Byte Config Timer1 = Timer , Prescale = 64 'do odmierzania 1 sek. On Timer1 Co1sek On Pcint Fan_int Portb = 3 'podciąganie wejść kontroli...
Stworzyłem kod który powinien wyświetlać czas trwania stanu niskiego na lcd. Na wyświetlaczu pojawia się 0.0 ms oraz na przemian 1 lub 2 takt(czyli ile zliczył timer). Proszę o naprowadzenie na właściwy kierunek osiągnięcia zamierzonego celu. kod: [syntax=basic4gl]$regfile = "M8def.dat" $crystal = 4000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4...
Witam. Schemat całego układu: http://obrazki.elektroda.net/75_12533785... Przed położeniem uC do snu ustawiam stany wysokie na bazach tranzystorów (zmierzyłem prąd samych tranzystorów, poniżej 0.00uA bo miernik nie chwyta). Ustawiam wszystkie pozostałe piny w stan wysoki oprócz: pinów przycisków S1-S4 które mają być masą dla pinu przerwania...
:) 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...
Witam ponownie, Chcę trochę odświeżyć temat. W końcu zrobiliśmy z córką cały układ, napisaliśmy prosty program w bascomie i wgraliśmy do uC. Niestety coś nie zadziałało i mam prośbę o zerknięcie na schemat i wsad czy czegoś nie pokrzaczyliśmy bo po włączeniu zasilania nic się nie dzieje - na wyświetlaczu (16x2) wyświetla się tylko rząd kwadratów w górnej...
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...
Witam, udało mi się coś wyskrobać i zrobiłem na razie sam generator częstotliwości, właściwie jakoś tam działa ale chyba napisałem to dookoła , może ktoś spróbował by to jakoś poprawić. Nie dodałem jeszcze generatora PWM, próbowałem ale nie wychodziło mi, chciałem taktować go z wejścia T1 ale nie udało mi się to, nie wiem jak go zmusic do tego żeby...
Witam. Próbuję napisać program odpowiedzialny za pomiar odcinków czasowych pomiędzy impulsami sygnału S1 i S2 (zgodnie z załącznikiem). Proszę o prześledzenie kodu, wszelkie uwagi i sugestie mile widziane. Nie mam pewności co do poprawności pobierania wartości licznika TIMER1 za pomocą TCNT1. 'program do pomiaru okresu sygnałów podpiętych do PD.2(INT0)...
wejście bascom opornik podciągać atmega podciągać
parkside wiertarka volvo silnika piece ekogroszek ustawienia
Analiza algorytmu programatora Vilab Skoda Fabia: Rezystancja CAN 80 omów - Diagnostyka