Te procesory się aż tak nie różnią. Dodatkowe funkcjonalności pinów nie przeszkadzają w niczym dopóki ich nie uruchomisz. (PCINT - Pin Change Interrupt trzeba wiedzieć jak włączyć). Jest duża różnica jeśli chodzi o Timery właśnie. Mega8 ma na przykład tylko jeden rejestr Compare dla Timer2 dlatego inaczej się nazywają. Opisałem to u siebie na stronie...
Witam! Po pierwsze to z reguły przyciski powinny zwierać piny wejściowe do masy a nie do zasilania. Wynika to z faktu posiadania przez procesory AVR wewnętrznych rezystorów pull-up podciągających wejścia do +vcc, czyli panuje na nich stale stan wysoki (oczywiście gdy zostaną uaktywnione). Po drugie to akurat sygnał CLK ma się zmieniać, podczas narastającego...
No i warto zapamiętać, że rejestr PIN jest w ATMEGA8 tylko do odczytu. To ja dopiszę, że w BASCOM Config PINB.1=Input jest zupełnie poprawną formą. Ale tylko Config. Natomiast jeśli naraz ustawiamy wszystkie bity to powinno być Config PORTB=Input.
Podam Ci linki do rozwiązania ale może to nie w Bacom a w C ale mogło by Cie nakierować. Na pewno na poprawność podłączenia i ewentualnej kompilacji tak żeby sobie tylko przetestować działanie rejestru. W filmie tam masz opowiedziane o tym rejestrze z notą jak i samą komunikacje z SPI, w Bascomie zapewne będzie analogicznie. Myślę że warto to zobaczyć...
Zamiast odczytu rejestru konfiguracyjnego "&H01" warto odczytać rejestr z przechowywaną temperaturą "&H00" I2cstart I2cwbyte &H90 I2cwbyte &H00 I2cstart I2cwbyte &H91 I2crbyte Dataspace(28) , Ack I2crbyte Dataspace(26) , Nack I2cstop
Witam Bardziej profesjonalnie jest wszystkie układy potraktować jako slave . Każdy słucha i czeka na przerwanie z uarta , jak je otrzymuje odbiera zawartość z udr porównuje i albo odbiera dalej albo ignoruje i czeka na kolejny adres . Atmel wyposażył układy w tryb multimaster ,który się do tego świetnie nadaje i warto o nim przeczytać w dokumentacji...
Zdecydowanie będzie szybsze. Oto jak bascom robi to "za kulisami" Byte.Bit DIM One as Byte One.1 = 1 SET set T-Bit LDI XL,$60 LDI XH,$00 LD r24,X BLD r24,1 T -->reg.1 ST X,r24 store Więc realnie tylko dwa kroki asemblerowe (set i bld) są wykonywane w celu uzyskania bitu, oraz cztery w celu załadowania zmiennej, w Twoim przypadku trzeba załadować...
tak - takimi programikami można sprawdzić, i wartość należy zawsze wpisać do rejestru przy starcie każdego programu. To jest rejestr w pamięci RAM a nie EEPROM. Nie jest to też Fusebit. Dodano po 2 ale wiesz co? ja bym na twoim miejscu sprawdził ten procek z kwarcem = 8MHz czy przypadkiem się nie okaże że jednak też nie działają wyższe prędkości. Może...
Nie działa bo masz nie włączone podciąganie do plusa. Rejestry PIN nie służą do zapisu w tym procesorze (tylko w niektórych modelach zapis 1-dynki do nich powoduje zmianę stanu odpowiadającego bitu w rejestrze PORT). http://www.atmel.com/Images/doc2503.pdf - strona 64 Musisz dać dla każdego przycisku po instrukcji Config ... Input instrukcję Set Portd.x...
Zobacz jak dziala kod na jakims debuggerze - masz JTAG? Albo w AVR Studio (nie wiem czy Bascom ma odpowiednik). Sprawdz czy prawidlowo sa ustawiane rejestry odpowiedzialne za wspolprace z XRAM. Moze to jakis blad Bascoma? Swoja droga przy tak duzym procesorze chyba juz warto przejsc na profesjonalne narzedzia? :)
Jeszcze lepsze byłoby wykorzystanie trybu CTC (Clear Timer on Compare match) - gdzie licznik jest kasowany po stwierdzeniu równości między rejestrem porównania a zawartością licznika... Warto zajrzeć do help'a BASCOMa, oraz noty katalogowej mega32 - tam większość spraw jest wyjaśniona. Również na Elce temat był parę razy poruszany...
Jeżeli to ma być coś bardziej profesjonalnego, jak tytułowa tablica informacyjna, to może warto by pomyśleć o zastosowaniu układów specjalnie przeznaczonych do tego celu, czyli TLC5940 lub A6276. Sam powoli przymierzam się do zbudowania takie tablicy na TLC5940, bo zabawa z tranzystorami i rejestrami trochę mija się z celem przy budowie jakiegoś poważniejszego...
oczywiście, że wystarczy $asm ... kod twojej wstawki $end asm ale oczywiście przydałoby się jeszcze wiedzieć jak można uzyskiwać w asemblerze dostęp do zmiennych itp, otóż: Dim Zmienna1 as Byte $asm lds R16, {Zmienna1} ... coś tam robimy sobie w asm ze zmienną i chcemy ją uaktualnić, więc: sts {Zmienna1}, R16 $end asm powyżej...
Nie napisaleś w czym piszesz program, ale jeżeli w Bascomie, to tu są moje kawałki programu który działa poprawnie: na początku programu: 'configuracja ds1307 I2cstart I2cwbyte 208 I2cwbyte 7 I2cwbyte &B00010000; I2cstop odczyt: I2cstart I2cwbyte 208 I2cwbyte 0 I2cstart I2cwbyte 209 I2crbyte Sekunda , Ack I2crbyte Minuta , Ack I2crbyte Godzina , Ack...
W przypadku taktowania, odpowiednie ustawienie fuse bitów powoduje nadpisanie funkcji pinu, np. ustawienie źródła zegara systemowego na zewnętrzny rezonator kwarcowy powoduje wyłączenie pinów XTAL z użycia jako IO, więc cokolwiek na nich ustawisz i tak nie zadziała. Co do innych interfejsów, w większości przypadków mikrokontroler sam przejmuje władzę...
W WinAVR wyglądałoby to tak: #include <avr\io.h> //plik nagłówkowy(zawiera m. in. nazwy rejestrów) int main(void) { DDRA=0b00000001; // lub (wygodniej) DDRA=0x01; lub DDRA=1; PORTA=255; // lub PORTA=0xff; lub PORTA=0b11111111; while(1) //pętla nieskończona { if (bit_is_clear(PINA,0)) //jeśli...
Działa to tak jak byś chciał. Płytkę podłączasz do komputera i do zasilania, programujesz, sprawdzasz czy wszystko działa, jak nie, to poprawiasz program i znów programujesz. Nie trzeba odłączać płytki od komputera, więc wszystko przebiega bardzo sprawnie. Jak nie miałeś styczności z mikrokontrolerami, a raczej nie miałeś ( tak jak ja jeszcze 2 miesiące...
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...
http://obrazki.elektroda.pl/1951024400_1... W itam wszystkich forumowiczów Elektrody! :sm9: M oją kolejną konstrukcją prezentowaną na forum w dziale DIY jest Rejestrator Temperatury . D ziałanie rejestratora polega na zapisywaniu do pamięci EEPROM co określony czas wartości temperatury pobranej z cyfrowego czujnika DS1820. W pamięci...
Może zanim zapomnę o czym chciałem napisać a nie jest najważniejsze, ale dla Ciebie ważne. Tak w telegraficznym skrócie -> USART w AVR ma możliwość włączenia jakby podwójnej prędkości/próbkowania (to samo SPI). Bit ma skrótowa nazwę U2X. Przy taktowaniu 16MHz, jak prawie każda płyta Ardu, to bez U2X predkość 115200 miałaby za duzy błąd który niby maksem...
Chodziło mi właśnie o systematyzowanie komórek po 4 żeby przy odczycie nie rozjechały mi się adresy. Zgadza się Właśnie o to mi chodziło Macie rację warto poświęcić jedną komórkę na wskaźnik. Właśnie tego mi brakowało Jeszcze nie wiem jak to zrobię, przede mną cała noc zabawy, dam jutro znać jak się udało , ewentualnie na czym utknąłem. Nie potrzebujesz...
Tryb CTC należy ustawić zgodnie ze stroną 112 PDF. Należy dokładnie przeczytać tę stronę i okoliczne. Potem ustawić odpowiednie bity w odpowiednich rejestrach. W Bascomie robi się to np. tak: set TCCR1B.wgm13 i tak dalej. Bascom nie ma gotowych instrukcji na wszystkie możliwe tryby pracy timerów. Ale pozwala na ustawienie tych trybów "ręcznie"- przez...
Pytanie jak zrobić przeszukiwanie kolejnego indeksu po stwierdzeniu, że pierwszy jest nie poprawny? Bez modyfikacji funkcji Lookdown w bibliotece mcs.lib , raczej nie ma możliwości. Jeżeli znasz asembler możesz zmodyfikować funkcje _LOOKDOWNBYTE i _LOOKDOWNINT . Można też wykorzystać instrukcje RESTORE i READ do przeszukania tablicy: [syntax=basic4gl]$regfile...
Chcąc bezproblemowo zmieniać kanały powinieneś zostawić GETADC() i w konfiguracji zmienić na SINGLE . W trybie FREE przetwornik mierzy ciągle (ustawiając flagi przerwania ADI F po każdym pomiarze), a ostatni wynik będzie znajdował się w zmiennej specjalnej ADCD (typu Word ). Jednak zmiana kanału pomiaru jest nieco problematyczna, bo kanały musiałbyś...
Niestety Bascom jest niedorobiony. Ilez to ja niekiedy spedzilem czasu bo cos mi nie chodzilo. Co wersja to inny blad. W jednej wersji nie chodzily mi np. timery na Atmega 16, prescaler blednie sie ustawial itp. Warto jest podgladnac rejestry i sprawdzic czy aby Bascom nie wpisal tam glupot. Jesli wpisal glupoty a to najczesciej jest przyczyna probowac...
Do autora - przyjrzyj się [syntax=vbnet]Config Portd.5 = Output : Dc_wlacz Alias Portd.5 Config Portd.1 = Input : S12_wolniej Alias Portd.1 Config Portd.2 = Input : S11_szybc Alias Portd.2 Config Pina.0 = Output : Kier_lewo Alias Pina.0 Config Pina.1 = Output : Kier_prawo Alias Pina.1 Config Pina.4 = Input : S10_start Alias Pina.4 Config Pina.5 = Input...
Portb = Mem_wiert ustawia na porcie odpowiednią kombinację stanów Mem_wiert = 1 - Końcówka 0 stan wysoki; reszta niski Mem_wiert = 2 - Końcówka 1 stan wysoki; reszta niski Mem_wiert = 4 - Końcówka 2 stan wysoki; reszta niski Mem_wiert = 8 - Końcówka 3 stan wysoki; reszta niski portb=0 wyłącza zasilanie silnika. Łatwiej jest sterować portem za pomocą...
Karol, miałem Ci napisać :P przez komunikator.. :D ale pisze tu.. może się przydać komuś :) pierwsze co to podam Ci pętle na 1us :) przy 16MHz w kodzie ASM $asm ldi R21, 0 delay_1us: inc R21 cpi R21, 4 brlo delay_1us $end asm lub pisany kod z głowy :P ale jeszcze do udoskonalenia... :P całego przerwania na podstawie ostatniego Twojego skrawka kodu......
Witam Jezeli dobrze zrozumialem to jest dokladnie tak jak piszesz :) W zasadzie nie wiem w czym klopot. I chyba reszta forumowiczow tez, skoro na tak oczywiste pytanie nikt nie odpisuje ;) Jezeli uC wykonuje jakis program i tylko czasem musi odebrac bajt z UART.....warto zastosowac przerwanie....to rozwiazuje caly problem. Jezeli spodziewasz sie ciaglego...
a możesz napisać o co Ci chodzi?? Piszesz o jakimś języku maszynowym, ja nie widzę tu nic z języka maszynowego. Potem coś o Bascomie że Ci nie działa, ale przecież chcesz uczysz się maszynowego. Polecenia odnoszą sie do asemblera i prawdopodobnie o to Ci chodziło mov P1,#07h mov P1,#7 mov P1,#00000111b są równoważne jeśli chodzi o zatrzymanie licznika...
No to faktycznie niezła jaja z tymi adresami. Ok, komunikacja wróciła teraz muszę trochę głębiej się w to wciągnąć bo chcę zrobić kompas, a na razie wyniki z osi jakie czytam są badzo szybkozmienne. Kwestia czy ten kompas spoczywa w miejscu czy będzie ruchomy (trzeba kompensacje przechyłu zrobić chyba to było na akcelerometrze ) . Najlepiej to kup...
http://obrazki.elektroda.pl/1951024400_1... W itam wszystkich forumowiczów Elektrody! :sm9: M oją kolejną konstrukcją prezentowaną na forum w dziale DIY jest Rejestrator Temperatury . D ziałanie rejestratora polega na zapisywaniu do pamięci EEPROM co określony czas wartości temperatury pobranej z cyfrowego czujnika DS1820. W pamięci...
Jeden przykład pewnie będzie tu wart więcej niż tysiąc słów :-) Pisałeś, że chcesz skonfigurować przerwanie PCINT4. Uważam, że powinno to wyglądać tak: Pcmsk0 = &B0001_0000 'odblokuj PCINT4 On Pcint0 Test 'przerwanie ==> skocz do procedury test Enable Pcint0 'włącz przerwanie od PCINT0...PCINT7 Enable Interrupts Okazało się, że powyższy kod działa...
W instrukcji CONFIG SERVOS jest taki parametr jak RELOAD = xxx. Liczba xxx określa jaki czas w us będzie pomiędzy kolejnymi przerwaniami licznika taktującego generator PWM dla układów serwa. I będzie to rozdzielczość tego układu. Zatem jeśli wpiszesz 10 to SERVOS(1) = 100 da nam 100x10us = 1ms impuls powtarzający się co 20ms na wyjściu podłączonym do...
Nie chodzi o niechęć ściągnięcia - po prostu tą wersję mam 'kupną' i dotychczas nie miałem do niej zastrzeżeń. == Sprawdziłem wyniki kompilacji dla v.1.11.8.1 - przy ustawieniu takim jak na moim lisingu ( prescaler=32 ) rejestr TCCR0 ustawiany jest na wartość 03h czyli fizycznie na CLK/64, czyli powinno być prawidłowo pomimo błędu w kompilatorze.
bo w prockach avr do odczytu stanu sluzy rejestr pin a nie port. powienies napisac W=pind
:arrow: Ziele6 Powinieneś zrobić to w ten sposób: $regfile = "2313def.dat" Ddrd.1 = 0 'tryb pracy: 0 - jako wejście, 1 - jako wyjście Portd.1=1 Cls Do Locate 1 , 1 If Pind.1 = 0 Then Lcd "on " else lcd "off" End If Wait 1 Loop ...a to dlatego, że w AVRach stan portu odczytuje się przez rejestr PINx.y a nie przez PORTx.y. Dodatkowo trzeba określić tryb...
witam zamiast pcf8583 postanowilem wmontowac cos o mniejszych wymiarach i lepszych parametrach tj rtc m41t81 - "klon" pcf wyprowadzenia sa niemal identyczne, poza pinem przeznaczonym do baterii nie wymaga on rowniez trymetra do reg. kwarcu Moj problem polega na tym ze nie moge go zmusic do "startu" czytam note aplikacyjna http://www.st.com/stonline/books/pdf/doc...
Te dwie linijki przed pętlą while to konfiguracja interfejsu SPI mikrokontrolera. Rejestry SPCR i SPSR służą do ustawiania parametrów transmisji. Szczegółowy ich opis jest w datasheecie do mikrokontrolera (strony 141 - 143). Wartości jakie wpisane są do rejestrów determinują następujące warunki transmisji : - Wyłączone przerwania od SPI (bit SPIE w...
Witam, mam problem z kompilacją kodu sprzed 10-ciu lat, najnowszy bascom. problem jest z rejestrami: Ocr0b = &H80 Ocr0a = &H80 proszę o wskazanie przyczyny. [code][syntax=vbnet] $projecttime = 0 $regfile = "m32def.dat" $crystal = 16000000 ' gdy Baro_idle=0 nie widzi adresu 238 ($EE) ' gdy Baro_idle=1 widzi adres 238 ($EE) !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!....
dzięki za pomoc , zrobiłem to tak : Slijbajt: Wartosc = Portc Kierunek = Ddrc For Razy = 7 To 0 Step -1 Wartosc.5 = 0 Kierunek.5 = 1 Wartosc.4 = Bajt.razy Kierunek.4 = Not Bajt.razy Portc = Wartosc Ddrc = Kierunek Waitus 7 Ddrc.5 = 0 Portc.5 = 1 Waitus 1 Next Razy Waitus 6 Ddrc.5 = 0 : Portc.5 = 1 Waitus 5 Ddrc.4 = 0 : Portc.4 = 1 Return...
1. Co do inicjalizacji wszystkich parametrów - owszem, po POR trzeba zmienić tylko to, co nas interesuje, ale z praktyki wiem, że czasem podczas pracy i np. nieoczekiwanego resetu procesora itp. inne rejestry są przez przypadek zmieniane - wtedy trzeba ustawić wszystko. 2. (a nawet nie opisaną w dokumentacji 0xCC17) Tu się nie zgodzę. moduł RFM12B ma...
ATmega644 ma inne nazwy wielu rejestrów, więc albo może się gdzieś odwołujesz do nich bezpośrednio w kodzie bascomicznym, albo natrafiłeś na kolejną "dziurkę" w bascomie albo może jednak warto w końcu zacząć pisać w C ? (to tylko taka luźna sugestia) ale wtedy nigdy nie spotkasz się z takimi niespodziankami.
tak jak piszesz reti używasz tylko do powrotów z przerwań, natomiast samo ret do powrotów z funkcji (podprogramów) aby dosyć jasno pisać kod należałoby się trzymać pewnej zasady, o którą czasem wiadomo ciężko ale... .... otóż po tei inicjalizacji robisz tzw pętlę główną (zamkniętą) - występuje ona w każdym języku wyższego poziomu jak Bascom lub C. czyli...
Witam probuje wykorzystac funkcje Getrc5 na attiny25 a niestety bardzo rzadko korzystam z bascoma. w chwili kompilacji zglasza mi blad .EQY not foun ,probably using functions that are not supported by the selected chip z tego co wiem w attiny25 znajduja sie rejestry TCCR0A,TCCR0B. co dziwne wydawalo mi sie ze ten kod kiedys mi dzialal :P
A uprawnienia SEP masz by się tak bawić. A tak na margniesie chesz wartość skuteczną czy szczytową?
Wartosc kolejnego bitu zmiennej (czyli portu bo jego stan przechowywany jest w rejestrze-zmiennej) mozesz odczytac tak: zmienna.nr_bitu w przypadku portu B bedzie to wygladalo tak jakas_zmienna=Pinb.4 jakas_zmienna=Pinb.5 jakas_zmienna=Pinb.6 jakas_zmienna=Pinb.7
M168 ma >128kB FLASH? Ciekawostka. Dodano po 2 Moja rada jest taka: przejść się na GCC. To jest niedoróbka BASCOMa, najlepiej zgłosić to do supportu. Akurat tu gcc obsysa podobnie. Co prawda jakoś to działa przy >128kB FLASH, ale nie do końca. Raz, że dane muszą być <64kB, inaczej trzeba kombinować jeszcze bardziej niż zazwyczaj, to jeszcze...
Cóż, tego nie testowałem dokładnie, ale BASCOM ma swoje dziwne sprawy z konfiguracjami i niektórymi instrukcjami. Najlepiej by było gdybyś odwoływał się bezpośrednio do rejestrów konfiguracji ADC w celu zmiany tych parametrów.
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...
bascom rejestr bascom rejestr przesuwny wartość rejestr bascom
volvo silnika silnik bezszczotkowy zasada działania temperatury renault master
napęd somfy problemy ładowarka hitachi uc18yg
Podłączenie zaworu gaszącego w Mercedes W210 Polaryzacja zaworu gaszącego Mercedes W210