Pytanko i problem z Atmega 8535

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
vcd_a
-
Posty: 17
Rejestracja: 11 sie 2006, 21:23
Lokalizacja: Olsztyn
Kontakt:

Pytanko i problem z Atmega 8535

Post autor: vcd_a » 11 sie 2006, 21:25

Witam, właśnie kupiłem sobie Atmege 8535 i chciałbym się nia trochę pobawić, zrobiłem już programator ISP i Bascom wykrywa uC. Jednak mam kilka pytań co do samego odpalenia uC czy zasilanie musze podawać tylko do wejścia VCC czy też do AVCC, tak samo z masą czy tylko do GND czy też do AGND. Chciałem jeszcze napisać prosty programik na sam początek z diodką, że jak wcisne przycisk to się zapali diodka, napisałęm taki program:

Kod: Zaznacz cały

Config Portc = &B11111111
Portc = &11110111

Config Portd = &B00000000
Portd = &B10111111



Do
If Pind.6 = 1 Then
Waitms 50
Pinc.3 = 1
End If

Loop
End
Jednak nie wiem czemu, ale Bascom przy kompilacji wyrzuca kupe błędów, czy możecie mi powiedzieć gdzie są te błędy, a i jeszcze czy do 8535 potrzebuje zewnętrzny kwarc?, pozdrawiam Krzysiek

Awatar użytkownika
marcing
Użytkownik
Posty: 868
Rejestracja: 14 lut 2006, 14:13
Lokalizacja: z pociągu...
Kontakt:

Post autor: marcing » 12 sie 2006, 5:59

Witam nowego Użytkownika na Forum :)

I odpowiadam:

1. Zasilanie musisz podpiąć do obu obwodów (VCC i AVCC, oraz GND i AGND).

2. Program rzeczywiście zawiera błędy. Rozumiem, że do PD6 masz podpięty przycisk? Pierwszym błędem jest jednak załączanie przycisku od +zasilania - lepiej zwierać końcówkę portu do masy. Diodę także należało by "przepiąć" - tu z kolei podłączyć ją do +zasilania, i załączać stanem niskim.
Nie masz też obwodu gaszącego diodę - zapalisz ją "na stałe" - ale może o to chodzi?
Kolejna sprawa - próbujesz załączyć diodę podłączoną do PC3, ale zapisujesz do rejestru PinC.3 - jest to błąd, powinieneś zapisać do PortC.3 (rejestry w AVR do obsługi portów są trzy - DDRx, PORTx i PINx. Pierwszy odpowiada za "kierunek" działania portu, drugi za stan na wyjściu, z trzeciego czytasz aktualną wartość na porcie)

Kod: Zaznacz cały

Config Portc = &B11111111
Portc = &11111111

Config Portd = &B11011111
Portd = &B11111111

Do
If Pind.6 = 0 Then ' przycisk podpięty od strony GND, włączone wewnętrzne podciąganie portu do VCC
Waitms 50
PortC.3 = 0 ' poprawione - załączanie diody podłączonej do +zasilania 
End If

Loop
End
To tylko prosta poprawka - program nie jest idealny, ale o szóstej rano nie myślę już zbyt dobrze ;)

Pozdrawiam!

Ps. z powodu drobnych problemów z forum - post "wklejony" dopiero godzinę później...

Awatar użytkownika
vcd_a
-
Posty: 17
Rejestracja: 11 sie 2006, 21:23
Lokalizacja: Olsztyn
Kontakt:

Post autor: vcd_a » 12 sie 2006, 12:31

Witam, dziękuję za odpowiedź, niestety dalej wywala mi błąd w 2 linijce kodu: Source variable does no match the target variable, nie mam pojęcia czemu wywala ten błąd, a i jeszcze o co chodzi z tymi przyciskami zwieranymi do masy?, pozdrawiam serdecznie Krzysiek

ZbeeGin

Post autor: ZbeeGin » 12 sie 2006, 17:27

marcing pisze:Portc = &11111111
Nie dziwię się, że Ci błąd wyskakuje. Zapomniałeś o czymś:

Portc = &B11111111

Daymian
-
Posty: 82
Rejestracja: 25 lip 2006, 21:23
Lokalizacja: Bochnia
Kontakt:

Post autor: Daymian » 12 sie 2006, 18:23

Mikroprocesory AVR posiadaja wewnętrzne rezystory podciągające wejście do plusa zasilania co umożliwia niestosowanie zewnętrznych rezystorów podciągających. Wyjścia tych mikroprocesorów mają większą wydajnść prądową w stanie niskim dlatego lepiej włanczać coś stanem niskim a nie wysokim...poprostu prosto mówiąc będzie sie mniej grzało. :lol:
Odsyłam do Data Sheets ATMega8535 - tam wszystko pisze. :grin:

Awatar użytkownika
vcd_a
-
Posty: 17
Rejestracja: 11 sie 2006, 21:23
Lokalizacja: Olsztyn
Kontakt:

Post autor: vcd_a » 12 sie 2006, 23:14

Witam ponownie, programik już mam, niestety dioda dalej nie świeci, wydaję coś mi się, że Bascom wogóle nie programuje uC, bo nie pokazuje "ramki z paskiem postepu" podczas zapisywanie do flasha, a przy włączaniu pokazuje komunikat: Selected chip and target do not match ATmega 8535 <>AT90S8535., nie wiecie o co może chodzić pozdrawiam Krzysiek

Awatar użytkownika
gazmajster
-
Posty: 30
Rejestracja: 01 sie 2006, 22:13
Lokalizacja: Z Zagłębia Drewna
Kontakt:

Post autor: gazmajster » 12 sie 2006, 23:31

A czy na początku programu napisałeś

$regfile="M8535def.dat"
aby poinformować kompilator o typie zastosowanego procesora :?:

Awatar użytkownika
vcd_a
-
Posty: 17
Rejestracja: 11 sie 2006, 21:23
Lokalizacja: Olsztyn
Kontakt:

Post autor: vcd_a » 12 sie 2006, 23:40

Dzięki za szybką odpowiedź, wpisałem tę linijkę, ale niestety błąd wyskakuje znowu, pozdrawiam Krzysiek

P.S.
Jaki mam wybrać chip? , bo probuję różne i błąd dalej wyskakuje, czy to może być spalony uC czy on po prostu się nie programuje, pozd

Awatar użytkownika
gazmajster
-
Posty: 30
Rejestracja: 01 sie 2006, 22:13
Lokalizacja: Z Zagłębia Drewna
Kontakt:

Post autor: gazmajster » 12 sie 2006, 23:56

Ten program dzialal na symulatorze

$regfile = "m8535.dat"
Config Portc = &B11111111
Portc = &B11111111
Config Portd = &B11011111
Portd = &B11111111

Do
If Pind.6 = 0 Then' przycisk podpięty od strony GND, włączone wewnętrzne podciąganie portu do VCC
Waitms 50
Portc.3 = 0 ' poprawione - załączanie diody podłączonej do +zasilania
Else
Portc.3 = 1
End If

Loop
End
I na żywo też powinien działać.
A co do programatora to sprawdz na innej kostce najlepiej 90s2313
Pozdrawiam

Awatar użytkownika
vcd_a
-
Posty: 17
Rejestracja: 11 sie 2006, 21:23
Lokalizacja: Olsztyn
Kontakt:

Post autor: vcd_a » 13 sie 2006, 0:31

Problem rozwiązałem, wywaliłem dyrektywe z początku i zamiast w okienku programowania klikać ikonkę Auto Program, kliknąłem w Chip > Auto Program i zaczął programować, nie wiem w czym leżał błąd, ale działa, wielkie dzięki za odpowiedzi, pozdrawiam Krzysiek

ODPOWIEDZ