"Config Timer1 = Timer , Prescale = 8 , Compare A = Toggle , Clear Timer = 1" Przy tej konfiguracji to chyba nigdy nie wejdzie w przerwanie od Timer1. Gdy osiągnie Compare1a = 600 to dzięki poleceniu Clear Timer = 1 licznik zostanie wyzerowany. A przerwanie Poz: jest uruchamiane dopiero po przepełnieniu licznika. Ale ja nie mam zaufania do konfiguracji...
Witam i dzięki za zainteresowanie problemem, ale niestety nie może (99%) to być wina potencjometrów i przetwornika. Wykasowałem odpowiednią cześć kodu ale zrobiony był jeszcze podgląd wyników na wyświetlaczu. Dodatkowo aby wyeliminować małe wahania wyników dziele je przez 4. Co do tego rozjeżdżania to to wygląda tak że ustawiam jakąś wartość wypełnienia...
Hm, spróbuj zmienić enable timer na start timer. Ewentualnie spróbuj wpisać odpowiednią wartość bezpośrednio do rejestru - bascom ma problemy z obsługą pwm w niektórych procesorach (prawdę mówiąć jest tylko kilka, w których PWM działa wszędzie gdzie powinno i jak powinno). A znaczniki code to [code ] i [/code ] :)
To podstawowy i najczęściej popełniany błąd początkujących. Zdefiniuj "błąd"? Początkujący w godzinę w BASCOM napisze program do eval boarda z obsługą klawiszy, wyświetlacza, eepromu na spi, rtc na i2c komunikującego się z PC przez UART. Pokaż mi co zrobi początkujący w C bez dogłębnej analizy noty katalogowej i krótkiego streszczenia co dany rejestr...
Nie musowo być biegłym w BASCOMie. Wystarczy znajomość jednaj komendy z BASCOMa: On Timer. [syntax=vbnet] On Timer1 Timer1_handler ... Timer1_handler: 'Tu robisz pomiary ADC Return [/syntax] A do skonfigurowania Timera w tryb PWM Phase Correct wystarczy wpisać odpowiednie wartości do rejestrów Timera (i nawet nie można tu w zastępstwie użyć polecenia...
Że help istnieje to ja wiem, niestety dalej nie moge dojść jak to zrobić. At90s2313 ma sterować transceiverem, ma 6 odddzielnych linii na porcie PD0-PD6 do skonfigurowania rejestrów transceivera. W jaki sposob w rejestrze o adresie 00110 wpisać ustawić 6 i 7 bit na 11 jeżeli ten rejestr posiada odddzielną linią sygnałową podpięta do portu PD0? Ja myślałem...
Oj kolego, poważny błąd - zasilaj prawidłowo mikrokontroler: Dzięki za upomnienie, faktycznie gdzieś to przeoczyłem, na schemacie ideowym nawet masa wisi :) Poniżej zamieszczam poprawiony schemat ideowy i płytkę w EAGLE. Widząc duże zainteresowanie kodem wrzucam wsad w BASCOM. Załączam również program współpracujący z urządzeniem. Program może działać...
Może najpierw zacznę od tego co muszę zrobić. Potrzebuję generatora impulsów PWM, ma mieć kilka częstotliwości do wyboru z góry zdefiniowanych, po wybraniu jednej częstotliwości i naciśnięciu startu wypełnienie ma się zmieniać powiedzmy co 5 sekund o 5%. No to czeka cię zabawa z opcjami Prescaler i Pwm . Bo będzie to najprostszy sposób dla Ciebie....
Witam! Chciałbym uzyskać przebieg o wypełnieniu 50% i f~33kHz w trybie CTC na pinie PB3 Atmega 8L (OC2). Podpiąłem wyjście OC2 na oscyloskop i ciągle stan wysoki. Pierwszy raz i na szybko potrzebuję wygenerować taki przebieg. Proszę o pomoc. Późno już i coś mnie chyba przyćmiło. Namieszałem coś z ustawieniami portów czy jakiś rejestr nie jest ustawiony?...
Jak w temacie zaczynam swoją przygodę z bascomem i napotkałem pierwszy problem. Chciałbym na wyświetlaczu led wyświetlić zawartość rejestru eedr który będzie zwiększany z każdym naciśnięciem przycisku. Wszystko chodzi ok dopóki nie użyję polecenia lookup. Dopóki licznik liczy po swojemu i wartość EEDR jest przepisywana na port C to ok. Za każdym naciśnięciem...
Odnośnie pytania A do czego służą wstawki asemblerowe i czy są konieczne? Tiny13 ma tylko 64bajtów SRAM Mikrokontroler nie potrafi bezpośrednio zapisać wartości do zmiennej. Kiedy więc ma ustawić w zmiennej 20ms wartość 1 to musi najpierw załadować wartość 1 do jakiegoś podręcznego rejestru a potem wyładować te wartość do zmiennej 20ms. Rejestrów jest...
No to się sprawa wyjaśniła i wszystko ułożyło się jak trzeba. Z innej strony znajomość uC to brzmi dumnie. Sprawa sprowadza się do poczytania not katalogowych niedostępnych dla przeciętnego Kowalskiego, który nie zna angielskiego wraz z zasobem słów opisujących uC, ustawienia w odpowiednim czasie odpowiednich wartości w odpowiednich rejestrach. Można...
Ldi R30, 28 Ldi R31, 78 Rcall _lcd_delay ; 20 ms delay at 4 MHz Witam, przedstawiony kod asemblerowy jest niezmiernie prosty w edytowaniu i zmienianiu parametrów instrukcji. Ldi - jak każdy wie, to ładowanie odpowiedniej wartości do rejestru Rcall - wywołanie programu. _lcd_delay: Sbiw R30,1 ;2 cycles Brne _lcd_delay ;2 cycles Ret Sbiw - instrukcja...
Witam wszystkich Dopiero zaczynam programować w języku asemblera (w szkole mam programowanie mikrokontrolerów 8051 w tym języku), wcześniej programowałem w Bascomie. Chcą trochę poćwiczyć asemblera przed zaliczeniem napisałem prosty program który wpisuje do pamięci o danym adresie i do jakiegoś rejestru jakąś liczbę. I mam takie dwa pytania przy zaadresowaniu...
Witam Wszystkie szczegóły odnośnie transmisji masz na stronie 6 w postaci graficznej. Bardzo ładnie wszystko widać. W pierwszej kolejności ustawiasz pin CS i LDAC w stan wysoki a SCK w stan niski. Żeby rozpocząć transmisję do układu (DAC) ustawiasz stan niski na wyjściu CS następnie na wyjściu danych SI ustawiasz najbardziej znaczący bit dwunastobitowego...
Witam. Wykonałem odtwarzacz mp3 na bazie modułu VMusic2 (zintegrowany odtwarzacz sterowany przez UART lub SPI). Wewnątrz "siedzi" dekoder VS1003. Sterowanie wykonałem po UART z ATMega8515, program napisany w Bascomie. Wszystkie polecenia sterujące działają bez zastrzeżeń, działa również odczyt ID3 Tag. Problem polega na tym, że podczas odtwarzania muzyki...
A jeśli się mylę bo to oznacza 1 sekundę - to jest OK. To spróbuj puścić program w symulatorze w środowisku sprawdzając czy bit 0 rejestru PORTB się zmienia. Jeśli by się zmieniał to znaczy że coś jest nie halo w sprzęcie - może zimny lut albo brak kontaktu na połączeniu procek-dioda-rezystor-potencjał. Masz na myśli symulator Bascoma? A więc w Bascomie...
Witam Jaki widzisz problem, żeby sprawdzić potrzebny Ci bit w rejestrze. Rejestr przypisz do zmiennej i potraktuj ją ANDem z odpowiednią wartością i po kłopocie. -- pozdrawiam
Ja robię zmienną Rs_zn tam w podglądzie zmiennych (w tym żółtym okienku), wpisuję dowolny znak żeby wywołać przerwanie, i jak tylko znak zostanie pobrany z UDR do zmiennej to zmieniam zawartość zmiennej w tym podglądzie zmiennych. Można też zmienić w podglądzie RAMu, albo tuż przed przepisaniem zawartości z UDR do zmiennej wpisać potrzebną wartość do...
Może być i 65536 ale przy PWM = 16. Tyle że takiego PWMa się chyba nie da ustawić z poziomu komendy BASCOMa. Trzeba normalnie wpisując odpowiednie wartości do rejestrów konfiguracyjnych. Ale to już co innego. Tutaj jest PWM = 8 więc ma być 256. EDIT. O co Ci chodzi z tym: "8 bitów na wyjście, pozostaje 8 bitów na licznik." ?
Proszę bardzo, oto program. Jeśli chodzi o obsługę multipleksu to jest ona zrealizowana, że najpierw jest zatrzaskiwana wartość w rejestrach przesuwnych, potem zaświecany dany poziom wraz z odpowiednią wartością dla niego i w tym samym czasie do rejestrów przesuwnych ładowane są już kolejne dane dla kolejnego poziomu i tak w kółko. [syntax=basic4gl]$regfile...
Pomijając fakt, że sam pomysł jest dziwny ... to powinno to działać tak jak planujesz. Kierunek portu (wartość rejestru ddr) możesz zmienić w dowolnym miejscu programu, nie tylko w deklaracji na początku. Czyli na początku programu deklarujesz pinb.1 jako wejście, zerujesz pinb.1 (reset). W programie sprawdzasz co jakis czas czy pinb.1 jest ustawiony...
Hmmm. Kolego pytałeś "jak zadać pytanie i pod jakim adresem będzie odpowiedź". W myśl powiedzenia "mądrej głowie dość po słowie" powinieneś z kodu odczytać jaki adres należy wpisać i film nie jest instruktażowym, tylko pokazuje że spokojnie po tym jak zaznajomisz się z DS - (Data Sheet) to będziesz mógł sobie czytać rejestry które Cie interesują. Jest...
Witam. Standardowe połączenie atmega plus PCF8583, standardowe procedury odczytu i zapisu a mimo to zapis w ogóle nie działa a odczytuje same głupoty. Działanie PCF-a też jest strasznie dziwne. Mianowicie sekundy odlicza normalnie ale dziesiątki sekund zwiększa już gdy jednostki sekund mają wartość 9 a nie 0. Znów gdy dziesiątki sekund mają wskoczyć...
Ramka ma składanie Xx xx - nagłówek (konkretny sterownik) AA BB - adres (w sterownikach powtarza się) CC DD- długość,komenda ( pozostała ilość danych w ramce zapis-odczyt wartość rejestru...) EE FF. - wartość GG HH - wartość Czasami ramka ma długość 6 czasami 10. Odbiór w założeniu działa cały czas. Po przyjściu ramki o składni początkowej prawidłowej...
Sprawdź zawartość Rejestru TCON jaką wartość reprezentuje IT0, na Bascomie się nie znam ale takie programiki NIE MOGĄ NIE DZIAŁAĆ. Posprawdzaj rejestry odpowiedzialne za system przerwań może globalne komendy zmieniają coś więcej niż byś chciał. Sprawdź Rejestr zezwoleń na przerwania i priorytetów.
zasadniczą różnicą jest to, że przez rejestry jest możliwe adresowanie pośrednie, czyli wartość w rejestrze wskazuje adres danej, są to rozkazy z (at)
jeśli stosujesz procesor at90s8515 i wyżuca ci błąd przy użyciu portu c to zanczy że nie poinformowałeś bascoma jakiego procka posiadasz. wejdz w opcje i tam wybież z listy. Pinc.1=input (Pinc.1=0 - równoznaczny zapis) nie wiem co to znaczy ale chba nie działa configuracja pinów odbywa się przez config portx = input / output lub dla poszczególnych...
To tylko opóźnienie. DJNZ zmniejsza zawartość rejestru R7 i skacze do etykiety Et1, aż wartość tego rejestru będzie równa zero. W bascomie można użyć instrukcji waitus 40 w tym przypadku będziesz miał opóźnienie 40 us
Nic nie trzeba informować kompilatora - Bascom ładnie przyjmuje wprost rozkazy asemblera ale w zasadzie atom1477 zrobił to nawet bez asemblera - sorki - po prostu "ręcznie" odwołał się do rejestrów i wpisał do nich odpowiednie wartości tzn poustawiał bity tak żeby coś tam działało w tym przypadku co ja ci podałem trza by to było mniej więcej zrobić...
Dzień dobry ! Szanowni Elektronicy i Programiści, mam do Państwa pytanie o możliwość generowania przez mikrokontroler dwóch sygnałów ściśle ze sobą zsynchronizowanych z małymi opóźnieniami jak na rysunku poniżej: Sygnały te będą sterować tranzystory IGBT dużej mocy w falowniku. Do tej pory generowałem je w pętli głównej programu, ale muszę dodać kilka...
Witam czy ktos moze mnie oswiecic w jaki sposob zapisac wartosc do rejestru Counter1 pod bascomem ? Mam taki prosty program i za nic w siecie bascom nie che go lyknac ............. I taki oto blad ASSIGNMENT ERROR line 8 Procesor ma ten timer w sobie. Jezli to wina bascoma to w jaki sposob zapisac ta wartosc z poziomu jakiejs wstawki assemblerowj ?...
W trybie power down są zachowywane rejestry procka. Niech WDT budzi procka co 2 sekundy i zwiększa wartość wybranego/wybranych rejestrów.
Odkopuje temat. Jak tym sterować? (w Bascomie) ustawic jako stan poczatkowy DS, SH I ST na 0. Wysłać jakis stan logiczny na DS, ustawic SH na stan wysoki potem ST na wysoki i na odpowiedniej końcówce Q pojawi się stan wg wartości przesłanej w DS? Tylko na ktorej koncowce pojawi sie ten stan? Q0 czy Q7? czy musze powtarzac procedure dla kazdej koncowki...
Nikt tu nie dodaje "licznika". Timer2 jest przez BASCOMa traktowane na równi z TNCT2. A przynajmniej powinno być. Tak samo jak można napisać: Timer2 = 100 i to nie zapisze wartości 100 do "licznika", tylko konkretnie do rejestru TCNT2.
Można nawet to zrobić na Timerze 8-bitowym. Po prostu poza generowaniem przebiegu PWM trzeba odpalać przerwanie od Timera. Timer z preskalerem 8 zliczał by do 256 w ciągu 2048us, czyli 2,048ms. A więc miał być około 128 wartości od 1 do 2ms. Przerwania od Timera były by co te 2ms, a więc dość rzadko żeby dało się je obsłużyć. W przerwaniach trzeba zliczać...
Napisz w Visual Basicu (lub innym) program z przyciskami, ptaszkami itd. do wyboru diody, zakoduj to w bajcie i wyślij go przez RS232 do µC. W programie µC wstaw instrukcję input w pętli tak aby reagowała na transmisję z PC. Odebraną wartość zapisz w rejestrze portu, do którego podłączysz diody. Jak nie wiesz jak z poziomu Visual Basica dobrać...
Dzięki za pomoc. Teraz już wiem z czym mam eksperymentować. Niestety w tej chwili piszę czysto teoretyczne. Do szpitala nie było jak brać płytki z prockiem. Więc jedynie co w tej chwili mogę to testy w emulacji Bascoma, wiec czysto teoretycznie. Ale mam już jakiś początek. Czyli jak rozumiem Timer0 odpowiadać będzie za wyjścia OC0(A,B), Timer1 za OC1(A,B),...
Obaj przedmówcy mają rację: sygnał jest o zbyt małej bądź zbyt duzej częstotliwości. Nie znam Bascoma, ale tutaj mi wygląda, że sygnał ma 3125Hz, co jest częstotliwością nieprzyjemną dla ucha. Powinna być albo mniejsza (1kHz, czyli zliczasz do 31-32 w przerwaniu, nawet mniejsza) i tym samym słyszalna, ale akceptowalna dla ucha, albo dużo większa (proponuję...
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...
Próbowałem i na Medze48 wpisywanie wartości do tergo rejestru nie robi żadnego wrażenia, czy jedynek czy zer czy pojedyńczo dy do wszystkich na raz.
Witam, Natknąłem się na problem dotyczący konfiguracji licznika Timer1. Najprawdopodobniej BASCOM zawiera jakiś błąd i używając standardowych instrucji uzyskanie PWM z tego licznika nie jest możliwe. Używając standardowych "Config Timer1..." nie można nawet zmusić Timer1 do zwyczajnego zliczania... Mniejsza o BASCOM, postanowiłem zrobić to samo wpisując...
yarpen2 napisał "resetujesz Pinb.0 na początku". Rejestru pinb.0 nie da się zresetować bądź ustawić. Jest to rejestr do odczytu. Co innego Portb.0. Przy pracy końcówki portu jako wejście wartością wpisaną do rejestru Portx włączasz (1) lub wyłączasz (0) wewnętrzne rezystory podciągające. Zatem Reset Portb.0 powoduje ciągle wyłączanie rezystora, który...
Mnie się wydaje, że nie do końca wiesz o co tu chodzi więc napiszę kolejny raz. W AVR'ach każdy port (końcówka) ma trzy rejestry: DDRx(.y), PORTx(.y ) i PINx(.y). W rejestrze DDR ustalamy kierunek - 0 = wejście, 1 = wyjście. Jeżeli port jest wyjściem to PORTx(.y) ustala stan wyjściowy a PINx(.y) jest nie używany (rejestr PIN jest tylko do odczytu!)....
O.K. w bascomie robi się to podobnie cytat z polskiego HELP: "Częstotliwość wyjściowa jest określana wtedy wzorem: fout = (fosc / 4) / (65536 - CAPTURE). By wpisać wartość do rejestrów RCAP2L i RCAP2H, należy użyć: CAPTURE = wartość , gdzie wartość powinna być typu Word. Aby jednak uprościć stosowanie tego trybu instrukcja (począwszy od wersji 2.08...
Witam Zaczynam dopiero zabawe z MMcc1000 433MHz i bede chciał to podłaczyć do atmegi8. Mam taką prośbe, czy mogłby ktoś udostępnić przykładowy programik w BASCOMIE do wysłania i odebrania jakis danych oraz do konfigruracji MMcc1000 (kalibracja i wpisanie odpowienich wartości w rejestrach). Wiem, że jest trochę tematów na ten temat, ale nigdzie niema...
Witam. Czy może mi ktoś powiedzieć co robię nie tak. Tak - nie czytasz dokumentacji... :twisted: Przecież próbujesz zapisywać/odczytywać dane do/z jakiegoś innego układu niż Twój AD5933 ;) Jego adres do zapisu to &H1A , a do odczytu &H1B (adres podstawowy &B0001101 plus bit kierunku 0 = write, 1 = read ). Stoi o tym jak byk w dokumentacji na str. 25......
czy tak trudno zerknąć do helpa PWM1A = wartość zmienna = PWM1Aalias rejestru Compare 1A licznika TIMER1 (Word) używany gdy licznik pracuje w trybie PWM PWM1B = wartość zmienna = PWM1Balias rejestru Compare 1B licznika TIMER1 (Word) używany gdy licznik pracuje w trybie PWM PWM2 = wartość zmienna = PWM2rejestr Compare 2 licznika TIMER2...
Może lepiej było by rejestrować minimalną i maksymalną temperaturę. Jeśli temperatura by przekroczyła te nastawy, to byś je odpowiednio zwiększał. Aby minimum i maksimum było odpowiednio dopasowane, możesz minimalną zwiększać a maksymalną zwiększać co sekundę o np 10% różnicy (lub prowadzić wartość średnią w innej zmiennej i zmniejszać o 10% różnicy...
Chodzi mi konkretnie : do zmiennej jest wpisana wartość od 0 do 255 odczytuję tą wartość następnie za pomocą portu np portd.0 wpisuje do rejestru przesuwnego i na wyjściu tego portu przesuwnego otrzymuję wartość zmiennej wystawionej binarnie czyli 01010101 do tego celu zmienną muszę zamienić na bin potem potem jednym wyjściem portu zapisać to do rejestru...
Czyżby nikt na elektrodzie nie potrafił mi pomóc?? ;) W końcu uruchomiłem ten program ( w zasadzie napisałem go od początku). Niestety znowu mam problem. Program zapisuje (chyba) poprawnie rejestr konfiguracyjny 0x0a (dioda myszki nie przechodzi w stan uśpienia). Ponadto poprawnie odczytuje zawartość rejestru najjaśniejszego pixela 0x07 i średniej wartości...
Tak. Może być i w wysokim poziomie, ale takie będzie o wiele szybsze a w dodatku zajmie mniej miejsca a nie chciałem Ci zajmować swoimi poprawkami całego FLASHa w procku. In R16, Wyswietlacz1 '<-- R16 = PortD andi R16, &B00001111 '<-- R16 = R16 And &B00001111 Lds R17, {Wyswietlacz1_2} '<-- R17 = Wyswietlacz1_2 !or R16, R17...
Nie jestem taki pewien. Dalej w opisie $noramclear jest napisane , że zawartość komórek pamięci nie zostanie skasowana , co nie oznacza , że pozostaną w niej zmienne, a raczej , że pozostaną w niej wartości przypadkowe. Jeśli napięcie zasilania nie spadnie poniżej poziomu podtrzymania pamięci SRAM to stan komórek pamięci nie zostanie podczas resetu...
Witam Mam pytanie, jak można w bascomie odczytać stan konkretnego bitu z konkretnego rejestru. Dokładnie chodzi mi o odczytanie stanu 4 bitu w rejestrze R6 w Attiny 13. Podłączyłem do niego klawiaturę AT i potrzebuje wiedzieć jaką wartość ma ten bit gdyż jest on używany jako flaga stanu klawisza shift. Podejrzewam że ktoś z was wie co na to poradzić,...
PortX (x dowolne) zawsze zawiera wartość jaką wystawia procesor na wyjście (dla pinu wyjściowego to będzie stan wysoki/niski, dla wejściowego pullup/open), natomiast PinX przy odczycie daje rzeczywisty stan panujący na pinie. Warunki zewnętrzne są w stanie zmienić tylko wartości w PinX (wpisanie wartości do tego rejestru w zależności od procesora nie...
Błąd kompilatora. Po wykonaniu Config Timer0 nie jest zapamiętywana bieżąca zawartość rejestrów TCCR0x wewnątrz kompilatora. Przy wywołaniu Start Timer0 odtwarzana jest wartość 0 w rejestrze TCCR0B, a powinno być wpisane 5. Zgłosić do działu wsparcia i czekać na poprawienie. A tymczasem zamiast START i STOP: skonfigurować licznik, zapamiętać zawartość...
Naprawdę nikt nie jest w stanie nic pomoc ? Miało by to mniej więcej wyglądać tak: -sygnał podawany na ICP ma postać kwadratową -zbocze opadające powoduje zapis wartości timera do rejestru sprzętowego -odejmując kolejne wartości rejestru od siebie uzyskuję czas jaki upłynął między impulsami -obliczając odpowiednio czas uzyskuję ilość impulsów na minutę
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...
A może znasz jakiś jeszcze inny sposób (PROSTY) żeby jak najszybciej sprawdzić zmianę stanu na 18 wejściach do uC? Najprościej byłoby zastosowac inny processor np: ATMega48/88/168, które mają PCINT co najmnjej na 20 'użytecznych' pinach wejściowych. W subrutynie do każdego PCINT wstawisz instrukcje wyłączającą przekaźnik na którymś tam porcie wyjściowym,...
Witam, Piszę na Atmedze odczyt danych z BMP085 i dodatkowo zapis danych na kartę SD. Wszystko wydaje się działać poprawnie, a jednak coś jest nie tak. Do obsługi BMP085 wykorzystałem kod z tego tematu: Oto wykres z odebranych danych, czas pomiaru to około 10min Za każdym razem ćiśnienie spada, niemożliwe, żeby w ciągu 10 min spadło o 4hPa. W czasie...
Przepraszam za dłuższą nieobecność. Nie mając nic nowego (i mądrego) nie pisałem. Ale w międzyczasie polutowałem zestaw startowy, a ostatnio napisałem inny program, który umożliwia (w zamyśle) liczenie dokładniej częstotliwości dla "paczki" impulsów, tym razem około 500 Hz. Wiem, że to dosyć skomplikowany tok myślenia, pewnie można to zrobić prościej,...
Należy: - zadeklarować zmienną globalną np. LICZNIK i nadać jej wartość zera, - włączyć przerwania od przepełnienia Timer0, - w funkcji przerwania należy zwiększać wartość zmiennej LICZNIK o jeden Aby poznać liczbę impulsów wystarczy pomnożyć LICZNIK*256 i dodać do niego aktualną wartość rejestru licznika timera, czyli jak sądzę counter0 (nie znam BASCOM).
Witam! Program działa poprawnie. Testowałem z 3-4 programy do obsługi tego czujnika ciśnienia. Wyniki są złe, porównaniem z innym ciśnieniomierzem zaniża o 30..40hPa. Zasilanie BMP180 3.3V, ATMEGA32, 8MHz. Czy ktoś się spotkał z takim problemem? [syntax=vbnet] '----------------------- '| Test modułu BMP085 | '----------------------- 'Uwaga: pomiar jest...
Właśnie właśnie. Ten pomysł z kimś innym do sprawdzania mi się podoba :) Ja już wymieniłem w sumie wszystkie części (procek, max, kwarc, kabelek -dłuższy, krótszy, kompa, prędkości, program, INPUT, INKEY) i zawsze to samo. albo działa "inaczej" albo wcale. W moim układzie też zauważyłem że 2 kondensatorki miałem odwrotnie ale jak to poprawiłem to i...
Witam. Rozwiązanie jakie proponuje K_O_N_R_A_D jest bardzo ciekawe. Tylko jak zrobić żeby SPI odczytywał dane. Czy należy wpisać wartość 0 do rejestru SPDR i po zakończeniu transmisji odczytać ten rejestr (powinno się w nim znajdować to co zostało odczytane z lini DIN) ? Niestety moje układy sie nie komunikują dlatego sam nie mam możliwości sprawdzenia...
a nie mozesz użyć goto zamiast do loop? np takie pętle: petla_oczekiwanie_: .... if warunek then goto petla_program_1_ ... goto petla_oczekiwanie_ petla_program_1_: .... if warunek then goto petla_oczekiwanie_ .... goto petla_program_1_ Coś takiego powinno zadziałać. P.S. Ten stan poprzedni oznacza tylko wartości głównych rejestrów a zmienne...
Witam ja powiem ze sie da i to bardzo dokłądnie to wykoanć Potrzeba ci jeden Timerek generujacy przerwanie co sekunde. i drugi timerek to wyświetlania w multplesie. Choć faktycznie te dwa timery moga zaburzyć nieco prace tego całego układu. podłacz sobie jeden ls247 i 4 ledy w MPXie zajmie ci to jeden port. 4 linie to BCD i 4 to załącznie pokoleji LEDów....
ale podobno load działa (powinno) też przy 16 bitach Pewnie że działa , ale dla Timer2 . Ładuje odpowiednią wartość do rejestrów RCAP2L, RCAP2H , a T1 i T0 przy pracy reload , są 8-bitowe - koniec :D Niezbyt dokładna znajomość architektury , często się mści :( Piotrek
witam jak w temacie, czy bascom obsluguje tylko single end'ed czy takze wej roznicowe adc? bo w help nie widze :((( pzdr. Skoro brak bezpośredniej funkcji , to nic nie stoi na przeszkodzie , by odpowiednie wartości wpisać do rejestrów mikroprocesora i mierzyć ... :) Piotrek
Tak też uczyniłem. Niestety nic z tego. Działa tylko pierwsze pole wyświetlacza (1,1) i zmieniają się na przemiennie dwa znaki - czarny kwadracik i spacja... Ja się nie dziwię że nie działa :( Przy inicjacji LCD używa się opóźnień , a w kodzie biblioteki w komentarzu stoi JAK BYK: Ldi R30, 28 Ldi R31, 78 Rcall _lcd_delay ; 20 ms delay at 4 MHz ; ......
To chyba już wiem skąd te problemy. Wszystkie wyjścia z odbiornika (dir9001) są ttl, a sck to wyjście cmos o, jak mi pokazał oscyloskop, amplitudzie jakieś 0V05. Przy takich napięciach i połączeniu płaskim kablem można zapomnieć, że to zadziała. A teraz chyba spaliłem z kolei odbiornik, bo nie podaje już nawet tego mizernego zegara. W każdym razie jak...
Usuń znaczek hash i nazwę zmiennej umieść w nawiasach klamrowych. Będzie odwołanie do pamięci, a nie ładowanie stałej. Oczywiście pisze o tym w pomocy, ale szukać się koledze nie chce. :bad-words: Można uzyskać dostęp do zmiennej umieszczając jej nazwę w nawiasach klamrowych { }. By mieć dostęp do bajtu MSB zmiennych Integer/Word, należy użyć formy:...
Przecież masz 5 kanałów - wyjścia: OC1A, OC1B, OC2, OC3A, OC3B... Zmienne przedstawiają wartość modulacji w każdym z kanałów z osobna. Wszystkie PWMy są skonfigurowane jak 8 bitowe zatem zakres to 0..255. Ma tak być. Ponieważ nie ma aliasu (jeszcze) PWM2 dla zmiennej COMPARE2 (rejestr sprzętowy OCR2), BASCOM nie rozpoznaje nazwy PWM2. Jak zajrzysz w...
Zrobiłem tak jak poradziłeś i oba programy działają :) Dim Licz As Byte Eedr = 0 'na początek w liczniku zero Do Debounce Pind.0 , 0 , Zwieksz , Sub 'naciśnięcie S1 Licz = Eedr 'przepisz dane z rejestru do zmiennej Portb = Lookup(Licz , Tabela) 'przepisz do PortB kody Loop End Z tego wynika, że ten sposób może działać ale nie musi i lepiej najpierw...
Znaczy tak I2csend & H00 , I gdzie I jest byte i jest równe 0? Bynajmniej taka komenda wywoływana jest przez bascom-avr jako błędna. Sprawdź w pliku pomocy jak wygląda składnia... i nie zapomnij o podaniu adresu do zapisu, potem adresu rejestru i na końcu dopiero wartości do zapisu.
Gratulacje. Jeszcze nie raz się natniesz na te różnice. Na AT90S2313 powstało mnóstwo programów i fajnych urządzeń. Ale już go nie robią i jego następcą jest ATtiny2313. Ściągnij ze strony Atmela pełne datasheety obu procesorów i wydrukuj sobie register summary z obu. Porównaj. Bascom 1.11.9.1 nie "widzi" niektórych różnic. Ale jak wpiszesz wartość...
Witam Mam kolejny problem z tym układem. Liczba w rejesrze miesiecy zwieksza sie o 20 co 24godziny. Wtedy kiedy zwieksza sie wartość w rejestrze dni to liczba miesiecy zwieksza sie o 20 zupełnie nie wiem czemu;/ Oto fragment programu odpowiedzialny za odbieranie danych: Do I2cstart I2cwbyte 162 I2cwbyte 2 I2cstart I2cwbyte 163 I2crbyte Sekundy , Ack...
Witam. W podprogramie do zapisu zegarka nie określiłeś zmiennej Tm(5). Wprawdzie nie używasz jej ale jest zapisywania zgodnie z pętlą. System wstawia wartość domyślną co zakłóca wartości rejestrów zegarka. Wstaw : Tm(5) = 1
Jeśli masz sterownik do silnika i potrzebujesz tylko dir i enable to raczej nie steruj go przez PWM. Potrzebujesz generatora o zmiennej częstotliwości zrobionego na procesorze. A nie o zmiennym wypełnieniu impulsów. To się nazywa rampa. Powinna być używana zarówno przy starcie jak i hamowaniu silnika. Wypełnienie powinno być stałe albo dawać krótkie...
Myślę, że kolega tmf źle zrozumiał autora, a kolejne osoby już nie wnikały. Pisząc "programowo" miał na myśli napisanie programu, a nie to że "bez wykorzystania urządzeń mikrokontrolera". Więc jedyna sensowna rada użyć timera w trybie Compare match i zmianą stanu na wyjściu OC Zmieniając wartość rejestru OCRx zmieniamy częstotliwość.
Masz jeszcze jedno (chyba najprostsze) rozwiązanie. Widzę że używasz uarta. Zrób sobie pętelkę która będzie zwiększała zmienną , wpisywała ją w rejestr timera, wysyłała ją przez uart, i czekała np 500ms. Patrz kiedy układ będzie miał największy zasięg i spisz sobie wartość timera, lub kilka wartości i średnią wylicz.
to wystarczy wyzerowac odpowiedni rejestr w uC odpowiedzialny za pracę timera 2 chodzi o rejestr TCNT2? Dodano po 2 i bit: Bit 3 – AS2: Asynchronous Timer/Counter2 ->wyzerować oraz Bit 0 – TCR2UB ? Dodano po 10 No i słusznie. C.6 pewnie też Ci nie działa Portc.6 działa. Tak, nie działa Portc.6 oraz 7 - czyli Tosc1 i Tosc2 - wcześniej pisząc...
Antystatyk - co oznacza że nie działa? Skąd wiesz że nie działa? Testujesz to na procesorze czy w symulatorze bascoma? 1) wywal "Enable Timer2" ponieważ już w TIMSK aktywowałeś przerwanie 2) wstawiasz w przerwanie komendę PRINT (robisz sobie jaja) i twierdzisz że nie działa. A wiesz ile czasu zajmuje wykonanie się tego? 3) jeśli mimo wszystko testujesz...
Instrukcja Wait nie stopuje procesora. Procesor odlicza czas poprzez zmianę wartości rejestrów a więc działa. A skoro działa to powinien także odczytać informację, że nastąpiła sygnalizacja od przepełnienia Timera. Spróbuj zastosować tą instrukcję. Tylko nie wywołuj jej w obsłudze przerwania a w pętli głównej. Bo gdybyś wywołał jej obsługę w przerwaniu...
W datasheet-cie DS-a jest napisane co oznacza gdy wysyła ci temperaturę 85 stopni... Jest to jak najbardziej uzasadnione, ponieważ pierw odczytujesz wartość rejestru temperatury a dopiero po tym rozpoczynasz konwersję, zawsze pierwszy wynik będzie błędny... Nie przeklejaj bezmyślnie kodu od innych. Pozdrawiam, GSM
Wartość rejestru CKSEL wynosi 0011 dla zegara wewnętrznego 8Mhz, 0010 dla 6,4Mhz. Sprawdź w manualu.
Witam. Złożyłem prototypową płytkę z akcelerometrem MMA8543Q, atmega8, wyświetlacz. Atmega i LCD zasilane 5V, akcelerometr 3,3V. Konwersja poziomów I2C oczywiście jest. Datasheet akcelerometru dostępny I2C w atmedze programowe. Komunikacja pomiędzy µC a akcelerometrem sprawna. Sprawdziłem to poprzez zmianę w akcelerometrze bitu FAST_READ czyli...
Konfiguracja wg. rejestrów jest zgodna. Datasheet czytałem od deski do deski po 3 dniu porażek i myślałem, że już wszystko wiem. Kod testowałem z kilku gotowców dostępnych w sieci oraz nawet mam wersje napisaną przeze mnie. Wszystkie dają dokładnie ten sam efekt. Poprawne wartości w rejestrach, ale zero komunikacji i informacja o nieudanym wysyłaniu...
Witam. Ostatnio zainteresował mnie pomiar natężenia światła, potrzebuję go do wykonania projektu. Pomiar dokonuje czujnikiem TSL235R, który podaje mi odpowiedź w formie częstotliwości. Chciałbym aby ktoś przyjrzał się temu co narazie wklepałem do kompilatora, bo nie jestem pewien, czy wszystko będzie grało? Może zacznę od kodu, wtedy zadam pytania itp....
Tak jak koledzy pisali wyżej, problem leży w konfiguracji kierunku portów (brak ustawienia jako wyjście). np: Config Portb = Output Zapoznaj się z pomocą do Bascoma to ułatwi pisanie programów. Zerknij też do dokumentacji procesora jaki prąd może płynąć przez pojedynczy pin oraz sumaryczny prąd na wszystkich portach. Obawiam się że ty też musisz zapoznać...
no to nic, zastosuję dodatkowy mikrokontroler do obsługi serwa Popłakałem się ze śmiechu!! :D:D:D - masz uC do sterowania serwem - odliczasz czas w sposób idiotyczny - widzisz tego konsekwencje - pojawia się sensowne rozwiązanie A Ty co robisz? Zastosujesz drugi uC do sterowania serwem :D;D;D I jaka będzie różnica względem tego pierwszego? Jeden będzie...
Robisz prosty błąd w składni. Poczytaj w helpie o Load. Nie tak: [syntax=basic4gl]Load Timer1 = jakas_wartosc[/syntax] tylko tak: [syntax=basic4gl]Load Timer1 , jakas_wartosc[/syntax] Z tego co pamiętam można również tak. przykładowo: [syntax=basic4gl]Timer0 = 249[/syntax] co jest równoważne: [syntax=basic4gl]Load Timer0 , 6[/syntax] Ale to sobie musisz...
Może po prostu widzisz 0 bo taką wartość ma rejestr po wykonaniu przerwania? Dodatkowo rozważ, że przy podziale 8MHz przez 256 otrzymasz częstotliwość taktowania 31250Hz. Zakładając, że przerwanie będzie po zliczeniu 256 impulsów będzie ono generowane co około 122Hz.
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...
Wpisywanie $CRYSTAL bez rzeczywistej zmiany taktowania procesora będzie powodować, że wszelkie opóźnienia i obliczenia kompilatora dotyczące liczników nie będą zgodne ze stanem faktycznym. GETRC5() korzysta aktywnie z licznika TIMER0. Tak manewruje wartością wpisaną do rejestru licznika oraz preskalerem by otrzymać jednakowe odcinki czasu zliczane później...
Czy sprawa jest warta zachodu jeśli mogę sobie zmienić schemat na taki, gdzie wszystkie piny wyświetlacza będą na jednym rejestrze? Zależy w czym czujesz się lepiej, czy wolisz zmienić software czy schemat. Sposób numer 1 (napisane w semijęzyku) dla lepszego zobrazowania - pobierasz wartość z pól DATA do zmiennej LED, powiedzmy że jest to 164 - bitowo...
Kolego irek2 - dlatego podałem link do takiego prostego przewodnika po uruchamianiu ADC, w połączeniu z notą katalogową będziesz wiedział jakie wartości do jakich rejestrów wpisać. W tym przypadku jest pokazane jakie bity jakich rejestrów po kolei ustawiać. Wierz mi, że to jest wystarczająca ilość informacji.
Masz cały program, napisany trochę chaotycznie ale działa i wyświetla. [syntax=basic4gl] $Regfile="m169def.dat" $Crystal=1000000 $hwstack=40 $swstack=16 $framesize=32 '$baud=9600 config portf=input set portf config porte=input set porte config portb=input set portb config portg=input set portg config portd=input set portd config portc=input set portc...
Witam, Jak w temacie - czy ktoś już tym zajmował albo tworzył coś podobnego? Potrzebuję wykorzystać do tego celu Mega32. Modbus RTU Master po RS485. Odczytać kilka rejestrów ze slave i przedstawić wartości na wyświetlaczu.
Witam ..gdy użyję "Config Clock" działa dobrze przerwanie co 1s,jak zewrę kwarc to staje. Natomiast gdy korzystam z Config Timer kwarc zegarkowy nie jest brany pod uwagę zamiast: Config Timer2 = Timer , Async = On , Prescale = 128 wyedytuj odpowiednio dwa znaczące tu rejestry w sposób bespośredni, na przykład: TCCR2B = Bits(CS22 , CS20) ASSR = Bits(AS)...
Co do komentarzy, to istnieje pewna teza, że lepiej pisać kod, który sam się "komentuje", niż dodawać rozległe komentarze tekstowe. Powód jest oczywisty - komentarze tekstowe nie zawsze się skrupulatnie koryguje przy debugowaniu i wprowadzaniu modyfikacji, więc po kilku iteracjach może bardziej mylić niż pomagać. Kiedyś przykładowo dostałem do modyfikacji...
Jeśli decydujemy się na programowe wyłączenie JTAGA, należy pamiętać o tym, że jednorazowy zapis bitu JTD do wartości 1 w rejestrze MCUCSR może nie wystarczyć i zgodnie z notką katalogową musimy dwukrotnie zapisać ten bit w ciągu czterech cykli zegarowych aby wyłączyć JTAGA.
Też wtrącę swoje trzy grosze. Zacznę kontrowersyjnie. Warto spojrzeć kto doradza - jakoś tak się składa, że C/C++ doradzają osoby mające tysiące postów na koncie i często setki lub tysiące "pomógł", po przeciwnej stronie mamy osoby z licznikiem na poziomie kilku-kilkunastu. Nie znaczy to oczywiście, że ktoś rozpoczynający karierę na elektrodzie nie...
Do rejestru trafia wartość 8 zatem bit AS2 jest ustawiony. CONFIG TIMER2 jest zbędne w tym programie gdyż CONFIG CLOCK = SOFT sam ustawia ten licznik i jego przerwania. 7: Config Clock = Soft +00000047: ldi r24, 0x08 ; set AS2 in ASSR +00000048: out ASSR, r24 +00000049: ldi r24, 0x05 ; prescale 128 +0000004A: out TCCR2, r24 +0000004B:...
Problem w tym że nieprawidłowo sterujesz portem , uart jest urządzeniem peryferyjnym i print coś tam sprowadza sie do wysłania do właściwego rejestru wartości kodu ASCII przestawiając port na odbiór wyłaczysz nadajnik zanim skończy gadać ... tak samo trzeba odpowiednio sterować nadajnikiem od strony komputera . Przerobiłem to zagadnienie w bascomie...
Witam! Chciałem zaprezentować urządzenie będące rejestratorem temperatury powietrza. Założenia: - wewnętrzna pamięć nieulotna, w której zapisywane by były wartości temperatury, możliwość ciągłej rejestracji przez co najmniej miesiąc - wyświetlacz LCD, pokazujący aktualne temperatury wewnętrzne i zewnętrzne, aktualny czas i opcje - możliwość komunikacji...
Poi pierwsze. Do BASCOM-a jest pomoc - także po polsku, której to zresztą jestem autorem. Wersję on-line (beta) znajdziesz na mojej stronie WWW. Jak one działają? Zliczają impusy. Albo z prescalera, albo z zewnątrz. Patrz nota katalogowa. W którą stronę zliczają? Zwykle liczą w górę. W trybach PWM liczą też w obie strony. Patrz nota katalogowa. Jak...
W każdej wersji da się zmienić prędkość przecież to nic innego tylko wpisanie odpowiedniej wartości do rejestrów i można to zrobić z poziomu bascoma lub wstawki asemblerowej .
Oczywiście, że wiem jakich timerów używam. Chodziło mi o to, żeby nie szukać po dataszicie co i gdzie trzeba sprawdzić. No już poszukałem, i zrobiłem sprawdzania rejestrów TIMSK, ale myślałem, że może jest jakaś bascomowa funkcja w rodzaju : If timer1=enabled then... Z tą obsługą błędów też masz oczywiście rację, tyle, że pisząc dawno temu ten program...
Hehe, ja też wiele wyliczałem, ale wszystko wzięło w łep bo uruchomić ten cały system jest strasznie trudno, a ustawienia rejestrów mają w większości wartości krytyczne, trzeba się nieźle namęczyć żeby to wogóle chciało działać, a prędkości to już bajka. Pamiętaj tylko że jest to transmisja pakietowa, z długą preambułą i przez te pakiety prędkość rzeczywista...
Chciałbym zrealizować sterowanie diodą led rgb. Atmega8535 ma w sumie 4 kanały PWM Na razie udało mi się wykorzystać tylko jeden kanał pwm z zegara t1. Ale sterowanie dioda rgb nie było dokładnie takie jak chciałem. Ogólnie chciałem zrobić tak aby móc wybrać kolor w standardzie rgb (czyli dla każdego segmentu wartość od 0 do 255). jednak uznałem, że...
Chciałbym zrealizować sterowanie diodą led rgb. Atmega8535 ma w sumie 4 kanały PWM Na razie udało mi się wykorzystać tylko jeden kanał pwm z zegara t1. Ale sterowanie dioda rgb nie było dokładnie takie jak chciałem. Ogólnie chciałem zrobić tak aby móc wybrać kolor w standardzie rgb (czyli dla każdego segmentu wartość od 0 do 255). jednak uznałem, że...
Witam! Po próbach wyszukania włąściwej odpowiedzi postanowiłem zapytać kolegów o następujący problem - muszę dosyć precyzyjnie wygenerować przerwanie w Bascomie , używam do tego timer0 i odpowiedniego przerwania on timer0. Dziwny dla mnie jest fakt że programik : on timer0 etykietaprzerwania .... etykietaprzerwania: portb7 = not portb.7 timer0 = 200...
Witam. Mam do zrobienia w szkole stanowisko badające przeciążenia kierowcy podczas symulacji zderzenia samochodu. Całość w skrócie wygląda tak, że na metalowej konstrukcji jest umieszczony fotel z pasami bezwładnościowymi wraz z czujnikiem akcelerometrycznym (MMA3202DR2 Freescale). Fotel ten jest ustawiony pod pewnym kątem do podłoża, zjeżdżając uderza...
P Inaczej można to zrobić bardzo prosto: wpisując nową wartość do rejestrów UBRRH I UBRRL (kolejność wpisywania jest ważna). Nigdy tego nie bałem pod uwagę wytłumacz dlaczego bo moze sie okazać żę bede musiał przerabiac sporo programów wstecz.
Dorzucam wersję z porządnym debouncingiem. Ten z BASCOMa jest zbyt uproszczony i nie nadaje się do profesjonalnych zastosowań. Po wciśnięciu jednego przycisku naciśnięcia innych przycisków są ignorowane do czasu puszczenia tego pierwszego. Zauważ autorze, że nie ma już nigdzie w kodzie czekania na cokolwiek (brak wywołań funkcji WaitMs()). Wszystko...
Mam nadzieję że pin WP nie "zmasowany" bo powinien być ewentualnie podciagnięty do VCC. One mają "smart pull-up" to znaczy, że potrafią wyłaczyć wewnętrzny włączany automatycznie gdy wykryją zwarcie wejścia do GND by oszczędzać energię. W sumie mądre. Wiadomo tyczy tylko zapisu do eeprom i rozruchu po POR/BOR, ale kto wie jak Ty to sprawdzasz. Żeby...
Czytam i czytam o tym trybie ctc i wiem tylko tyle że trzeba wpisać do rejestru OCR1A wartość 100 i jeśli licznik doliczy do wartości w OCR1A to ma zrobić toggle czyli zmienić stan wyjścia OC1A na przeciwny. Problem w tym, że nie wiem jak to zapisać w Bascomie. Czy to ma być jakoś tak?? $regfile = "m8def.DAT" $crystal = 8000000 Config Lcdbus...
Masz ATmega8, czyli masz ADC i masz timer połączony z pinami I/O, czyli za pomocą timera możesz generować przebiegi na wyjściu. Rzecz wręcz banalna. Za pomocą ADC wykonujesz pomiar napięcia. przeliczasz go na okres, albo odrazu częstotliwość, nie wiem jak to w bascomie wyglada. W każdym razie częsottliwość ustala się przez zapisanie w odpowiednim rejestrze...
w jaki sposób rozwiązujesz rok w 8583 ? Jak "rozwiązuję rok" ;) to dość trudno tak w kilku zdaniach wytłumaczyć, chociaż sprawa generalnie jest prosta... Może więc zamiast się rozwodzić, pozwolę sobie wkleić dobrze (mam nadzieję) skomentowane fragmenty swojego programu. ' ****************************************... 'Odczyt:...
Mam mikrokontroler 8051 i licznik T0 który jest częścią tego mikrokontrolera. TO pracuje w trybie 1 (czyli jako 16-bitowy licznik) i ma on zliczać impulsy wewnętrzne (czyli pracować jako timer). Częstotliwość rezonatora kwarcowego podłączonego do mikrokontrolera wynosi 12Mhz. Wiadomo, że TO będzie zliczał impulsy 12Mhz/12(albo odwrotnie). I tutaj nie...
Witam Wszystkich Miałem problem z nieprawidłowym działaniem programatora STK200/300 do programowania mikrokontrolerów AVR pod systemem XP. Pod windowsem 98SE programator wraz z pakietem bascom_avr działał prawidłowo. Natomiast pod systemem XP raz programował się uC raz nie generalnie to była loteria. Gdzieś w internecie znalazłem rozwiązanie tego problemu....
zrobiłem takie coś: [syntax=basic4gl] 'Program do kalibracji rejestru specjalnego OSCCAL $regfile = "m8def.dat" $crystal = 8000000 $baud = 9600 Dim I As Byte Print "OSCCAL w procku ma wartosc:" ; Osccal Wait 1 Do Osccal = Osccal - 20 For I = 0 To 40 Wait 1 Osccal = Osccal + 1 Print "OSCCAL=" ; Osccal Print "" Next Wait 5 Loop End [/syntax] Wartość oryginalna...
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...
Muszę odpowiedź poprzedzić krótkim wstępem. W Bascom do każdego obsługiwanego mikrokontrolera jest plik definicji. Można w nim wyczytać ciekawe informacje, ale trzeba wiedziec jak go otworzyć. Chodzi o to że edytor Bascom formatuje tekst i przy zamykaniu takiego pliku mógłby go tak zmienić że byłby nieprzydatny. Z drugiej strony nie jest to przeciez...
Temat ostatecznie zmieniłem. Program działa, jeśli wywalę / "zaremuję" obsługę Wyświetlania baterii-nie napięcia. To jest dziwne, bo adc i reszta jest ok. Ale jek tylko dołożę obsługę wyświetlania ikonek IF-ELSE to procesor nie budzi się. Dodam że automatyczne wyłączanie zrealizowałem na transoptorze, bo inaczej miałem problemy z wybudzaniem. Program:...
Ten kod powyżej wklepałem z palca... Dopiero się uczę C wcześniej był Bascom. Dla ułatwienia siedzę jeszcze na Arduino, bo miałem problem zainstalować gcc chociaż posługuje się rejestrami... Sprawdziłem z ciekawości i kompilator Arduino nie ostrzegł przed tym błędem. O szumie nie pomyślałem, chociaż docelowo wartość ADC będzie przekształcona na przedział...
Moi drodzy, po co kłótnie, Po co wasze swary głupie, Wnet i tak zginiemy w zupie! Może krótko i merytorycznie wyjaśnię Bascom`owe podstawy a zacznę od komend Set i Reset. Otóż potrafią one ustawiać tylko jeden bit na raz. Jeśli numer bitu nie jest wskazany to zawsze będzie to bit numer 0. Dlatego wskazane piny portów PINx, PORTx, DDRx i inne ustawiają...
witam, Piszę program w bascomie, jedną z jego funkcji ma być odczytywanie pojemności karty mmc podłączonej do ATMEGI. Nie wiem dlaczego jest ona zakodowana w dość dziwny sposób i żeby ją uzyskać trzeba się posłużyć wartościami z trzech pól rejestru CSD który zczytuję do tablicy. Pola tego rejestru są różnej wielkości np. 2,3,4,5,7,12 bitów więc potrzeba...
A jakby oprogramowanie napisał w linux'ie to już zupełnie samo by chodziło... Zwalanie krzaczenia lcd'ka na język to próba wykazania wyższości świąt Bożego Narodzenia nad świętami Wielkiej Nocy - bzdura. jacynka84: Nie wiem czy próbujesz wykorzystywać jakieś biblioteki do KS'a, jeśli tak to daruj sobie taką pomoc. Ten lcd nie przyjmuje danych jako textowe...
Kol. Roko . Częściowo takie rzeczy pojawiły się już w polskiej pomocy do BASCOM-a On-Line. Obecnie jest jednak ona czasowo niedostępna. Przykład: BASCOM AVR - Tworzenie programu W trakcie edycji (...) Jak nie pisać programów. Dość często podczas przeglądania programów udostępnionych przez inne osoby da się zauważyć pewne charakterystyczne i powtarzane...
Czy jest możliwość obsłużenia tego w Bascomie? Funkcja GETADC() Przeznaczenie: Pobiera wynik przetwarzania z wbudowanego przetwornika ADC na wybranym kanale. Składnia: zmienna = GETADC( nr_kanału , offset ] ) gdzie: zmienna - zmienna typu Word do której wpisana będzie przetworzona wartość, nr_kanału - numer kanału przetwornika ADC. Zwykle z zakresu...
Witam, cel pozostał ten sam, lecz zmienił się kod, tym razem bez Lcd, więc jako zadanie dostałem opisanie krok po kroku otrzymanego kodu oraz przeniesienie kodu z języka Bascom na kod Asemblera i C. Jako, że programowanie nie jest moją mocną stroną, prosiłbym o pomoc (rady, sugestie najlepiej w sposób tzw. łopatologiczny jak można osiągnąć postawiony...
Witam. Mam problem z komunikacją z RTC DS12887 (DS1287). Układ wykorzystuje cały port do adresowania oraz wymiany danych oraz kilku dodatkowych do sterowania. Używałem tego układu do pracy dyplomowej (11 lat temu) i pisałem wówczas w asemblerze. Natomiast obecnie programuje w Bascom-ie i tu zaczyna się problem gdyż mogę skonfigurować port jako wyjście...
Witam W oparciu o projekt Kolegi _Duch - rejestrator pogodowy zrobiłem swój ( na razie prosty ) rejestrator. Wykorzystałem podane w wątku pliki config_mmc.bas i Config_AVR-DOS.BAS . Na płytce testowej EVB 4.3 v.4 . Podłączenie z SD standardowe. Niestety nic się nie zapisuje na karcie SD ( próbowałem 2 Gb Kingston i 1 Gb Sandisk - formatowane na FAT...
Reflektując się.. jesli kogoś uraziłem to wybaczcie ale już mnie trafia jak można zmarnować pół dnia na uruchomienie timera. Poniżej program który napisałem tylko po to żeby uruchomić timer. Kod ten jest bez ustawiania portów in/out jak i bez definicji zmiennych. Jedynej zmiennej "Czas" używam do przechwycenia wartości timera. Dodano po 25 Dodano......
Spróbuj zamiast Timebase zrobić Load Timer0, 31250 ................ Timer/Counter0 (TCNT0) jest 8-bitowy rejestr. Jak więc chcesz do niego wpisac liczbę większa niż 255? (!) Nie jest tu istotne czy stosujesz wpis zmiennej 'timebase' czy tez liczbę const. skutek jest ten sam. Popatrz na mechanizm wpisu wartości do Timera0: Timer0= A '-znaczy to samo...
Po zapoznaniu się z datasheet Atmegi 8 (str.186-188 oraz rejestrów na str.309) troszkę mi się rozjaśniło. Oto poniższy kod który stworzyłem na podstawie powyższego. ....... Sprawdzę działanie w praktyce jutro. Gdyby było coś jeszcze w nim nie tak to proszę o reakcję :) \] O to właśnie chodziło! Dodam jeszcze: -zwróc uwagę na rejestr ADUMX. Trzy górne...
Witam Mam płytkę Loggera GPS + SD + PCF8563. Jeśli chodzi o GPS i zapis na SD wszytko jest OK. Problemem jest ( i to pierwszy raz się z czymś takim stykam ) odczyt danych z z układu PCF8563. Otóż dla pewnych wartości sekund, odczytana wartość czasu - godziny jest większa o 40 ( czterdzieści ). Czyli jeśli czas jest 22:40:02 to jest wyświetlany poprawnie,...
To co dobre do czytania z czujnika niekoniecznie dobre jest do zapisywania w nim. W nocie jest taka tabelka: Jednocześnie w innym miejscu noty można przeczytać: It is not possible to write into the RAM memory. It can only be read and only a limited number of RAM registers are of interest to the customer. Co w skrócie oznacza, ze do RAM nie można nic...
Możesz napisać i cieszyć się funkcjonalnością nie wiedząc o co chodzi ... $baud = predkosc_transmisji Tylko jeśli nie umieści się tej informacji w kodzie i użyje gdzieś Print/Input lub pochodnej to kompilator ustawienia dla $baud bierze z tych zdefiniowanych w IDE. Bascom konfiguruje od razu obydwa piny. Skonfigurowanie ich polega na wpisie do rejestru...
Program napisany jest w Bascom. Delay nie ma w ogóle. Program napisany chaotycznie, ale działał ok dopóki nie dopisałem obsługi DCF77. Gdy przyjdzie odpowiednia godzina, dioda IR ma wysłać kod do odbiornika. Wtedy właśnie procesor zwalnia. Sekundy wtedy "idą" co 3 no i dźwięk ma zwolnione tempo. [syntax=vbnet] $regfile = "m32def.dat" $crystal = 8000000...
Na wstępie chciałbym powiedzieć że piszę w BASCOM-ie AVR. Buduję urządzenie które ma wyświetlać wynik na wyświetlaczu 7-mio segmentowym (podyktowane warunkami środowiskowymi i widocznością). Napisałem program który działa (listing poniżej) ale dręczy mnie pytanie czy nie da się tego zrobić prościej tzn pobierać poszczególne cyfry bezpośrednio ze zmiennej...
Cześć. Przeglądałem archiwum ale nic dla siebie konkretnego nie znalazłem. Mam problem z programem (konfiguracją przerwań). Chciałem wykonać mały i prosty licznik obrotów. Wykonałem przetwornik obrót/impulsy na diodach, zakładam że nie występują w nim "drgania styków" :) Otrzymany sygnał chciałem podać na wejście INT0 i za pomocą Timera zliczać pojawiające...
Jestem początkujący więc proszę o wyrozumiałość. Mam pytanie: czy w Bascomie można odczytać, lub zmienić wartość pojedynczego bitu zmiennej, tak jak w przypadku np rejestrów I/O?. Przykład: W przypadku portów I/O np. w procku można odczytać stan pojedynczej końcówki portu za pomocą zapisu. Portd.3, Portb.6 itp. Czy w przypadku zmiennej można odczytać...
Cytuję: "Ustawia się to w zależności od skomplikowania programu. (...)" O co tutaj chodzi i o jakie wartości tutaj chodzi? Dokładnie chodzi o ilość bajtów jaką początkowo zajmie każdy ze stosów. Stos jest elementem rozrastającym i kurczącym się dynamicznie. Może dojść do sytuacji gdzie jeden zajdzie na drugi - stack overleap - i kłopot gotowy. Dlatego...
Mega 8, kwarc 14745600 i transmisja 1200 bez problemu. BAscom ze standardowymi komendami ni ebędzie tego potrafił. I to jest kolejne ograniczenie ale da sie je obejść. W nocie katalogowej do ustalania prędkości są dwa rejestry: (UBRRL i UBRRH). Bascom używa tylko UBRRL (dlatego że dostęp do UBRRH jest bardziej skomplikowany). To znaczy że transmisja...
Wczytałem sie dokładniej w dokumantację i teraz widzę jakie głupoty popisałem poprzednim razem :-) Mam nadzieję że teraz już załapałem. W TINY13 są dwa rejestry konfiguracyjne do TIMER0: TCCR0A=COM0A1 , COM0A0 , COM0B1 , COM0B0 , - , - , WGM01 , WGM00 TCCR0B=FOC0A , FOC0B , - , - , WGM02 , CS02 , CS01 , CS00 Jak sądzę, żeby CTC działało na wyjściu OC0A...
Spóźniony zapłon :D Patrz 2 posty wcześniej, tak jak pisałem - najpierw przez DDR ustalasz kierunek.. pózniej wartość. I obaj nie macie racji :( Kolejność zapisu rejestrów DDRx i PORTx , nie ma w tym przypadku nic do rzeczy.
Moze ktos mi dokladnie powie co robi bascom jak reaguje na przerwanie. Dokładnie to robi tak: - Bez opcji NoSave : +00000082: 920F PUSH R0 Push register on stack +00000083: 921F PUSH R1 Push register on stack +00000084: 922F PUSH R2 Push register on stack +00000085: 923F PUSH R3 Push register on stack +00000086: 924F PUSH R4 Push...