Skocz do zawartości
Ikar

[Kurs] BASCOM - lekcja3 - zaczynamy programować

Pomocna odpowiedź

bartek1333 ogromnie dziękuję. Chciałem żeby działało inaczej niż Ty to napisałeś, ale rozumiem już 'obsługę' tych switchy. I sam poprawiłem, 2 switche, 2 diody - 1 switch wciśnięty jedna dioda świeci, drugi switch wciśnięty druga dioda świeci. (po puszczeniu danego switcha dana dioda gaśnie)

                        $regfile = "attiny2313.dat"                                 'typ proca
$crystal = 1000000                                          'taktowanie


Config Portb = Output                                       'port b  jako wyjścia
      Portb = &B11111111                                   'wszędzie stan spoczynkowy-1
Config Portd = Input                                        'pprt d jako wejścia
      Portd = &B1111111                                    'wszędzie stan spoczynkowy-1



      Do                                                   'petla neiskonczona

If Pind.1 = 0 Then                                         'jesli switch 1 wciśnięty to
Portb.3 = 0                                                 'dioda czerwona świeci
End If

If Pind.1 = 1 Then                                          'Jeśli Switch 1 Niewciśniety to
Portb.3 = 1                                                 'dioda czerwona nieświeci
End If

If Pind.2 = 0 Then                                          'jeśli switch 2 wciśnięty to
Portb.2 = 0                                                 'dioda żółta świeci
End If


If Pind.2 = 1 Then                                          'jesli switch 2 nie wciśnięty to
Portb.2 = 1                                                 'dioda żółta nie świeci
End If

      Loop                                                 'koniec petli

End

Sabre Do helpa nie zajrzałem, faktycznie, możliwe, ze tam byłoby to dobrze opisane 😳. Jak dla mnie to najprościej nauczyć się czegoś na przykładzie. W kursie przykład jest błędny dlatego nie zrozumiałem tego. bartek1333 podał mi przykład programu w którym układ chociaż reaguje na switcha, ale nie działa tak jak chciałem. I wydedukowałem z tego jak powinno się podłączać i zapisywać w programie switcha.

Sabre w tej chwili kod z Twojego postu wydaje mi się już oczywisty. 🙂

Bardzo Wam dziękuję za pomoc.

Udostępnij ten post


Link to post
Share on other sites
Jak dla mnie to najprościej nauczyć się czegoś na przykładzie.

Łatwo jest się nauczyć na przykładzie o ile jest on poprawny, a to co ty rodzisz to takie próby na chybił trafił, może się uda a może nie, ale spróbuję. No i tworzy się kilkanaście postów na temat, który mogłeś spokojnie znaleźć w helpie, albo na poprzednich stronach tego tematu.

Udostępnij ten post


Link to post
Share on other sites

Linux jak dla mnie ten program jest nie potrzebny pod samego switcha jak podłaczysz diode to jak wcisniesz swieci puścisz nie swieci. Nie zebym sie czepiał:PP ale lepsze by było zmieniać np stan wyjscia nacisniesz zmieni stan z 0 na 1 po ponownym znów zmieni z 1 na 0:) wiecej nauczy

Udostępnij ten post


Link to post
Share on other sites

Zbudowałem wszystko identycznie jak na tym kursie tylko dałem ATmegę8 zamiast Attiny2313.

Wszytko wygląda tak:

Program napisany jest tak jak w 3 lekcji, że przycisk 1 ma zapalać zieloną diodę, a 2 ma ją gasić. Ale nie wiem czemu dioda świeci się cały czas i prawie nie reaguje na przyciski.

Wszystkiego rodzaju migacze działają poprawnie ale z przyciskami jest problem.

Co jest nie tak???

Oczywiście zmieniłem na swój procek $regfile = "m8def.dat".

POMOCY

Udostępnij ten post


Link to post
Share on other sites

Za mało informacji, zamieść program, jakieś zdjęcie płytki od drugiej strony, podłączyłeś te diody i przyciski pod dobre piny?

Udostępnij ten post


Link to post
Share on other sites

Dzięki, że chcesz mi pomóc. Niewielu takich. 😋

Zamieszczam dodatkowe informacje 😃

Zdjęcia płytki od strony lutów:

Schemat całej płytki:

Kod programu:

$regfile = "m8def.dat"                      'typ procka 
$crystal = 1000000                          'taktowanie

config portb=input                          'port b  jako wejścia 
      portb=&B00000000                     'wszędzie stan spoczynkowy-0 
config portd=output                         'port d jako wyjścia 
      portd=&B0000000                      'wszędzie stan spoczynkowy-0 


do                                         'pętla nieskończona 

  if pinb.0=1 then                         'jeżeli przycisk 1 wciśnięty 
  toggle portd.0                           'zmień stan wyprowadzenia 
  endif                                    'koniec bloku warunkowego 

loop                                       'koniec pętli 
end

To już chyba wszytko. Jeśli wiesz co jest nie tak to proszę pomóż :]

Udostępnij ten post


Link to post
Share on other sites

Masz dobrze wlutowane uswitche (mają połączone po 2 piny). Nie jestem wstanie tego sprawdzić ze zdjęcia lutów.

Udostępnij ten post


Link to post
Share on other sites

barteq, miałem ten sam problem. Zajrzyj do tego tematu na 2 ostatnie strony, tam otrzymałem rady co i jak. Powinieneś zrozumieć o co chodzi. Mi pomogło. 🙂

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

barteq, ten program na dłuższa metę Ci nie będzie działać. Włącz rezystory podciągające na pinach od przycisków, to po pierwsze. Po drugie, zauważ, tak długo jak trzymasz wciśnięty przycisk, tak długo będą się w kółko zmieniały stany na Portd.0. Ja bym użył debounce albo ifa, w taki sposób:

If Pinb.0 = 1 Then
Waitms 25
If Pinb.0 = 1 Then
Toggle Portd.0
Do
Loop until pinb.0 = 0
End if
End if

Lecz pomimo wszystkiego co tu napisałem, układ powinien dawać oznaki jakiejś pracy, choćby losowe. Jeżeli nic się nie dzieje, to poszukaj błędu po stronie montażu.

[ Dodano: 12-08-2011, 22:09 ]

Jak coś pokopałem to pisać, bo już zmęczony trochę jestem 😉

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

mam podobny problem, ale to nie jest raczej wina montażu. Lutowałem wszystko z dbałością o każdy szczegół i sprawdzałem po kilka razy

Udostępnij ten post


Link to post
Share on other sites

barteq, taka drobna sugestia - węzły robi się tylko gdy łączymy conajmniej trzy przewody(zgubiłem słowo i nie wiem jak to inaczej nazwac).

Udostępnij ten post


Link to post
Share on other sites

Ikar, świetny kurs. Szkoda, że tak szybko się skończył 😋

Udostępnij ten post


Link to post
Share on other sites

Witam, sory za odkop ale przeczytałem każdą stronę i nie znam dalej odpowiedzi.

Mam pytanie czy jak wgram program jeden a za jakiś czas chcę wgrac drugi to ten stary jakoś trzeba usunąć czy po prostu podłączyć skompilować i wgrać nowy?

Udostępnij ten post


Link to post
Share on other sites

Nie trzeba nic usuwać. Zdaje się, że przed zapisem nowego programu Bascom czyści pamięć lub nadpisuje stary program nowymi danymi. W każdym razie nie trzeba nic kasować - wgrywasz po prostu nowy program.

Udostępnij ten post


Link to post
Share on other sites
Nie trzeba nic usuwać. Zdaje się, że przed zapisem nowego programu Bascom czyści pamięć lub nadpisuje stary program nowymi danymi. W każdym razie nie trzeba nic kasować - wgrywasz po prostu nowy program.

Zawsze trzeba kasować, choć zapewne jest to automatycznie wykonywane przez BASCOM, jako pierwszy krok programowania.

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...