Kolego patrzę na ten kod ze zgrozą, ale załadowałem do swojego Bascoma i trochę więcej zrozumiałem bo mozna sprawdzać referencje i skakać po kodzie. W przerwaniu co osiem taktów (nierealne) timer ma zliczać te twoje "niby" OCR. (Incr Licz_timera1 : If Licz_timera1 >= Ooo Then) Te OCR jest ładowane z tabeli gdzie najmniejsza wartość to 127 a najwieksza...
Może być np tak: $regfile = "m8def.dat" Config Portd = Output Portd = &B00000000 Dim D As Integer , D1 As Byte D = 0 D1 = 0 Do If D = 0 Then Portd = &B00000000 If D = 1 Then Portd = &B00000001 If D = 2 Then Portd = &B00000011 If D = 3 Then Portd = &B00000111 If D = 4 Then Portd = &B00001111 If D = 5 Then Portd = &B00011111 If D = 6 Then Portd...
Ja uczyłem sie z pliku pomocy Bascoma, zarówno AVR jak i 51 Co do twojego roblemu to dla AVR miałeś: config P1.0 = input config P2.0 = output to zamień to na: P1.0=1 Jeśli chodzi o P2.0 to w ogóle nic nie pisz. ponadto, nawet i P1.0=1 nie musisz pisać, procesor sam usttawia porty w stan wysoki po zresetowaniu. Tak jest, gdyż porty AVR i 51 różnią sie...
Dim State As Byte Dim I As Byte Do For I = 0 To 100 If Pind.4 = 0 Then State = 0 End If If Pind.5 = 0 Then State = 1 End If Waitms 10 Next I If State = 0 Then Rotate Portb , Left Else Rotate Portb , Right End If Loop
Witam ! Tu jest błąd: portb = 1111111 ma być: portb = &B1111111
Zajrzałem do skompilowanego pliku i widzę że kompilator w ogóle nie używa tu R2 i R3 więc mi je zostawił ;) Od pewnego czasu w Bascom do rejestrów można się odwoływać prosto z kodu. Ciekawe którą wersję Bascom masz. Pewnie znowu schody... U mnie program się kompiluje na 96% [syntax=vbnet] $regfile = "attiny13.dat" $crystal = 9600000 $hwstack = 16 $swstack...
Chwile mnie nie było :D Napisałbym to inaczej, ale wracając do pytania z pierwszego postu . Jeśli chcesz by procesor zawsze był tak samo zajęty to każ mu w tych innych Case`ach także nadawać Pulseout tylko na pin Reset. Bascom to przełknie bo ten pin może pracować jako normalny I/O ale jak jest resetem to nic mu się nie stanie jak napiszesz Pulseout...
Witaj Robert ! Tą linię: If Pind.1 = 0 Then Portb = 1 'S2 - zgaś lampkę napisz tak: If Pind.1 = 0 Then Portb = 255
DDR to nie instrukcja tylko rejestr portów np. DDRB - rejestr określający kierunek portu PortB (wejście czy wyjście). W bascomie konfigurujesz np. Config portb.5=output lub np. config portb=input Po szczegóły odsyłam do dokumentacji procesora i języka Bascom.
Można zapisać do portu liczbę odpowiadającą poszczególnym pinom. Zyskujemy wówczas zamiast Portb.7 = 0 Portb.6 = 1 Portb.5 = 0 Portb.4 = 1 możemy zapisać np: Portb = Portb Or &B01010000
Hej! Oto programik w Bascom-AVR. Jeżeli naciśniesz przycisk(portd.0) na mniej niż pieć sekund to zapli Ci się dioda(Portb.7), a jeżeli będziesz trzymał przycisk wciśnięty przez pięć sekund to przesunie Ci jedynkę po całym porcie b. Config Pind.0 = Input Config Portb = Output Dim I As Dim I=1 Program: Do If Pind.0 = 0 Then For I = 1 To 5 Wait 1 If Pind.0...
Jak to mówią diabeł tkwi w szczegółach... $crystal = 8000000 $regfile = "m16def.dat" Config Portb = Output Config Pina.1 = Input Do If Pina.1 = 1 Then Reset Portb.6 End If If Pina.1 = 0 Then Set Portb.6 End If Loop End
A w takim razie, (używając polecenia LPRINT) skąd mam wiedzieć jak połączyć piny do LPT?? musisz pokombinowac i poszukac na googlach. np. $regfile = "m32def.dat" $crystal = 4000000 _lpt_data Alias Portc ' data port connected to d0-d7 of LPT _lpt_control Alias Portb ' portb used for the control pins _lpt_status Alias Pinb _lpt_busy Alias 1...
Nie widziałem wcześniej, że już na to wpadłaś. Twój się kalibrował tylko w jedną stronę a ten powinien w obydwie (ale nie testowałem) ;) [syntax=vbnet]$regfile = "attiny13.dat" $crystal = 9600000 $hwstack = 2 $swstack = 0 $framesize = 22 Config Adc = Single , Prescaler = Auto , Reference = Avcc Dim Mem_adc As Word , New_adc As Word Dim Krok As Byte...
Witam ! Zacznij od tego: $crystal = 800000 --- jedno zero za mało. następna poprawka: Config Portb = &B00101000 0 jako wejście 1 jako wyjście porty B0. B1, B2 masz 0 a powinny być 1 Brak konfiguracji Portu D Pozdrawiam. Stefan
1. Co? ;) 2. Polecenie Set Tccr1b.7 ustawi tylko bit nr 7. Własnie sprawdziłem. I to nie w symulacji tylko deassemblując kod a więc nie ma mowy o pomyłce. Taki kod: Portb = &B00000000 Portd = &B00000000 Set Tccr1b.7 daje to: ldi R24, 0 out PORTB, R24 ldi R24, 0 out PORTD, R24 in R24, TCCR1B ori R24, 128 out TCCR1B, R24
W Twoim wypadku jest to portb. A w moim portb jest zajęty to sprawdziłem na portd. Deklaracja $crystal jest do niczego nie potrzebna dopóki nie korzystasz z bibliotek czy podprogramów wykorzystujących zależności czasowe. A tych w Bascomie jest mnóstwo. UART, LCD, SPI itd. Tak że lepiej jest ustawiać $crystal taki jaki jest naprawdę.
w każdym uC można zastosować rezystor podciągający , w AVR z powodu dużej rozbieżności wewnętrznych rezystorów jest to zalecane szczególnie jeżeli pin / port pracuje jako wejście MirekCz ma rację nawet nie zauważyłem tego config portx odnosi się dla całego portux , natomiast config pinx.y dla konkretnego pinu portu zastosuj lepiej taki sposób konfiguracji...
Witam. Dzięki za szybką odpowiedź ale.... moja frustracja sięga zenitu. To po prostu nie działa w real.Na domiar tego podobny kod tylko z waitms przed rotate działa poprawnie. Ps.próbowałem zaproponowany kod ale nic(nie wysterowałem portu). Głupia sprawa i banalna ale nigdy nie miałem podobnego przypadku stad moje pytanie.
Mały przykład, ale bez wykorzystania funkcji Debounce. Przed odczytaniem stanu przycisku, zapamiętywany jest stan portu. Odpowiednie Piny są ustawione jako wejścia, następnie sprawdzane jest czy przyciski są wciśnięte. Stan przycisku jest zapamiętywany w zmiennej Tempkey, zostają przywrócone stare ustawienia portu. [syntax=basic4gl]$regfile = "m8def.dat"...
Przeoczyłem to. Faktycznie trzeba dac pętlę nieskończoną. #include<avr/io.h> int dane; #define OSC 4 // definicja funkcji opóźniającej void waitms(unsigned char x) { unsigned char a, b; // zmnienne licznikowe for( ; x > 0; --x) // ta pętla zostanie wykonana x-razy for(b = 10; b > 0; --b) // a ta 10 razy for(a...
Masz tu prosty, sprawdzony, działający program do sterowania portami. $regfile = "m16def.dat" $crystal = 1000000 ' przelicz u siebie te zera :) Dim B As Byte Config Portb = Output Portb = &HFF Waitms 100 Open "comd.1:9600,8,n,1" For Output As #1 Open "comd.0:9600,8,n,1" For Input As #2 Do B = Inkey(#2)...
Łap gotowy Hex lub Bin (do wyboru). Machnąłem to w Bascom bo to dosłownie minuta i dłużej chyba uruchamia się AtmelStudio7. Kod jest prosty jak świński ogon więc możesz go sobie przetłumaczyć, ale szybciej zmienisz go wersją Demo Bascoma. Wszystko opisane. Osobiście pomyślałbym o tym, że po wykryciu zamkniętych drzwi można od razu przejść do pilnowania...ale...
Diody migają po dwa razy, kolejne dwa razy zawsze po naciśnięciu przycisku, tak w kółko. Jak nie naciskam to nic się nie dzieje. Zdaje się że taki zamiar był tego programu... Niemniej jednak spróbuj ten code: [syntax=basic4gl][/syntax ... $regfile = "attiny13.dat" $crystal = 9600000 Config Portb = &B011000 Portb = &B000010 $hwstack...
Nie pisze w BASCOM, tylko w assemblerze i działa to tak: Do określania co jest wejściem a co wyjściem służy rejestr DDRn [n - litera portu]. Więc jeżeli chcesz mieć pierwsze dwa piny jako wejście, a dwa następne jako wyjście w porcie B ustaw: DDRB 0xC [binarnie 1100] Ustawiając PORTB zmieniasz stan pinów portu. Rejestr PINBx [x jakaś cyfra] odpowiada...
Config Timer1 = Pwm , Pwm = 10 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Up 'Config Timer0 = Pwm , Prescale = 1 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Down 'Start Timer1 Dim I As Integer Config Portb = 255 Portb = 0 Config Portd = &B0000000 Portd = &B1110111 Dim A As Byte Do Debounce Pind.0 , 0 , K , Sub Loop End...
Po co stosować tu przerwanie? Kardynalny błąd to stosowanie polceceń opóźnień w przerwaniach. W tym programie problem tkwi w: If Przycisk = 0 Then Waitms 100 If Przycisk = 0 Then Incr Sekwencja If Sekwencja = 0 Then Incr Sekwencja If Sekwencja = 4 Then Sekwencja = 1 End If End If End If End If Popraw na: If Przycisk = 0 Then Waitms 100 If Przycisk =...
$regfile = "attiny2313.dat" $crystal = 4000000 Config Portb = Input Portb.0 = 1 Config Portd = Output Portd = &B11111111 Dim Temp As Byte Temp = 1 Do Temp = Temp * 2 If Temp > 80 Then Temp = 1 Portd = Temp Toggle Portd If Pinb.0 = 0 Then Bitwait Pinb.0 , Set End If Waitms 500 Loop End Dodałem znaczniki
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 spróbuj tak: Odczyt=Temp Dim Jednostki As Byte , Dziesiatki As Byte ' cyfry do wyświetlania temperatury Dim Temp As Byte ' temperatura Dim Pompka As Bit ' sterowanie pompką Dim Odczyt As Byte Dim Cyfrybcd As Byte Dim Ktorywysw As Bit Enable Interrupts ' oblokuj przerwania Enable Timer0 'odblokuj timer0 Enable Timer1 'oblokuj timer1 Config Timer0 =...
Tu masz troszkę prościej, z użyciem operacji przesunięcia bitowego (krótszy kod, łatwiejsza zmiana prędkości linijki led) Dim Led As Byte Dim Kier As Bit Config Portb = Output 'wszystkie porty b jako wyjścia' Portb = &B00000000 'wszystkie porty b w stanie niskim Config Portd = Output 'wszystkie porty d jako wyjscia Portd = &B0000000 'wszystkie porty...
1. Wszystkie zmienne powinny być typu takiego, który jest w stanie pomieścić wszystkie możliwe wartości, które mogą wystąpić, czyli w tym przykładnie zmienne WYNIK i WYNIK2 powinny być typu WORD 2. Zmienne T, S, D, J są w tym przykładzie zmieniane przed wyświetleniem i przy następnym wywołaniu podprogramu wychodzą głupoty. Sprawdz coś takiego: Dim J...
układ raczej dobry ale niestety z programem jest chyba problem... :) zastanów się co może być źle gdy bascom AVR nie widzi problemu (bo go oficjalnie nie ma) a układ nie działa... naprowadzę troszkę (ustawienia portów/pinów) :) pozdrawiam i życzę sukcesu :) $regfile = "attiny26.dat" $crystal = 1000000 Config Porta = &B00000011 Porta = &B11000011...
Zmień schemat: Przyciski podłącz do masy, elektrolit zamień na ceramik 100nF a diodę podłącz przez rezystor do zasilania a katoda do uc. Program: $regfile = "attiny2313.dat" $crystal = 1000000 ddrb =&B11111100 PORTB = &B00000011 ddrd =&B11111111 PORTD = &B00000000 do if pinb.0 =0 then waitms 100 portd.0 = 0 end if if pinb.1 =0 then waitms...
Podejrzewam że problem jest z odbiorem danych z pilota. BASCOM i GETRC5 nie za bardzo sobie z tym radzi. No i czy masz na pewno pilota RC5? Dodano po 1 Zobacz to: [syntax=basic4gl] $regfile "m8def.dat" 'konfiguracja mikroprocesora $crystal = 4000000 'konfiguracja kwarcu Config Portb = &B11111111 Portb = &B11111111 Config Portc = &B1111101...
... zwracam honor kolego zumek , niestety nie wiedziałem, że w bascomie set portb włącza tylko pull'upa ;) ale z drugiej strony skoro nie ma wyraźnej deklaracji w programie na początku, że port ma być wejściowy to bascom sam tak ustawia niezdefiniowane porty? Standardowo po power-up reset , bity w rejestrach portów(DDRx ,PORTx) są wyzerowane.Dla pewności...
Łap. Napisałem w przerwie między... Zajmuje połowę mniej niż Twój a działa :D [syntax=vbnet]$regfile = "attiny13.dat" $crystal = 9600000 $hwstack = 8 $swstack = 8 $framesize = 8 Config Portb = &B01110 : Portb = &B10001 Sw Alias Pinb.0 D1 Alias Portb.1 : Set D1 D2 Alias Portb.2 D3 Alias Portb.3 Config Timer0 = Timer , Prescale = 1024 , Clear...
A mi się udało znaleźć. I to na stronie producenta bascoma. Wpisałem w google "bascom getkbd" :) https://avrhelp.mcselec.com/index.html?g... [syntax=vbnet]'-------------------------... 'name : getkbd.bas 'copyright : (c) 1995-2005, MCS Electronics 'purpose : demo : GETKBD 'micro : Mega48...
To Ci będzie sterować kolejno czterema diodami na pinach od B0 do B3. Zalecam wnikliwą analizę, zanim zalejesz mnie pytaniami :) Timery zawsze rób na odliczanie w dół do 0, w przeciwnym wypadku po wpisaniu nowej wartości w trakcie odliczania możesz mieć niezły kwas - pomyśl dlaczego :) Pozdrawiam [syntax=basic4gl]$regfile "m8def.dat" $crystal = 8000000...
Wykombinowałem coś takiego :), przykład można uruchomić w symulatorze (dane wejściowe np. porta.1): EDIT: poprawiłem mały błąd w przykładzie, bity można nawet kopiować jeżeli port źródłowy i docelowy jest ten sam [syntax=basic4gl]$regfile = "m32def.dat" $crystal = 16000000 $hwstack = 64 $swstack = 64 $framesize = 64 $baud = 57600 Dim Src_port_str As...
Tylko jest jedno ale. To zajmuje 45 cykli, czyli tyle ile jakbym to robił po Ifach dla każdego portu. Dodano po 9 Sorki, na ifach byłyby 72 cykle (4 na każdy) A w ilu cyklach musisz sie zmieścic? Możesz sprawdzac instrukcją warunkową nie pojedynczy pin ale cały port wejściowy Np.: [code][syntax=basic4gl] Do If Pinb > 0 Then Flag = 1 Reset Portc.2 Temp...
A może wyłumaczyć mi ktoś tak jaśniej niż whelpie bascoma ;) co to jest ten prescaler i co on dzieli. Może tak po kolei jak twój program widnieje: 1. Jeżeli PORTB jest przeznaczony do obsługi LCD to nie konfiguruj go w ogóle w stylu jaki podałeś w pierwszym poście. Config Portb = &B11111111 : Portb = &B11111111 ===> źle!!! Może to powodowac zakłócenia...
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...
także chciałbym zapytać jak mogę indywidualnie nastawiać każdy PIN potru z osobna? Np. PORTC |=0x08 PORTB |= (1<<PB6) Poczytaj o operatorach bitowych - http://mikrokontrolery.blogspot.com/2011... Else dotyczy poprzedzającego go ifa. http://mikrokontrolery.blogspot.com/2011...
On Urxc Rs_rx_ok On Utxc Rs_tx_ok '---------------------------------------... Dim Rs_tx_bufor(7) As Byte Dim Rs_tx_licznik As Byte Dim Rs_tx_ograniczenie As Byte Ddrd = &B00000010 'TXD = wyjscie, reszta wejscia Portd = &B00000010 'TXD = stan wysoki, reszta HI-Z Ddrb = &B00001000 'PB3 = wyjscie,...
Ech... A dokumentację to można czasem poczytać... ;) Do bascoma jest też Help i to po polsku. PORTB i PINB to rejestry dotyczące portu B. Rejestr PINB jest do odczytywania stanu portu, a rejestr PORTB jest do ustawiania stanu portu... Paniatno ? ;) Pozdr. Light-I
https://obrazki.elektroda.pl/8115173800_... Witam, w ramach konkursu na urządzenie pomiarowe przedstawiam bardzo prosty miliamperomierz do testowania gniazd usb w smartfonach i innych urządzeniach. Konstrukcja jest śmiesznie prosta, oparta na mikrokontrolerze attiny13 i zawiera tylko kilka elementów niezbędnych do działania. Miernik...
Witam ! Postanowiłem po długim czasie założyć nowy DIY. Robię to pierwszy raz i chciałbym pochwalić się moja konstrukcją która powstała 4 miesiące temu... Mianowicie jest to projekt dość znany z internetu i postanowiłem zbudować sobie takie "coś" dla sprawdzenia własnych umiejętności. Budowa, projekt płytki i program stworzyłem sam, nie ukrywam że jest...
(at)ElektrodaBot powyżej 255 licznik źle zlicza dając ) co może być źle w tym kodzie: [syntax=text]$regfile = "attiny2313.dat" ' 2KB FLASH|128B SRAM|128B EEPROM $crystal = 8000000 $hwstack = 40 $swstack = 8 $framesize = 24 Config Timer0 = Timer , Prescale = 64 On Timer0 Wyswietlanie Config Pina.0 = Input Config Portb = Output : Segmenty Alias Portb...
Jak wygląda kod w BASCOM do bariery optycznej z modulowaną wiązką? Portb.2 - nadajnik IR Portb.0 - LED - kontrolka Portb.3 - odbiornik IR Aby stworzyć kod obsługujący barierę optyczną z modulowaną wiązką IR w BASCOM, musimy wykonać kilka kroków: 1. Modulacja sygnału na nadajniku IR : Sygnał IR jest często modulowany, aby uniknąć zakłóceń z otoczenia....
bascom config portb b11110000 atmega162 portb attiny26 portb
oznaczenia części elektrycznych usbdeview properties demontaż peugeot
lavamat 47280 samsung pionowa kreska
Żółta kontrolka "P" w Mercedes W213 - przyczyny i diagnostyka Wzrost ciśnienia w CO po otwarciu zaworu CWU - przyczyny i rozwiązania