Skocz do zawartości

Linux, avr, kwarc, zewnętrzna pamięć


Turboasm

Pomocna odpowiedź

Mam kilka pytań na które nie znalazłem jeszcze odpowiedzi a dokładnie: ( język C )

1. Co muszę zainstalowac aby móc kompilować programy dla avr pod linuksem ??

2. Pod które piny muszę podłączyć kwarc i czemu akurat pod te.

3. Czy w programie muszę coś więcej podawać oprócz

#define F_CPU  <częstotliwość>L 

??

4. Czy zewnętrzną pamięć EEPROM mogę podłączyć pod obojętnie które piny czy są jakieś specjalne i jak

zapisać dane do tej pamięci ??

Link do komentarza
Share on other sites

1Niemam linuxa....

2Każdy procek ma dwa piny oznaczone XTAL1 oraz XTAL2 do tych właśnie pinów podłącza się kwarc z kondensatorami 33pF

3Programowanie to nie tylko podanie jednej instrukcji.... ....żeby powstał program trzeba całego szeregu instrukcji które program przekompiluje i wyśle do uC

4Jeszcze nie wiem 😃

Pozdrawiam

Link do komentarza
Share on other sites

co do pytania 3 to chodziło mi o to czy coś jeszcze oprócz tego zapisu potrzeba żeby kożystać z dołączonego kwarcu ( z jego częstotliwości )

Link do komentarza
Share on other sites

Co muszę zainstalowac aby móc kompilować programy dla avr pod linuksem ??

W internecie jest wiele na ten temat, np:

http://paul.graysonfamily.org/thoughts/avrlinux/

co do pytania 3 to chodziło mi o to czy coś jeszcze oprócz tego zapisu potrzeba żeby kożystać z dołączonego kwarcu ( z jego częstotliwości )

Trzeba przeprogramować (z poziomu programatora) odpowiednie tzw. fuse bity (patrz dokumentacja uC) , nowe Atmega i Attiny pracują z wewnętrznym oscylatorem o częstotliwości 1MHz.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Korzystając z jakiegoś wygodnego programu....

Podaj który to AVR i jaka jest częstotliwość dołączonego kwarcu, to ja napisze jak i co

Link do komentarza
Share on other sites

1. Należy przyłączyć kwarc jak na rysunku poniżej

kwarc.gif

2. Pobrać z internetu program do obsługi programatora np. "TwinAVR" (wydał mi się najwygodniejszy)

http://www.rowalt.de/mc/avr/avrtools/twinavr.zip

Program nie posiada instalatora. Jeśli używasz win9x lub ME wystarczy rozpakować plik twinavr.zip , natomiast jeśli działasz na Win2000/XP należy dodatkowo zamontować i uruchomić sterownik dający dostęp programowi do portu drukarki. Pliki sterownika znajdują się w podkatalogu "NtDriver". Trzeba skopiować plik "UserPort.sys" do windir\system32\drivers (windir - katalog gdzie zamontowano windows), a następnie uruchomić program "UserPort.exe". Pojawi się okienko dialogowe jak poniżej, w którym należy wcisnąć przycisk "Start'

userport.jpg

3. Uruchomić program "twinavr.exe", przy pierwszym uruchomieniu TwinAVR pojawi się okienko "Settings" jak poniżej

settings.jpg

W polu "Programmer hardware" zaznaczyć należy opcje "Kanda dongle" ( dla STK200),
a w polu LPT - użyty port drukarki (z przyłączonym programatorem).

Następnie klik w przycisk "OK" i okienko "Settings" znika, pozostaje widoczne główne okienko programu jak na obrazku poniżej.

avrclock.jpg

W polu AVR clock proponuje wpisać wartość 16, wartość ta decyduje z jaką prędkością programator komunikuje się z uC.

W okienku programu poniżej pola "AVR clock" widać cztery przyciski: "Write", "Read", "Erase" i "Config", celem przeprogramowania fuse bitów AVRa należy kliknąć przycisk "Config", pojawi się w tedy okienko "Chip configuration", jak na poniższym obrazku.

chip_configuration1.jpg

Żeby ATmega8 działał z zewnętrznym kwarcem zegarkowym 32 768 Hz należy

ustawić"

CKSEL 1001

CKOPT 0

ma być "DOKŁADNIE TAK" jak na poniższym obrazku.

chip_configuration2.jpg

Przycisk "Write" i gotowe.

Jeśli w tym momencie pojawi okienko "Error", nie należy się tym przejmować, trzeba zamknąć okienko "Settings" i otworzyć ponownie klikając w przycisk "Config", powinny pokazać się wtedy oczekiwane ustawienia.

Uwaga! przy konfigurowaniu fuse bitów można przez pomyłkę zablokować możliwość programowania uC programatorem szeregowym.

By sprawdzić, czy faktycznie uC działa z częstotliowścią 32768Hz, można zaprogramować AVR-a

programem z migającą diodą LED.

#define F_CPU 32768L		 /* Częstotliwość kwarcu */
#include <avr/io.h> 
#include <util/delay.h>				

int main(void) 
{ 
   DDRD |= _BV(1); 
   unsigned char i; 

   for (;;) 
   {      		                 
PORTD ^=_BV(1);			 
        for (i = 0; i < 50; i++) 
     		               _delay_ms(10);	       
  } 
  return 0; 
}
Link do komentarza
Share on other sites

Czy dla każdego kwarcy będą takie same ustawienia fuse bit ( jeżeli nie to gdzie je znaleźć ?)??

Nie, ustawienia różnią się. Po szczegóły najlepiej zajrzeć do dokumentacji ATmega8

http://www.atmel.com/dyn/resources/prod_documents/doc2486.pdf (od strony 25)

Jak zaprogramować fuse bit w linuksie

Działając w konsoli można posłużyć się programem "uisp" albo "avrdude"

Przykład

Odczyt fuse bitów z nowego ATmega8 (wewnętrzny oscylator 1MHz)

uisp -dprog=stk200 -dlpt='/dev/parport1' -dpart=atmega8 --rd_fuses -dt_sck=60
Atmel AVR ATmega8 is found.

Fuse Low Byte      = 0xe1
Fuse High Byte     = 0xd9
Fuse Extended Byte = 0xff
Calibration Byte   = 0xbf  --  Read Only
Lock Bits          = 0xff

Przeprogramowanie fuse bitów, tak by ATmega8 działał z zewnętrznym kwarcem zegarkowym 32768 Hz

uisp -dprog=stk200 -dlpt='/dev/parport1' -dpart=atmega8  -dt_sck=70 --wr_fuse_l=0xe9 --wr_fuse_h=0xc9

Przeprogramowanie fuse bitów na powrót do do stanu początkowego(wewnętrzny oscylator 1MHz)

uisp -dprog=stk200 -dlpt='/dev/parport1' -dpart=atmega8  -dt_sck=70 --wr_fuse_l=0xe1 --wr_fuse_h=0xd9

Pomoc do programu, oczywiście

uisp -h    

Wartość parametru "-dt_sck" decyduje o szybkości z jaką programator komunikuje się z uC, wartość "70" dobrałem doświadczalnie, by spowolnić programowanie uC tak, żeby programator dostosował się do "powolnego" ATmega8 z zegarem 32768Hz, w innych przypadkach parametr ten można pominąć ( pozostawia wartość domyślną).

Czy zewnętrzną pamięć EEPROM mogę podłączyć pod obojętnie które piny czy są jakieś specjalne i jak zapisać dane do tej pamięci

A jaki jest typ tej pamięci EEPROM ?

Link do komentarza
Share on other sites

jeżeli w dokumentacji ATMega8 jest:

168ab3785bcd17a3med.jpg

chodzi o ustawienia fuse bit dla kwarcu 3-8 MHz. W tym programie dla win w 2 kolumnie Fuse Low bits jeżeli dla 3-8 MHz sa ustawienia 111 dla CKSEL3..1 to w programie musze ustawic CKSEL1:zaznaczyć CKSEL2:zaznaczyć i CKSEL3:zaznaczyć ???

PS. abxyz mógłbyś przesłać mi Makefile na meila ??

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.