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!
-
haterkmp
- Użytkownik
- Posty: 652
- Rejestracja: 08 sie 2008, 11:47
- Lokalizacja: Wałbrzych
Post
autor: haterkmp » 08 maja 2010, 8:49
szanowni Koledzy
czy to ma szanse działać?
Kod: Zaznacz cały
select case mux
case 0:
portb = &B00000001
cyfra = sekjed
case 1:
portb = &B00000010
cyfra =sekdzies
...
...
...
case 7:
portb = &B10000000
cyfra = goddzies
end select
shiftout portd.0 , portd.1 , cyfra , 8
czyli na porcie B wybieram siatkę a poprzez rejestr przesuwny chce wyświetlić odpowiednią cyfrę ze zmiennej. Proszę się nie śmiać jakby co

-
keruseykaryu
Post
autor: keruseykaryu » 08 maja 2010, 11:03
Łoj. Nie ma opcji 8 w Shiftout. Jest tylko 4.
-
haterkmp
- Użytkownik
- Posty: 652
- Rejestracja: 08 sie 2008, 11:47
- Lokalizacja: Wałbrzych
Post
autor: haterkmp » 08 maja 2010, 11:16
to tylko 4 bity danych mogę wysłać?
[ Dodano: 2010-05-08, 12:18 ]
na pewno tylko 4?
The number of bits may be specified. You may omit this info. In that case the number of bits of the element data type will be used.
The VARIABLE is a normal BASIC variable. And may be of any type except for BIT
[ Dodano: 2010-05-08, 12:20 ]
a czyli składnia by musiał być taka:
shiftout portd.1 , portd.1 , cyfra , [8]
-
keruseykaryu
Post
autor: keruseykaryu » 08 maja 2010, 13:10

Może przeczytałby kolega ten temat w helpie jeszcze raz?
Najpierw
option, potem może
bits i może też
delay! I żadne tam nawiasy kwadratowe nie są potrzebne. To jest BASCOM, nie C/C++. Zwróć uwagę na pominięte przez Ciebie słowo:
Bits
Optional number of bits to shift out.
Delay
Optional delay in uS. When you specify the delay, the number of bits must also be specified. When the default must be used you can also use NULL for the number of bits.
Teraz już wszystko wiadomo co te nawiasy tam robią?
-
haterkmp
- Użytkownik
- Posty: 652
- Rejestracja: 08 sie 2008, 11:47
- Lokalizacja: Wałbrzych
Post
autor: haterkmp » 08 maja 2010, 13:18
czyli w sumie mogę pominąć to wszystko i wpisać tylko
-
keruseykaryu
Post
autor: keruseykaryu » 08 maja 2010, 13:27
Nie. Nie możesz. Już trzeci raz piszę o
option. Może byś tak łaskawie zauważył ten parametr...

-
haterkmp
- Użytkownik
- Posty: 652
- Rejestracja: 08 sie 2008, 11:47
- Lokalizacja: Wałbrzych
Post
autor: haterkmp » 08 maja 2010, 13:47
a! chodzi Ci o to od którego bitu ma iść w rejestr i z jakim zboczem zegara

no no to tak zapomniałem o tym ale jeszcze nie wiem jaki rejestr będzie używany. myślę o 74HCT164 albo 4049.
[ Dodano: 2010-05-08, 14:50 ]
keruseykaryu, nie denerwuj sięna mnie bo ja w tej materii to ja zieleniak jestem
[ Dodano: 2010-05-08, 14:50 ]
a co do samej transmisji to może być?
-
keruseykaryu
Post
autor: keruseykaryu » 08 maja 2010, 18:02
haterkmp pisze:a co do samej transmisji to może być?
Napisz, uruchom, przetestuj. Nie wszystko co wydaje się dobre "na oko" nim jest. Ja bym to uprościł. Poszłoby to case w niebyt.
W C by było elegancko:
Tablica rtcnum[] zawiera dane do wyświetlania.
W BASCOM tak nie zrobisz, bo nie można stałych rotować. O ile pamiętam

-
haterkmp
- Użytkownik
- Posty: 652
- Rejestracja: 08 sie 2008, 11:47
- Lokalizacja: Wałbrzych
Post
autor: haterkmp » 09 maja 2010, 16:11
dzięki za pomoc w C... jednak nieprzydatna... chodzi mi o zasadę transmisji - kiedy mam wywalać na rejestr dane. po pobraniu zmiennej (cyfry) i siatki czy w innym momencie.
jeżeli ktoś moze pomóc to proszę o pomoc bo jak widzę wszyscy wielcy potrafią tylko pochwalić się swoją wiedzą o C...
-
keruseykaryu
Post
autor: keruseykaryu » 09 maja 2010, 17:30
Kto ci broni skorzystać z takiej wizji? Szybko wykombinujesz jak z tych dwóch linijek zrobić cztery linijki w BASCOM i pozbyć się tego case z 30 linijkami, co zeżre obfitą porcyjkę dostępnej flaszki.
haterkmp pisze:chodzi mi o zasadę transmisji
No to gdzie te informacje jak masz ten wyświetlacz podłączony? Gdzie te przepastne schematy? Nie ma, bo jak widzę wszyscy chcieliby im dać coś z niczego. Przykład? Proszę bardzo:
haterkmp pisze:na porcie B wybieram siatkę a poprzez rejestr przesuwny
Teraz mam napisać 4 kody pod cztery różne rejestry? A sobie wybierzesz. Łoj. Nie tędy droga.
-
haterkmp
- Użytkownik
- Posty: 652
- Rejestracja: 08 sie 2008, 11:47
- Lokalizacja: Wałbrzych
Post
autor: haterkmp » 10 maja 2010, 10:18
generalnie to bez różnicy jak jest podłączony wyświetlacz... z resztą to wynika z kodu że siatki są na porcie B. a chodzi mi o to w którym momencie program ma to wysłać do rejestru. a rejestr niech będzie przykładowo 74LS164 jak już typ jest przez ciebie wymagany...
[ Dodano: 2010-05-10, 14:19 ]
czyli dla takiego rejestru składnia będzie taka:
ale dalej mi chodzi o to czy wysłanie do rejestru ma być w tym miejscu czyli po zakończeniu wyboru siatki i wpisania do zmiennej "cyfra" wartości czy kiedy indziej.
select case jest inkrementowany z każdym przerwaniem od przepełnienia timera1 co jakieś 4ms.
[ Dodano: 2010-05-10, 14:22 ]
aha i nie proszę o kompletny kod tylko o poradę w którym miejscu umieścić tą transmisję.
-
keruseykaryu
Post
autor: keruseykaryu » 10 maja 2010, 17:29
haterkmp pisze:a rejestr niech będzie przykładowo 74LS164 jak już typ jest przez ciebie wymagany...
I już mi się ten rejestr nie podoba, bo nie ma buforowania. Możesz uświadczyć duchy na wyświetlaczu, jak najpierw wybierzesz siatkę, a potem ciurkiem polecą bity do rejestru.
Rozczłonkowałbym Ci projekt do góry nogami: dwa rejestry połączone w szereg z przepisywaniem CD4094. Jeden steruje siatki, drugi anody. I nie masz problemu, co wcześniej załączyć bo oba sygnały pojawiają się
jednoczenie, razem ze zboczem na STROBE. Masz tylko trzy linie sterujące, a składać dwa bajty w jeden word (16bit) chyba potrafisz.
-
haterkmp
- Użytkownik
- Posty: 652
- Rejestracja: 08 sie 2008, 11:47
- Lokalizacja: Wałbrzych
Post
autor: haterkmp » 10 maja 2010, 17:47
właśnie też myślę o tym rejestrze. a STROBE mam dać po ostatnim bicie. mniej więcej:
set portx.x
reset portx.x
i następna wartość.
czyli do zmiennej 16 bitowej wrzucam najpierw np. numer siatki, potem przesuwam zmienną o 8 w lewo i wpisuję do niej zmienną przedstawiającą cyfrę i puszczam STROBE i cała zabwa od nowa tak?
tylko dać to właśnie gdzie? przy select case czy gdzieś w pętli a może gdzieś na obsłudze przerwania?
a może zamiast rejestru w postaci 4049 dać MAX6921? mam takiego więc podpasowałby idealnie.
-
keruseykaryu
Post
autor: keruseykaryu » 10 maja 2010, 17:52
haterkmp pisze:tylko dać to właśnie gdzie?
Do przerwania. Mniej zmartwień.
haterkmp pisze:a może zamiast rejestru w postaci 4049 dać MAX6921?
Jak masz MAXy to użyj. Przynajmniej konwerterów napięć nie trzeba.