kilka pytań na temat ogólny (bascom avr)

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!
ODPOWIEDZ
Awatar użytkownika
matrix
Użytkownik
Posty: 1796
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

kilka pytań na temat ogólny (bascom avr)

Post autor: matrix » 04 lis 2009, 15:46

mam kilka pytań odnośnie różnych trawiących mnie problemów w bascom avr.

1 - czy można w jakiś sposób odwrócić wyświetlanie danych na wyświetlaczu?

weźmy tradycyjny wyswietlacz 2x16 znaków podświetlany na zielono. zwykle podświetlanie jest zielone a wszystko co chcemy wyświetklić gasi wyświetlacz w danym miejscu. czy mozna to odwrócić tak, że wyświetlacz będzie ciemny a to co chcemy napisać będzie na jasno?

2 - jak działa polecenie servo?
czy jak wpiszę jakąś wartość aby serwo ustawiło się pod jakimś kątem to czy jak wpiszę następną wartość dla tego samego serwa to ustawi się dla danej wartości czy wartości się zsumują?

3 - jak wykryć zmianę stanu na jakimś pinie? wiem jak wykryć zero, wiem jak wykryć 1, ale jak wykryć że stan się zmienił z jednego na drugi?

mam jeszcze kilka pytań, ale postaram się najpierw sam znaleźć odpowiedź. jeśli mi się nie uda to zapytam tu.

Awatar użytkownika
c4r0
Moderator
Posty: 2150
Rejestracja: 13 kwie 2004, 19:56
Lokalizacja: z lasu
Kontakt:

Post autor: c4r0 » 04 lis 2009, 17:32

1. Chyba musisz samemu zaprojektować znaki które będą negatywem znaków oryginalnych a potem używać ich w jakimś trybie "graficznym" wyświetlacza. Ale wtedy i tak nie będzie tak że wszystko jest ciemne a piksele się świecą - to wynika z budowy wyświetlacza. Żeby uzyskać taki efekt trzeba by przekręcić filtry polaryzacyjne które są w wyświetlaczu.

3. Do tego służą przerwania.

Awatar użytkownika
matrix
Użytkownik
Posty: 1796
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

Post autor: matrix » 04 lis 2009, 17:36

c4r0 pisze:3. Do tego służą przerwania.
ale ja chcę wykryć zmianę stanu zwykłego pinu. powiedzmy mam 3 piny i aliasuje je sobie jako:
A
B
C
stany na tych pinach zmieniają mi się w takt kodu BCD, czyli:
A B C
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1

i jak teraz wykryc że na tych pinach stan zmienił się na przeciwny?
nie można byłoby napisać:

Kod: Zaznacz cały

if A <> A then

instrukcje do wykonania

end if

Awatar użytkownika
Wesker
-
Posty: 27
Rejestracja: 01 lut 2006, 10:33
Lokalizacja: Leżajsk

Post autor: Wesker » 04 lis 2009, 18:02

2. Servo ustawi się na wartość odpowiadającą liczbie (w praktyce ta liczba odpowiada szerokości impulsu) nie ma żadnego sumowania.
3. Są dwie opcje:
- zapamiętanie stanu poprzedniego i po zmianie update
- wykorzystanie przerwania od zmiany stanu

Awatar użytkownika
matrix
Użytkownik
Posty: 1796
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

Post autor: matrix » 04 lis 2009, 18:06

Wesker pisze:3. Są dwie opcje:
- zapamiętanie stanu poprzedniego i po zmianie update
- wykorzystanie przerwania od zmiany stanu
jakis mały przykład?

kolejne pytanie się zrodziło. w bascom 8051 w symulacji dzialalo polecenie

Kod: Zaznacz cały

Deflcdchar
dlaczego nie działa w bascom avr w symulacji?
nie wyświetla wcześniej zdefiniowanych znaków. zastosowałem po

Kod: Zaznacz cały

deflcdchar
polecenie

Awatar użytkownika
Wesker
-
Posty: 27
Rejestracja: 01 lut 2006, 10:33
Lokalizacja: Leżajsk

Post autor: Wesker » 05 lis 2009, 17:22

Przykład zapamiętania poprzedniego stanu:

Kod: Zaznacz cały

Dim A1 as Bit
'...
A1=A
'...
Do
'...
If A1<>A Then
A1=A
'do zrobienia
End If
'...
Loop
Jeśli chodzi o przerwanie od zmiany stanu to dotyczy nowszych atmeg i attiny np. używałem tego w attiny85.

U mnie deflcdchar działa w symulacji i mogę to sprawdzić bez problemu.

Awatar użytkownika
matrix
Użytkownik
Posty: 1796
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

Post autor: matrix » 05 lis 2009, 17:32

Wesker pisze:U mnie deflcdchar działa w symulacji i mogę to sprawdzić bez problemu.
u mnie jiuż też. problem tkwił w tym że chciałem w symulacji sprawdzić GET ADC i ta funkcja blokowała mi mozliwość wyświetlania deflcd

ODPOWIEDZ