Skocz do zawartości

[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.

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.

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

  • 2 tygodnie później...

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

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

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óż :]

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

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

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

  • 3 miesiące później...
  • 3 miesiące później...

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?

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.

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.

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...