To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
-
henryxxl
- -
- Posty: 7
- Rejestracja: 30 paź 2010, 17:39
- Lokalizacja: Dobryń duży
Post
autor: henryxxl » 30 paź 2010, 17:44
Witam.
Napisałem taki program
Kod: Zaznacz cały
$regfile = "m16def.dat"
$crystal = 1000000
Config Portd = Output
Portd = &B0000000
Do
Waitms 2000
Toggle Portd.5
Waitms 2000
Toggle Portd.5
Waitms 1500
Toggle Portd.5
Waitms 1500
Toggle Portd.5
Waitms 1000
Toggle Portd.5
Waitms 1000
Toggle Portd.5
Waitms 0
Toggle Portd.5
Waitms 0
Toggle Portd.5
Loop
End
W moim programie po kolei załączają się rożne tryby migania diody a ja chciałbym żeby wciskając raz switcha załączał się pierwszy tryb później po wciśnięciu załączał się drugi tryb i aż tak do czwartego trybu.
Pozdrawiam.
-
Ertew
- Użytkownik
- Posty: 1414
- Rejestracja: 03 lip 2005, 10:36
- Lokalizacja: Leszno
-
Kontakt:
Post
autor: Ertew » 30 paź 2010, 18:05
Może coś takiego:
Kod: Zaznacz cały
$regfile = "m16def.dat"
$crystal = 1000000
Dim tryb as Byte
Config Portd = Output
Portd = &B0000000
Do
If Pind.4 = 1 then incr tryb
If tryb = 5 then tryb = 0
If tryb = 0 then
Waitms 2000
Portd.5 = 0
Waitms 2000
End If
If tryb = 1 then
Waitms 2000
Toggle Portd.5
Waitms 2000
Toggle Portd.5
End If
If tryb = 2 then
Waitms 1500
Toggle Portd.5
Waitms 1500
Toggle Portd.5
End If
If tryb = 3 then
Waitms 1000
Toggle Portd.5
Waitms 1000
Toggle Portd.5
End If
Loop
End
-
henryxxl
- -
- Posty: 7
- Rejestracja: 30 paź 2010, 17:39
- Lokalizacja: Dobryń duży
Post
autor: henryxxl » 30 paź 2010, 18:26
U mnie nie działa.
-
keruseykaryu
Post
autor: keruseykaryu » 30 paź 2010, 19:13
A gdzie przerwania? Przecież masz tam takie łejty, że głowa boli.
-
kris74
- Użytkownik
- Posty: 270
- Rejestracja: 16 sie 2006, 17:36
- Lokalizacja: Gorzów Wielkopolski
Post
autor: kris74 » 30 paź 2010, 19:13
Bo port wejścia nie został skonfigurowany, masz tylko konfigurację portów wyjścia.
-
henryxxl
- -
- Posty: 7
- Rejestracja: 30 paź 2010, 17:39
- Lokalizacja: Dobryń duży
Post
autor: henryxxl » 30 paź 2010, 19:57
Kod: Zaznacz cały
$regfile = "m16def.dat"
$crystal = 1000000
Dim tryb as Byte
Config Portd = Output
Portd = &B0000000
Config Portd.4 = Input
Do
If Pind.4 = 1 then incr tryb
If tryb = 5 then tryb = 0
If tryb = 0 then
Waitms 2000
Portd.5 = 0
Waitms 2000
End If
If tryb = 1 then
Waitms 2000
Toggle Portd.5
Waitms 2000
Toggle Portd.5
End If
If tryb = 2 then
Waitms 1500
Toggle Portd.5
Waitms 1500
Toggle Portd.5
End If
If tryb = 3 then
Waitms 1000
Toggle Portd.5
Waitms 1000
Toggle Portd.5
End If
Loop
End
tak też nie działa
-
kris74
- Użytkownik
- Posty: 270
- Rejestracja: 16 sie 2006, 17:36
- Lokalizacja: Gorzów Wielkopolski
Post
autor: kris74 » 30 paź 2010, 20:26
Nie działa, bo jest konfiguracja jest zła. Najpierw ustawiasz globalnie cały port d jako wyjście a potem próbujesz ustawić jedno wyjście portu jako wejście, tak się nie da.
-
henryxxl
- -
- Posty: 7
- Rejestracja: 30 paź 2010, 17:39
- Lokalizacja: Dobryń duży
Post
autor: henryxxl » 30 paź 2010, 20:28
Może Pan poprawić program aby działał, jestem początkującym w avr i nie wiem jak.
-
matrix
- Użytkownik
- Posty: 1796
- Rejestracja: 15 mar 2006, 5:21
- Lokalizacja: Sochaczew
-
Kontakt:
Post
autor: matrix » 30 paź 2010, 20:50
ja bym poprosił wszystkich chętnych pomocy forumowiczów o zastosowanie metody kolegi keruseykaryu czyli tylko naprowadzić, bo jak podamy na tacy to nici z tego będą.
niech młody otworzy jakiś przykładowy program i zobaczy jak konfiguruje się porty.
wszak to są podstawy.
-
henryxxl
- -
- Posty: 7
- Rejestracja: 30 paź 2010, 17:39
- Lokalizacja: Dobryń duży
Post
autor: henryxxl » 30 paź 2010, 22:31
-
keruseykaryu
Post
autor: keruseykaryu » 30 paź 2010, 22:36
nie wystarczy dodać
Pytasz czy stwierdzasz fakt?
-
henryxxl
- -
- Posty: 7
- Rejestracja: 30 paź 2010, 17:39
- Lokalizacja: Dobryń duży
Post
autor: henryxxl » 30 paź 2010, 22:46
Pytam.
-
keruseykaryu
Post
autor: keruseykaryu » 30 paź 2010, 22:58
Pytam.
Odpowiedź brzmi: Nie.
-
henryxxl
- -
- Posty: 7
- Rejestracja: 30 paź 2010, 17:39
- Lokalizacja: Dobryń duży
Post
autor: henryxxl » 30 paź 2010, 23:00
Proszę mi pomóc siedzę nad Tym już pare godzin i nie wiem jak to zrobić.
-
keruseykaryu
Post
autor: keruseykaryu » 30 paź 2010, 23:06
Zatem poświęć jeszcze z 10 minut na przeczytanie o DDRD, PORTD i PIND. Co każdy z nich robi przy wejściach a co przy wyjściach. Elementarne podstawy są napisane w multum miejsc w przepastnej pajęczynce www.