Przesunięty przez: daniel93 25 Cze 08 01:29 |
Linux, avr, kwarc, zewnętrzna pamięć |
| Autor |
Wiadomość |
Turboasm

Posty: 16 Skąd: Kleczew
|
Wysłany: 30 Lip 07 10:46 Linux, avr, kwarc, zewnętrzna pamięć
|
|
|
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 | Kod: | #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 ?? |
|
|
|
|
 |
Decado


Pomógł: 6 razy Posty: 160 Otrzymał 6 piw(a) Skąd: Bełk
|
Wysłany: 30 Lip 07 11:16
|
|
|
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 |
|
_________________ "Niema ludzi niewinnych, są tylko źle przesłuchiwani" Feliks "Krwawy Feliks" Dzierżyński |
|
|
|
 |
Turboasm

Posty: 16 Skąd: Kleczew
|
Wysłany: 30 Lip 07 11:18
|
|
|
| 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 ) |
|
|
|
|
 |
abxyz
Expert programowanie

Pomógł: 18 razy Posty: 166 Otrzymał 28 piw(a) Skąd: zza winkla
|
Wysłany: 30 Lip 07 12:30 Re: Linux, avr, kwarc, zewnętrzna pamięć
|
|
|
| Turboasm napisał/a: | | 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/
| Turboasm napisał/a: | | 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. |
|
|
|
|
 |
Turboasm

Posty: 16 Skąd: Kleczew
|
Wysłany: 30 Lip 07 01:01
|
|
|
| ale jak mam przeprogramować fuse bity kożystając z najprostrzego z możliwych programatorów ?? |
|
|
|
|
 |
abxyz
Expert programowanie

Pomógł: 18 razy Posty: 166 Otrzymał 28 piw(a) Skąd: zza winkla
|
Wysłany: 30 Lip 07 03:08
|
|
|
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 |
|
_________________ Nie powie ci nawet wiedźma Pleple, czego się dowiesz wprost z Google_ |
|
|
|
 |
Turboasm

Posty: 16 Skąd: Kleczew
|
Wysłany: 30 Lip 07 03:52
|
|
|
| ATMega8 z kwarcem zegarkowym 32 768 Hz |
|
|
|
|
 |
abxyz
Expert programowanie

Pomógł: 18 razy Posty: 166 Otrzymał 28 piw(a) Skąd: zza winkla
|
Wysłany: 31 Lip 07 01:29
|
|
|
1. Należy przyłączyć kwarc jak na rysunku poniżej
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'
3. Uruchomić program "twinavr.exe", przy pierwszym uruchomieniu TwinAVR pojawi się okienko "Settings" jak poniżej
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.
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.
Ż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.
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.
| Kod: | #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;
} |
|
|
|
|
|
 |
Turboasm

Posty: 16 Skąd: Kleczew
|
Wysłany: 31 Lip 07 07:34
|
|
|
Czy dla każdego kwarcy będą takie same ustawienia fuse bit ( jeżeli nie to gdzie je znaleźć ?)??
Jak zaprogramować fuse bit w linuksie ?? |
|
|
|
|
 |
abxyz
Expert programowanie

Pomógł: 18 razy Posty: 166 Otrzymał 28 piw(a) Skąd: zza winkla
|
Wysłany: 01 Sie 07 04:27
|
|
|
| Turboasm napisał/a: | | 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/...nts/doc2486.pdf (od strony 25)
| Turboasm napisał/a: | | 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)
| Kod: | 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
| Kod: | 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)
| Kod: | uisp -dprog=stk200 -dlpt='/dev/parport1' -dpart=atmega8 -dt_sck=70 --wr_fuse_l=0xe1 --wr_fuse_h=0xd9 |
Pomoc do programu, oczywiście
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ą).
| Turboasm napisał/a: | | 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 ? |
|
|
|
|
 |
Turboasm

Posty: 16 Skąd: Kleczew
|
Wysłany: 01 Sie 07 06:25
|
|
|
jeżeli w dokumentacji ATMega8 jest:
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 ?? |
|
|
|
|
 |
abxyz
Expert programowanie

Pomógł: 18 razy Posty: 166 Otrzymał 28 piw(a) Skąd: zza winkla
|
Wysłany: 01 Sie 07 11:22
|
|
|
Proponuje ustawić jak na rysunku poniżej
(rezonator kwarcowy 3.0 .. 8.0 MHz)
Należy też brać pod uwagę informacje z następnej tabeli
 |
|
|
|
|
 |
|
|