Początek zabawy z bascomem - Page 2

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From Polish to

Threaded View
Re: Początek zabawy z bascomem
82%(a):

Quoted text here. Click to load it

Quoted text here. Click to load it

Quoted text here. Click to load it
BC%ywanym  =

Quoted text here. Click to load it
82%by tylko  =

Quoted text here. Click to load it

Quoted text here. Click to load it

Quoted text here. Click to load it

Quoted text here. Click to load it

Quoted text here. Click to load it
Bo akurat pod rC4%99kC4%85 nie miaC5%82em lepszego przykC5%82adu, a =
chciaC5%82em udowodniC4%87 C5%BCe  =

wykonwywanie
kilku operacji w jednej linijce skutecznie jC4%85 zaciemnia, ten przykC5%
82%ad
oczywiC5%9Bcie nie jest trudny. WC5%82aC5%9Bnie nie mogC4%99 odnaleC5%
9B%C487% tego kodu w ktC3%B3rym
byC5%82a taka pereC5%82ka.
Quoted text here. Click to load it


-- =

Pozdr
JanuszK

Re: Poczštek zabawy z bascomem
On Wed, 09 Feb 2011 10:03:09 +0100,  janusz_kk1 wrote:
Quoted text here. Click to load it

Oczywiscie sa perelki zaciemnione doskonale, ale jak chcesz powyzsze
rozbic na kilka linijek zeby bylo czytelne ? Chyba ze tak

            c_size_mul = ((MMC_Data_16[9] & 0x03) << 1)
                        +((MMC_Data_16[10] >> 7) & 0x01);

J.


Re: Początek zabawy z bascomem



Quoted text here. Click to load it

Ale to jest bardzo intuicyjny zapis. Zaczyna się od środka nawiasów. Jeżeli
wiesz czego chcesz to to właśnie to zapisałeś.


Re: Początek zabawy z bascomem

Quoted text here. Click to load it

Czytanie cudzego kodu zawsze jest trudne. Gorzej jak sie nie daje odczytac
wlasnego.
Jako ze mam juz na karku ponad 4 dychy a zaczynalem programowac w asemblerze
na starego poczciwego z80 ( i nie mialem zadnych problemow ze sterownikiem
do programatora - mial on klawiature 16tkowa i trzeba bylo przepisac caly
kod bajt po bajcie, zmiana w programie i 2kb znowu bajt po bajcie - to
dopiero uczylo myslenia)
to pozwole sobie zwrocic uwage na kilka spraw natury ogolnej.

Komentarze - do takiego kodu jak powyzszy przydaje sie komentarz - dzis
pamietasz - jutro nie. Mlodym wilkom komentarze wydaja sie zbedne ale radze
wyrabiac sobie ten nawyk - bo to ma byc nawyk
- kazdy kod ma byc skomentowany. Po pierwsze przyda sie na
starosc(doslownie), po wtore przyda sie gdy przyjdzie pracowac zespolowo.

Refaktoring. Tak to juz jest ze gdy walczy sie z danym zagadnieniem to sie
czesto przerabia kod na wariata, dodaje jakies zmienne, proboje tak, a moze
tak, a jak jeszce nie chce dzialc....
Gdy wreszcie kod dziala tak jak tego oczekiwalismy wyglada jak pobojowisko.
Refaktoring to w uproszczeniu przepisanie kodu tak aby robil to samo ale aby
byl optymalny, czytelny i gotowy do zastoswania w przyszlosci - wiem, wiem
,nie chce sie jak o 4 nad ranem wkoncu uzyskalo sie efekt
ale warto zrobic to natychmiast a nie dopiero jak zabraknie ROMu ;)

Co do odwiecznej dyskusji o wyzszosci jednych swiat nad drugimi - c,pascal,
basic - jeden .... - albo sie umie myslec jak maszyna albo nie. Kazdy kto
chce nazwac sie programista powinien napisac choc jeden
program w assemblerze. Jeden starczy - kiedys programowanie w assemblerze
bylo trendy - dzis jest marnotrastwem czasu ale .... to uczy jak dziala
procesor i uczy jak dziala kompilator - nie jest istotne jak cos zapiszemy w
c lub bascomie - istotne jest czy aby na pewno kumamy co z tym zrobi
procesor.

W przypadku kolegi Adama bascom ma jedna zalete i jedna wade ktora jednak
tez jest zaleta i radze z nich skorzytac. Juz po 2-3 tygodniach mozna
zbudowac konkretne, dzilajace urzadzenia i to calkiem zlozone. To daje
motywacje do dalszej zabawy - to zaleta. Wada jest to ze bardzo ale to
bardzo ciezko uzyskac jakakolwiek wspolbieznosc - jesli nie chcemy aby nam
wyswietlacz nie zdychal podczas odbioru RC5 to trzeba sie napocic. Ale to
zaleta bo po pierwsze zmusza do myslenia a po wtore zmusza do zmiany
narzedzi na cos bardziej elastycznego ( c nie jest lepsze od bascoma - jest
ELASTYCZNIEJSZE) .Do swiadomej zmiany. I to jest zaleta tej wady ;)))

wojtek
www.neuron.com.pl
CMMS Maszyna
Golem OEE
Hall2007



Re: Początek zabawy z bascomem
W dniu 2011-02-08 20:10, Lelek@ pisze:
Quoted text here. Click to load it

C to świetny język, ale dla początkujących ma jedną irytującą wadę.
Łatwo jest w nim popełnić błędy nie wychwytywane przez kompilator, np
"=" za if, albo niechciany średnik za for. Mam wrażenie, że inne języki
tak nie mają.

Quoted text here. Click to load it

Jak dla mnie jest przepaść między obiektowością Javy a strukturalnym C
czasami lekko schodzącym do asemblera.

Quoted text here. Click to load it

Hehe, mi kiedyś krzywdę zrobiło numerowanie linii oraz goto w Basicu.
Przejście do procedur w Pascalu troszkę bolało.

Adam, moim zdaniem nauka programowania AVR w C jest bardziej
przyszłościowa, ale na początek może Bascom też będzie ok (osobiście nie
używałem), czasami szybsze uzyskanie efektu zachęca do dalszej zabawy i
chroni przed poddaniem się. Zależy, czy masz pod ręką kogoś, kto Ci może
pomóc.

Pozdrawiam!

Re: Początek zabawy z bascomem


Quoted text here. Click to load it
Ja bym radził zacząć pisać w assemblerze żeby zrozumieć później jak działają
wskaźniki  :-) Chociażby po to :-) I w ogóle co to jest ta pamięć i jakie są
jej rodzaję i czemu raz trzeba do Z ładować adres o połowę mniejszy niż do
ramu :-)


Re: Początek zabawy z bascomem
Mam wrażenie, że wywołem niepotrzebną dyskusją nad wyższością Świąt
Wielkanocnych nad Bożego Narodzenia...
A nie o to mi szło. Rzecz jest w takiej sytuacji :
Mamy kolegę, który jak sądzę jest ogólnie początkującym programistą (bo
gdyby np. znał C, to pewnie nie pytał by o Bascoma).

No i teraz tak - Bascom jest super. Naprawdę. Prostota i wygoda z jego
stosowania jest powalająca.
Tylko że w tym właśnie tkwi problem :)
Jak już wspomniałem, jak trzeba szybko napisać prosty program, to nie ma
lepszego narzędzia.
Potrzebujesz odczytać coś po 1wire - nie ma sprawy - na wszystko jest gotowa
komenda.
Wystarczy poszukać w helpie - i gotowe.

Tyle - że wcześniej czy później, okaże się , że trzeba wziąć inny procesor.
I co wtedy ? Szukać innego basica ?
No, na PIC to jeszcze się znajdzie. Ale na inne niekoniecznie.

Jednym słowiem - ucząc się Bascoma - nauczysz się tylko tego, co pozwoli
pisać proste programy tylko i wyłącznie na AVR.
Ucząc się C - otwierasz sobie drogę do programowania wszystkiego -
literalnie :)

Trudność nie polega na składni. Tego można się łatwo nauczyć.
Problem, to linkery, pliki naglówkowe i wszystkie te cudawianki, których nie
ma w Bascomie - bo w nim nie ma niczego - piszesz x linijek i gotowe.
Drugi problem, to że w Bascomie znajdziesz na wszystko gotowe polecenia - w
C już niekoniecznie.
Ale - gdybym dzisiaj stał przed takim wyborem - wybrałbym C.

Też zaczynałem od assemblera Z80, potem 6502 - to już człowiek pisał po
ciemku i zamkniętymi oczami.Ale dzisiaj myślę, że najlepiej umieć
pisać w C. Wtedy napiszesz wszystko i na każdą platformę - czy to
mikrokontroler duży czy mały, PC, Apple , Linux - wszystko.

A pisanie w Bascomie to przy tym jest jak zabawka - chociaż bywa bardzo
pożyteczna.


Re: Początek zabawy z bascomem
W dniu 2011-02-08 09:50 Adam napisał(a):

Quoted text here. Click to load it

Zła decyzja. Zacznij od C (avr-gcc).


--
Adam Dybkowski
               http://dybkowski.net /

We've slightly trimmed the long signature. Click to see the full one.
Re: Początek zabawy z bascomem
Quoted text here. Click to load it

Dziękuję Wam wszystkim za odpowiedzi. Co do C - warto się zastanowić, nie
wykluczam rychłej przesiadki. 10 lat temu, na studiach, nauczono mnie trochę
pascala. I naprawdę pasował mi ten język, był prosty i konkretny choć mało
elastyczny. Z mikrokontrolerami jednak nie miałem nigdy do czynienia. Na
razie moim celem jest wogóle uruchomienie jakiegokolwiek programu :)
Jeśli chodzi o programator - znalazłem coś takiego jak avrdude. Po
"wskazaniu" go w bascomie i wklepaniu w "Parameter" takiej linii:
"avrdude" -p m16 -P com1 -c jtag1 -U flash:w:"":a -U
flash:v:"":a
można wgrać program do atmegi16.
I tu pojawił się kolejny problem.... Wrzuciłem do procka coś takiego (z
mikrokonrolery.net):

Config Portb = &B11111111
Config Portd = &B11111100

Portb = &B11111111
Portd = &B11111111
Do
   If Pind.0 = 0 Then
     Portb.7 = 0
   End If
   If Pind.1 = 0 Then
     Portb.7 = 1
   End If
Loop

Prosty przerzutnik RS - 2 przyciski i dioda LED. Sam program działa dobrze,
ale z tym portem B jest coś nie tak - dioda czasem sama zapala się i gaśnie
w losowych momentach. Może ktoś podpowie o co chodzi? Jak ustawię inne porty
jako wyjście to nie ma problemu. Tylko B i to na wszystkich pinach. Na pewno
nie są to jakieś stany nieustalone na wejściach - są podciągnięte do + i
mają b krótkie przewody. O co tu chodzi? Może to przez te "fusebity" na
których się nie znam. Zresztą w bascomie nie znalazłem zakładki w której
możne by je modyfikować.
Moje pierwsze wrażenia - droga od postanowienia "nauczę się
mikrokontrolerów" do uruchomienia PIERWSZEGO programu okazała się
nadspodziewanie trudna. Wszystkie te programatory, programy pomocnicze
(avrdude), ustawienia, fusebity, oscylator - całe to "know how"
(przygotowanie procesora) to chyba najgorszy etap. Samo pisanie programu
podejrzewam będzie już znacznie przyjemniejsze.

Dziękuję, pozdrawiam
Adam



Re: Początek zabawy z bascomem
Quoted text here. Click to load it
strzelam calkiem z pamieci - na jednym porcie 4 bity robia za JTAGa - w
programtorze (!) , przy fusebitach gdzies powienienes miec opcje wylaczenia
JTAGa
Wylacz i bedzie OK ;)
wojtek
www.neuron.com.pl
CMMS Maszyna
Golem OEE
Hall2007



Re: Początek zabawy z bascomem

Quoted text here. Click to load it

JTAG w Mega16 jak i w M32 jest na porcie C, a autor wątku pisze że jest
problem z portem C.

--
Pozdrawiam
Piotrek


Re: Początek zabawy z bascomem
Quoted text here. Click to load it

Oczywiście miało być B

--
Pozdrawiam
Piotrek


Re: Początek zabawy z bascomem

Quoted text here. Click to load it

Na B jest SPI - może niech odłączy programator ;)
A tak poważnie to sprawdzenie schematu elektrycznego dwa razy... przez
dwie osoby - pamiętam jak z kolegą walczyliśmy programowo z zakłóceniami
od przekaźników, silnika, a się okazało, że procek nie był w ogóle
zasilany :D dostawał tylko zasilanie z pull-up-ów.

Mirek.

Re: Początek zabawy z bascomem
W dniu 2011-02-09 08:31 Adam napisał(a):

Quoted text here. Click to load it

Heh, niezły przykład na to, że C równie dobrze się nadaje do pisania
tego typu programów jak BASCOM. Ten sam kod zapisany w C wygląda w
bardzo zbliżony sposób (jedynie trzeba myśleć czasem o nazwach rejestrów
procesora):

#include <avr/io.h>
#include <compat/deprecated.h>

DDRB = 0b11111111;
DDRD = 0b11111100;

PORTB = 0b11111111;
PORTD = 0b11111111;

for (;;) {
    if ((PIND & _BV(0)) == 0)
        cbi(PORTB, 7);
    if ((PIND & _BV(1)) == 0)
        sbi(PORTB, 7);
}

Możliwe, że da się to samo wyrazić jeszcze bardziej przejrzyście ale mi
osobiście taki zapis odpowiada. :)

--
Adam Dybkowski
               http://dybkowski.net /

We've slightly trimmed the long signature. Click to see the full one.
Re: Początek zabawy z bascomem
Quoted text here. Click to load it

Głupie pytanie: taki zapis to jakaś konwencja AVR-GCC? AFAIK standard języka
C nie definiuje zapisu ciągów bitów i trzeba np. szesnastkowo.

--
Grzegorz Niemirowski
http://www.grzegorz.net /
We've slightly trimmed the long signature. Click to see the full one.
Re: Początek zabawy z bascomem

Quoted text here. Click to load it

AVRSTUDIO w assemblerze tak sie zapisuje

LDI r16,0b10101010


Re: Początek zabawy z bascomem
Quoted text here. Click to load it

TAk, nie wiem czy tylko AVRGCC czy GCC w ogole.

Tomek


Re: Początek zabawy z bascomem
Quoted text here. Click to load it

gcc extensions

Re: Początek zabawy z bascomem

Quoted text here. Click to load it
języka
Quoted text here. Click to load it

Nie tylko AVR-GCC, ale rzeczywiście jest to ponadstandardowe rozszerzenie
:)

e.


Re: Początek zabawy z bascomem
W dniu 2011-02-10 00:05 Grzegorz Niemirowski napisał(a):

Quoted text here. Click to load it

Rozszerzenie gcc. Podobnie jak m.in. bardzo wygodna konstrukcja:
switch (x) {
   case 0 ... 10:
zamiast pisanie 10 razy case z kolejnymi numerkami.
Inne całkiem ciekawe rozszerzenie to zapożyczona z C++ możliwość
definiowania zmiennych gdziekolwiek w kodzie a nie tylko na początku
funkcji. Możliwość używania rozszerzeń w gcc trzeba włączyć flagą
kompilatora, np.: -std=gnu99

--
Adam Dybkowski
               http://dybkowski.net /

We've slightly trimmed the long signature. Click to see the full one.

Site Timeline