Bascom AVR i przesiadka z '2313 na Atmega8

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
M@ciej
Użytkownik
Posty: 736
Rejestracja: 13 sie 2005, 21:38
Lokalizacja: Szczecin

Bascom AVR i przesiadka z '2313 na Atmega8

Post autor: M@ciej » 12 kwie 2007, 17:16

Witam wszystkich.

Mam małe pytanko: do tej pory dziergałem w Bascom AVR na AT90S2313, teraz chcę się przesiąść na ATmega8. Czy programowanie tego mikrokontrolera sporo różni się od '2313? Przeglądając internet na ten temat naczytałem się o ustawieniach fuse-bitów i innych rzeczach,ale żadnych konkretów. Czy na ATmega8 można zrealizować w prosty sposób programy z mikroprocesorowej oślej łączki?

Pozdrawiam serdecznie wszystkich :)

Awatar użytkownika
robson
Użytkownik
Posty: 226
Rejestracja: 22 sty 2006, 19:51
Lokalizacja: S.M.
Kontakt:

Post autor: robson » 12 kwie 2007, 17:42

M@ciej pisze:Czy na ATmega8 można zrealizować w prosty sposób programy z mikroprocesorowej oślej łączki?
Można, musisz jednak pamiętać o zmianie nazw portów, i poszczególnych rejestrów.
Generalnie BASCOM w dużej ilości rzeczy Cię wyręcza, ale to Ty musisz mu powiedzieć, których portów będziesz urzywał i musisz wiedzieć, co do nich masz podłączone. Pozatym ATMEGA8, ma dużo większy potencjał i dużo więcej funkcji, a co za tym idzie, możesz stworzyć bardziej rozbudowane urządzenia. Masz więcej pamięci FLASH, więcej trybów uśpienia, więcej portów, którymi musisz się odpowiednio posługiwać. Bezcenne są noty katalogowe:)

Awatar użytkownika
M@ciej
Użytkownik
Posty: 736
Rejestracja: 13 sie 2005, 21:38
Lokalizacja: Szczecin

Post autor: M@ciej » 13 kwie 2007, 21:20

Co drzemie w Atmega8, to się domyślam.Niestety nota katalogowa nie odpowiedziała mi na szereg nurtujących mnie pytań. Jak na razie mam kłopot z konfiguracją portów. Piszę programy,jak pokazywał p. Piotr w Oślej łączce,ale układ zupełnie inaczej (dziwnie) się zachowuje. Przeciezs Atmega ma PortB i PortD, jak '2313?Być może konfiguruję porty jako 7-bitowe,a one są 8-bitowe...sam nie wiem.

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

Post autor: marcing » 13 kwie 2007, 21:25

M@ciej - porty są "niekompletne". Konfiguracja przebiega tak samo jak w 2313, ale musisz pamiętać o różnicach... no i w BASCOM-ie odpowiednio ustawić typ układu (najlepiej w kodzie, dyrektywą $regfile).
Oczywiście kompilator dobrze jest mieć w jakiejś nowszej wersji...

Awatar użytkownika
M@ciej
Użytkownik
Posty: 736
Rejestracja: 13 sie 2005, 21:38
Lokalizacja: Szczecin

Post autor: M@ciej » 14 kwie 2007, 11:01

Kompilator (jak i interpreter) mam w wersjach 1.11.8.3. Ponoć ta wersja ma ograniczenia kodu do 4 kB,więc wykorzystam połowę pamięci Flash układu.

No właśnie,co z tymi różnicami?Na czym one polegają?Czy instrukcji "Config" przypisać tyle binarnych znaków, ile jest wyprowadzeń w nocie katalogowej? Wiem, że reszta bitów jest zużyta na inne funkcje niż I/O, ale ja będę korzystał jeszcze z I2C i przerwań oprócz tego.

Jak mi się uda wszystko zrozumieć i zaprogramować, może przeczytacie kolejny artykuł o zegarze Nixie w EdW,tym razem z termometrem. Układ już jest, tylko borykam się z okiełznaniem Atmegi8 :)

Co do dyrektywy $regfile, mam zastosowaną następującą: $regfile="m8def.dat".

Pozdrawiam wszystkich :)

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

Post autor: marcing » 14 kwie 2007, 11:53

M@ciej pisze:Piszę programy,jak pokazywał p. Piotr w Oślej łączce,ale układ zupełnie inaczej (dziwnie) się zachowuje. Przeciezs Atmega ma PortB i PortD, jak '2313?Być może konfiguruję porty jako 7-bitowe,a one są 8-bitowe...sam nie wiem.
Dziwne zachowanie może wynikać z tego, że mega8 ma domyślnie włączony wewnętrzny zegar 1MHz - i z taką częstotliwością pracuje...
By to zmienić, należy odpowiednio ustawić FuseBits...

Każdy rejestr konfiguracji portów jest ośmiobitowy - jednak nie wszystkie bity muszą być wykorzystane. Jeżeli port ma sześć pinów, to dwa bity bez znaczenia (najstarsze najczęściej) wpisujesz jako "0" - zgodnie z zaleceniem producenta układu.
M@ciej pisze:Co do dyrektywy $regfile, mam zastosowaną następującą: $regfile="m8def.dat".
Wpis jest poprawny dla mega8 :)

Co do wersji demo BASCOM-a - te 4kB na początek w zupełności wystarczą... a jeśli będzie Tobie mało, to i tak do tego czasu z pewnością opanujesz asembler lub C - a tu są dostępne kompilatory darmowe, i bez ograniczeń.

Awatar użytkownika
M@ciej
Użytkownik
Posty: 736
Rejestracja: 13 sie 2005, 21:38
Lokalizacja: Szczecin

Post autor: M@ciej » 15 kwie 2007, 16:19

Co do wewnętrznego zegara, to mam nadzieje,ze uda sie ustawić przynajmniej 4 MHz, bo piny XTAL1 i XTAL2 mam już zajęte. Nie wiem natomiast,jak ustawić Fusy,nigdy tego nie robiłem. Może jakaś podpowiedź,przynajmniej gdzie tego szukać?

Czy dyrektywa $crystal dotyczy tylko rezonatorów zewnętrznych?

Pozdrawiam :)

ZbeeGin

Post autor: ZbeeGin » 15 kwie 2007, 19:01

M@ciej pisze:Nie wiem natomiast,jak ustawić Fusy,nigdy tego nie robiłem. Może jakaś podpowiedź,przynajmniej gdzie tego szukać?
Wszystkie fuse bity ustawiasz w oknie programatora - można go wywołać wydając polecenie "Manual Program". Wystarczy przełączyć się na zakładkę "Lock and Fuse Bits" i nacisnąć "Refresh" by odczytać bieżący ich stan. Potem już możesz dostosować ich stan do własnych potrzeb.
M@ciej pisze:Czy dyrektywa $crystal dotyczy tylko rezonatorów zewnętrznych?
Dyrektywa ta dotyczy wszelkich modeli taktowania procesora: kwarc, rezonator ceramiczny, wew./zew. generator RC, sygnał zewnętrzny. Informuje kompilator o częstotliwości z jaką taktowany jest procesor by ten mógł wyliczyć czasy trwania opóźnień programowych lub wartość wpisywaną do licznika generatora transmisji szeregowej, by ta odbywała się z właściwą prędkością.
Przypomnę tylko, że wartość ta jest podawana w Hz - 1MHz=1000000Hz.

ODPOWIEDZ