Problem z ATMEGA8L


Witam.
Zwracam się z prośbą o pomoc.
Jestem nowicjuszem z zakresu programowania procesorów AVR.
Zakupiłem płytkę testową ZL2AVR dla procesorów ATmega8
Po skrupulatnym lutowaniu i sprawdzeniu połączeń postanowiłem rozpocząć
programowanie procesora (Programator STK200/300) i tu problem
Bascom rozpoznaje typ procesora, mogę zmieniać fuse bity, program jest
wgrtywany i weryfikowany poprawnie , ale po zaprogramowaniu wychodzą jakieś
głupoty wyświetlacz lcd nie działa wyjscie które ma być aktywne po przyciśnięciu
przycisku warjuje.
Sprawdziłem wiele razy ustawienia w Bascomie, fuse bity połączenia na płytce.
Może prosesor jest uszkodzony .
Proszę bardzo o pomoc ,jakąś wskazówkę .
Wczaśniej programowałem w Bascom 8051 tam nie było takich problemów
Pozdrawiam.
ps
dodaję program testowy może tu jest jakieś rozwiązanie.

$regfile = "m8def.dat"
$crystal = 8000000
 
Config Lcd = 16 * 2
Config Portb = Output
Config Portd = Input
 
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.5 , Rs = Portc.4
Sw Alias Pind.4
Sw1 Alias Pind.3
 
Cls
Cursor Off
 
Set Sw
Set Sw1
 
Set Portb.0
 
Do
Home
 
If Sw = 0 Then
 Waitms 50
 
Set Portb.0
End If
 
 
   If Sw1 = 0 Then
 Waitms 30
 
Reset Portb.0
End If
 
 
Locate 1 , 1
Lcd "to ja atmega8"
 
 
Loop




Portret użytkownika mirley

Re: LCD

Prawdopodobnie temu to nie działa że próbujesz wbijac dane do LCD bezpośrednio w do loop. LCD nie ma szans tego wyrobic a jak nawet się to uda to bedziesz widział tylko smugę na LCD.

Wywal LCD z do loop i daj te dwa polecenia przed do loop

Locate 1 , 1
Lcd "to ja atmega8"

Wyreguluj kontrast potencjometrem, powinien byc przy LCD

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika matrix

Re: LCD

mirley wrote:
Prawdopodobnie temu to nie działa że próbujesz wbijac dane do LCD bezpośrednio w do loop.

tu się z Tobą Mireczku nie zgodzę. zobacz na kod w tym miejscu:
Locate 1 , 1
Lcd "to ja atmega8"
 
Loop

kolega cały czas odwołuje się do konkretnej lokalizacji na wyświetlaczu, więc to musialo by dzialać. sam robiłem tak wiele razy chcąc aktualizować coś na lcd bez ruszania czegokolwiek innego.
to jest nic innego jak nadpisanie danych na wyświetlaczu.

problemem może być konfiguracja

config lcdpin

może być w niewłaściwej kolejności. jak pierwszy raz podpiąłem u siebie lcd i skonfigurowałem lcdpin dowolnie to też nie mogłem go bujnąć.

Portret użytkownika mirley

RE : M8

Nie chodzi mi o to że powstanie: "to ja atmega8to ja atmega8to ja atmega8to ja atmega8to ja atmega8" tylko o to że wyswietlacz LCD nie wyświetli nic, bo wbijasz do niego dane z max częstotliwością jaką procesor daje radę i nie ma żadnego opóźnienia. Zrobiłem tak kiedyś i nic nie zdążyłem na LCD zobaczyć

Do
Home
 
Locate 1 , 1
Lcd "to ja atmega8"
 
Loop

Wywal wszystko z do loop i napisz to tak:

Locate 1 , 1
Lcd "to ja atmega8"
do
loop

aby sprawdzic czy LCD wogóle działa, a potem będziemy się zastanawiać co dalej

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika martineztel

kolejna sprawa

Witam.
Poradziłem sobie już z wyświetlaczem. Po n=krotnej zaminanie przewodow , konfiguracji,w końcu
pojawił się oczekiwany napis.
Ale mam jeszcze inny problem chodzi o właściwą konfiguracje portów.
Chcę aby np port b.0 był wyjściem, stosuje polecenie

config pinb.0=output

i po wgraniu w procesor i uruchomieniu cały czas ten pin jest w stanie reset ( aktywna dioda świecąca)
Pin ten nie reaguje na zmiany typu
set pinb.0
reset pin.0

Proszę o pomoc i wyrozumiałość kolegów strony.
Pozdrawiam

Portret użytkownika sashir

do konfiguracji portu zawsze

do konfiguracji portu zawsze używa się portX, np.

config PORTB.0 = output

jeżeli ustawiamy stan jakiegoś portu także używamy portX, np.
set PORTB.1
reset PORTB.1

jeżeli odczytujemy stan portu używamy pinX, np.
config PORTB.0 = 0
dim a as bit
a = PINB.0

-

nie lubię placków

Portret użytkownika mirley

Re: Piny

na końcówce będącej wejściem nie da się ustawić stanu logicznego w taki sposób aby coś wysterować, bo tranzystory wyjściowe wtedy nie działają. Można tylko czytać stan logiczny

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika martineztel

wyjaśnienie

Witam. Dziękuje za pomoc,sugestie pomogły.
Proszę o wyjaśnienie mi jeszcze tego zapisu

Config Portb = &B11111000 : Portb = &B11111111

port b jest skonfigurowany jako linia(0-2) wejście, a linia(3-7) wyjścia,
a ten zapis po dwukropku też się odnośi do portu b, ale jest skonfigurowany jako wszystkie wyjścia ?!

Portret użytkownika matrix

Re: wyjaśnienie

nie ten zapis ustawia pullup'y na pinach procka, czyli podciąga do plusa zasilania.