|
|
Elektronika.lt portalo forumas
Jūs esate neprisijungęs lankytojas. Norint dalyvauti diskusijose, būtina užsiregistruoti ir prisijungti prie forumo.
Prisijungę galėsite kurti naujas temas, atsakyti į kitų užduotus klausimus, balsuoti forumo apklausose.
Administracija pasilieka teisę pašalinti pasisakymus bei dalyvius,
kurie nesilaiko forumo taisyklių.
Pastebėjus nusižengimus, prašome pranešti.
Dabar yra 2024 04 20, 10:55. Visos datos yra GMT + 2 valandos.
|
|
|
|
Forumas » Mikrovaldikliai » Klausimas del ,,Pirmi žingsniai - Atmel AVR..."
|
Jūs negalite rašyti naujų pranešimų į šį forumą Jūs negalite atsakinėti į pranešimus šiame forume Jūs negalite redaguoti savo pranešimų šiame forume Jūs negalite ištrinti savo pranešimų šiame forume Jūs negalite dalyvauti apklausose šiame forume
|
|
|
|
|
|
|
|
Klausimas del ,,Pirmi žingsniai - Atmel AVR..." |
Parašytas: 2013 03 09, 19:26 |
|
|
|
Gal galit pasidalinti mintimis apie atmegos flash atminties praplėtimą išoriniu flash? Utopija, ar ne?
Tikslas padidinti programos atminties dydį. Pasirodo 8kB yra mažokai. Galbūt laikyti visus kintamuosius išoriškai, o uC juos nuskaito arba įrašo.
Kiek pavyko išgooglinti, tai sprendimo būdų tokiu atveju nėra daug. Pvz siūloma naudoti SPI flash tipo atmintį.
Elementariausias, žinoma, sprendimas būtų: naudoti tokį uC, kuris turi atitinkamas savybes t. y. daugiau flash.
Kitas būdas naudoti SD/MMC kortą. T. y. tas pats flash.
Ir, žinoma, visiem šiem dalykam reikėtų bootloaderio arba papildomos programos, kuri operuotų atminties valdymu, skaitymu ir rašymu ir visu kitu įprastu programos vykdymu.
Bet kokios idėjos yra laukiamos ar įmanoma/neįmanoma. Verta ar ne visiškai bei kokiais atvejais.
P.S. Vienas iš būdų, kur jau aukščiau minėjau: http://spaces.atmel.com/gf/project/sdbootloader/
Ir kitas: http://www.gammon.com.au/forum/?id=10990 |
|
|
|
|
|
|
Klausimas del ,,Pirmi žingsniai - Atmel AVR..." |
Parašytas: 2013 03 10, 18:56 |
|
|
|
specialistas rašo: |
Kas ten per kintamieji, kad neuztenka 8Kb ? |
Ne vienas sveikasis skaičius, keletas su slankiuoju kableliu, PID reikšmės, bool tipo. Char'ai. Tai ne tik kintamieji, bet ir pati programa iš ne trumpųjų, kur naudojamas meniu ir pastovūs skaičiavimai.
Suveržti diržus ir įtilpti į 8kB kaži ar bus įmanoma, kai čia viskas dar buvo rašyta Arduino terpėje. |
|
|
|
|
|
|
Klausimas del ,,Pirmi žingsniai - Atmel AVR..." |
Parašytas: 2013 03 10, 19:01 |
|
|
|
Sveiki,
Gal ką pražiopsojau, gal ne, bet neradau tinkamesnės temos tai paklausiu čia, kaip pradinukas.
Noriu pasibandyt SPI bendravimą tai nusprendžiau apjungt dvi atmega16. (fizinę atmegą turiu vieną tai testavau proteus simuliatoriuje)
Pradžiai pateiksiu kodus, paprasti kaip 2 kart du.
MASTER:
Kodas: |
// Master
#include <iom16.h>
int main (void)
{
char data;
DDRB |= (1<<DDB7)|(1<<DDB5)|(1<<DDB4); // SCK, MOSI and SS kaip isejimai
DDRB &= ~(1<<DDB6); // MISO iejimas
SPCR |= (1<<MSTR); // Nustatyta kaip master
SPCR |= (1<<SPR0)|(1<<SPR1); // dalinam is 128
SPCR |= (1<<SPE); // įjungiam SPI
while(1)
{
data=0xFA;
SPDR = data; // data registro uzpildymas
while(!(SPSR & (1<<SPIF))); // laukimas
}
} |
SLAVE:
Kodas: |
// Slave
#include <iom16.h>
int main (void)
{
char data;
DDRB &= ~((1<<DDB7)|(1<<DDB5)|(1<<DDB4)); // SCK, MOSI and SS kaip įėjimai
DDRB |= (1<<DDB6); // MISO kaip isejimas
SPCR &= ~(1<<MSTR); // Nustatom kaip slave
SPCR |= (1<<SPR0)|(1<<SPR1); // dalinam is 128
SPCR |= (1<<SPE); // Įjungiam SPI
while(1)
{
while(!(SPSR & (1<<SPIF))); // Laukiam duomenų
data = SPDR; // paimam is duomenu registro duomenis
DDRD=255; // visi D portai kaip isejimas
PORTD=data; // isvedami duomenys
}
} |
Tai va man įdomu pasidarė, kodėl įvedus tarkim MASTER kode data=11111111 SLAVE uždega tik 2 4 5 6 7 8 portus, kodėl gaunamas toks karpymas? čia su INT susiję kažkas ar taip tiesiog niekad nepavyks nusiųst duomenų "realybėj"
Lauksiu atsakymo jei nepasirodys per kvailas jis.
Taip pat, kodėl kai kuriose main funkcijose reik gražinimo, kai kuriose ne. (return 0
Trečias klausimas ar įmanoma su IAR Workbench susikurt tarkim vieną projektą, bet gaut kelis hex`us (čia jau tikrai kvaila, bet nesugalvoju kaip...)
EDIT: ir jei tarkim ISP programming noriu padaryt ir SPI sasają tai kaip tada nusiųst kodą? Varžas kažkokias panaudot ar kažkokį portų atjungimą reik turėt pasidarius?
Atsiprašau už ilgą postą, bet gal kas apšvitinsit mane.. |
|
_________________ Bandau praplėst žinias |
|
|
|
|
|
Klausimas del ,,Pirmi žingsniai - Atmel AVR..." |
Parašytas: 2013 03 10, 21:00 |
|
|
|
GINTARAS zim rašo: |
Edzma su kokiu kompiliatoriu-programatoriu dirbi ,pas mane AVRISP mkII originalas as nelabai juo patenkintas |
AvrStudio 4.19+avrToolchain. Viskas puikiai.. |
|
|
|
|
|
|
Klausimas del ,,Pirmi žingsniai - Atmel AVR..." |
Parašytas: 2015 01 30, 20:06 |
|
|
|
Kodas: |
/********************* Main Program ********************************/
int main(void)
{
//Timer laikui skaiciuoti
TCCR1B = (1<<CS12|1<<CS10|1<<WGM12);
OCR1A = 15625-1;
TIMSK = 1<<OCIE1A;
//Timer rodyti laika
TIMSK |= (1 << TOIE0);
TCCR0 |= (1 << CS01|1<<CS00);
sei();
SSD_Init(); //7 segment paleidimas
InitADC(); //ADC paleidimas
//Loading animacija
for(int x=0; x<6; x++){
SegPort = 0x00;
shiftWrite(load[x]);
SegPort = 0x3F; //0011 1111
_delay_ms(200);}
while(1){
//adc=ReadADC(0);
}
}
//Overflow interuptas
ISR(TIMER0_OVF_vect){
unsigned char keyy;
adc=ReadADC(0);
keyy=keypress(adc);
int laikas;
int pin;
key++;
SSD_skaicius(hours);
time[0]=desimtys; time[1]=vienetai;
SSD_skaicius(minutes);
time[2]=desimtys; time[3]=vienetai;
SSD_skaicius(seconds);
time[4]=desimtys; time[5]=vienetai;
laikas=sc;
pin=sc;
if(keyy==1){
if(sc==3 || sc==2){
if(key<100){pin=7;}}}
if(sc<6){
SSD_Write(time[laikas], pin); sc++;}
if(sc==6){sc=0;}
if(key==1000){key=0;}
}
/*Timer Counter 1 Compare Match A Interrupt Service Routine/Interrupt Handler*/
ISR(TIMER1_COMPA_vect){
seconds++; //key++;
SSD_Write(10, 4);
if(seconds == 60){
seconds = 0;
minutes++;
SSD_Write(10, 2);
}
if(minutes == 60){
minutes = 0; hours++;}
if(hours > 23){
hours = 0;}
}
|
problema tame, jei naudoju Overflow interuptas rodyti skaiciam, man neveikia //loading animacija// pries while cikla, jei uzkomentuoju Overflow interuptas tada rodo ta sukurta animacija. jei visa skaiciu rodyma is Overflow interuptas perkeliu i while cikla tada viskas eina, ir animacija parodo, ir poto skaiciai eina.
nesuprantu kur problema |
|
_________________ Skype: dmb-220 |
|
|
|
|
|
|
Google paieška forume |
|
|
Naujos temos forume |
|
|
FS 22 Tractors
Farming Simulator 19 Mods,
FS 22 Maps,
FS22 Mods |
|
ETS2 Mods
ETS2 Trucks,
ETS2 Bus,
Euro Truck Simulator 2 Mods
|
|
FS22 Tractors
Farming Simulator 22 Mods,
FS22 Maps,
FS22 Trucks |
|
VAT calculator
VAT number check,
What is VAT,
How much is VAT |
|
Paskola internetu
Vartojimo paskola,
paskola automobiliui,
paskola būsto remontui |
|
Thermal monocular
Thermal vision camera,
Night vision ar scope,
Night vision spotting scope |
|
FS22 Mods
FS22 Harvesters,
FS22 Tractors Mods,
FS22 Maps Mods |
|
FS22 Mods
FS22 Maps,
FS22 Harvesters,
FS22 Tractors |
|
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija |
|
Sims 4 Mods
Sims 4 CC Clothes,
Sims 4 Hair CC,
Sims 4 Skill Cheat |
|
Optic sight
Binoculars for hunting elk,
Best compact binoculars,
Riflescope hunting |
|
|
|