|
|
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 12 22, 13:49. Visos datos yra GMT + 2 valandos.
|
|
|
|
Forumas » Mikrovaldikliai » Kokį kompiliatorių naudojate ?
|
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
|
|
|
Puslapis 1 iš 3 Pereiti prie 1, 2, 3 Toliau |
|
|
Kokį kompiliatorių naudojate ? |
Parašytas: 2011 06 25, 12:13 |
|
|
|
Sveiki, pasisakykite, kokį kompiliatorių naudojate programuodami C kalba AVR mikrėm. Patarkite, kuris geriausias. Aš dabar programuoju su AVR Studio.
O ką manote apie CodeVisionAVR ? Gal kas naudojate ? |
|
|
|
|
|
Kokį kompiliatorių naudojate ? |
Parašytas: 2011 06 25, 14:15 |
|
|
|
As tai naudoju AVR studio 4. Kazkada bandziau programuoti ir su CodeVisionAVR, bet turbut radau daugiau pavyzdziu ant avr studio ir prie jos likau o seip labai dideliu skirtumu nera. |
|
|
|
|
|
|
Re: Kokį kompiliatorių naudojate ? |
Parašytas: 2011 06 25, 22:05 |
|
|
|
Aš tai naudoju CodeVision. Dabar jau prieinama 2.05 versija.
Man, kaip amžinam pradedančiajam sakyčiau kodų generatorius yra gėris. Kadangi tenka kartais rinktis mikrovaldiklį, tai labai patogu kodų generatorių naudoti netgi kaip žinyną. Iškart matai, kokias funkcijas vienas ar kitas attiny ar atmega galės atlikti. Be standartinių funkcijų sureguliavimo, kodų generatorius dar lengvai surašo gatavą kodą tarkim LCD valdymui, automatiniam ADC išvadų skanavimui ir t.t. 2.05 versijoje kodų generatoriaus langas gali veikti kartu su pagrindiniu, taigi programos rašymo eigoje galima lengvai pakeisti mikrovaldiklio funkcijas,- šalia savo programos sugeneruoji kitokį pradinį kodą, ir pakeiti pasenusius gabalus. Viskas lakoniškai, bet pakankamai ir aiškiai komentuojama.
Yra nebloga pagalbos sistema.
Minusas galbūt tik gatavų pavyzdžių negausa. Bet pasistudijuoji AVR Studio programėles, ir padaręs nedidelius teksto pakeitimus irgi gali naudoti CodeVision terpėje.
CodeVision turi ir priemones parašytą programą toliau debuginti AVR Studio-joje. |
|
|
|
|
|
|
Kokį kompiliatorių naudojate ? |
Parašytas: 2011 06 25, 22:27 |
|
|
|
GCC. Beje pataisysiu, sakydami AVRStudio4 turite omenyje ne kompiliatorių o IDE ir debugerį. Kompiliatorius ten AVR-GCC (WINAVR). Nežinau kodėl Codevision taip kabliuoja su tuo kodo generatorium... mano galva ten prigeneruoja duagiau šlamšto nei neudingo kodo. Marketinginis triukas. |
|
|
|
|
|
|
Kokį kompiliatorių naudojate ? |
Parašytas: 2011 06 25, 22:59 |
|
|
|
Taip, čia kalba apie IDE. Nepykit, bet panašu kad kritika codevision atžvilgiu kyla dažniausiai spontaniškai, net turbūt nepabandžius Pateiksiu ant greitųjų sustumtą kodų generatoriaus programos ruošinį. Manau kodo "šlamšto" ten išvis nėra. Komentarai nesiskaito O "tobulėjimui" - pilna vietos, už kiekvieno "// Place your code here". Tvarkingai surašytos visų registrų reikšmės. Kad tą pasiekti "nuo nulio", tektų kelias valandas įdėmiai skaityti duomlapį. O kai jau surašyta, niekas netrukdo greitai susirasti kiekvieno registro aprašymą ir keisti savo nuožiūra. Juk pradedantieji ir su WINAVR pavyzdžiais gi dirba panašiai,- studijuoja kiekvieną eilutę ir spėlioja, kaip čia kas dirba. Čia gi tą kodą gauni dėliodamas varneles kodų generatoriuje, konfigūruodamas mikrovaldiklį.
Kodas: |
#include <tiny2313.h>
// 1 Wire Bus interface functions
#include <1wire.h>
// DS1820 Temperature Sensor functions
#include <ds1820.h>
// Standard Input/Output functions
#include <stdio.h>
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Reinitialize Timer 0 value
TCNT0=0x89;
// Place your code here
}
// Declare your global variables here
void main(void)
{
// Declare your local variables here
// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
// Input/Output Ports initialization
// Port A initialization
// Func2=In Func1=In Func0=In
// State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=Out Func2=Out Func1=Out Func0=Out
// State7=T State6=T State5=T State4=T State3=0 State2=0 State1=0 State0=0
PORTB=0x00;
DDRB=0x0F;
// Port D initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 1000,000 kHz
// Mode: Normal top=0xFF
// OC0A output: Disconnected
// OC0B output: Disconnected
TCCR0A=0x00;
TCCR0B=0x02;
TCNT0=0x89;
OCR0A=0x00;
OCR0B=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=0xFFFF
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// Interrupt on any change on pins PCINT0-7: Off
GIMSK=0x00;
MCUCR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x02;
// Universal Serial Interface initialization
// Mode: Disabled
// Clock source: Register & Counter=no clk.
// USI Counter Overflow Interrupt: Off
USICR=0x00;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 56000
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x06;
UBRRH=0x00;
UBRRL=0x08;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
DIDR=0x00;
// 1 Wire Bus initialization
// 1 Wire Data port: PORTD
// 1 Wire Data bit: 2
// Note: 1 Wire port settings must be specified in the
// Project|Configure|C Compiler|Libraries|1 Wire IDE menu.
w1_init();
// Global enable interrupts
#asm("sei")
while (1)
{
// Place your code here
}
} |
|
|
|
|
|
|
|
Kokį kompiliatorių naudojate ? |
Parašytas: 2011 06 26, 01:04 |
|
|
|
degama rašo: |
Taip, čia kalba apie IDE. Nepykit, bet panašu kad kritika codevision atžvilgiu kyla dažniausiai spontaniškai, net turbūt nepabandžius Pateiksiu ant greitųjų sustumtą kodų generatoriaus programos ruošinį. Manau kodo "šlamšto" ten išvis nėra. Komentarai nesiskaito O "tobulėjimui" - pilna vietos, už kiekvieno "// Place your code here". Tvarkingai surašytos visų registrų reikšmės. Kad tą pasiekti "nuo nulio", tektų kelias valandas įdėmiai skaityti duomlapį. O kai jau surašyta, niekas netrukdo greitai susirasti kiekvieno registro aprašymą ir keisti savo nuožiūra. Juk pradedantieji ir su WINAVR pavyzdžiais gi dirba panašiai,- studijuoja kiekvieną eilutę ir spėlioja, kaip čia kas dirba. Čia gi tą kodą gauni dėliodamas varneles kodų generatoriuje, konfigūruodamas mikrovaldiklį.
Kodas: |
#include <tiny2313.h>
// 1 Wire Bus interface functions
#include <1wire.h>
// DS1820 Temperature Sensor functions
#include <ds1820.h>
// Standard Input/Output functions
#include <stdio.h>
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Reinitialize Timer 0 value
TCNT0=0x89;
// Place your code here
}
// Declare your global variables here
void main(void)
{
// Declare your local variables here
// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
// Input/Output Ports initialization
// Port A initialization
// Func2=In Func1=In Func0=In
// State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=Out Func2=Out Func1=Out Func0=Out
// State7=T State6=T State5=T State4=T State3=0 State2=0 State1=0 State0=0
PORTB=0x00;
DDRB=0x0F;
// Port D initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 1000,000 kHz
// Mode: Normal top=0xFF
// OC0A output: Disconnected
// OC0B output: Disconnected
TCCR0A=0x00;
TCCR0B=0x02;
TCNT0=0x89;
OCR0A=0x00;
OCR0B=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=0xFFFF
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// Interrupt on any change on pins PCINT0-7: Off
GIMSK=0x00;
MCUCR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x02;
// Universal Serial Interface initialization
// Mode: Disabled
// Clock source: Register & Counter=no clk.
// USI Counter Overflow Interrupt: Off
USICR=0x00;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 56000
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x06;
UBRRH=0x00;
UBRRL=0x08;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
DIDR=0x00;
// 1 Wire Bus initialization
// 1 Wire Data port: PORTD
// 1 Wire Data bit: 2
// Note: 1 Wire port settings must be specified in the
// Project|Configure|C Compiler|Libraries|1 Wire IDE menu.
w1_init();
// Global enable interrupts
#asm("sei")
while (1)
{
// Place your code here
}
} |
|
didziaja dali taip vadinamo kodo trynt reiktu |
|
|
|
|
|
|
Kokį kompiliatorių naudojate ? |
Parašytas: 2011 06 26, 09:56 |
|
|
|
Kas man labiausiai ant CodeVisionAVR patinka tai kad ten yra labai didele biblioteka. O ant AVR studio reikia ieskoti jau po visa interneta ir man tai kartais uzima nemazai laiko. |
|
|
|
|
|
Kokį kompiliatorių naudojate ? |
Parašytas: 2011 06 26, 13:12 |
|
|
|
Tokios eilutes kaip
DDRB=0x02;
jau vadinasi slamštas, nes vizualiai reikia spelioti kokie pinai yra naudojami.
jei peziuresi i normalesnius pavyzdzius tia bus parasyta:
DDRB |= (1<<PD1);
Mano galva kodo generatorius nebent norint pamirgseti koki LED. Rašant normalesnes programas kiekvieno modulio inicializavimas turetu buti vykdomas per funkcijas ir skaidant i atskirus failus ir pan.
O šiaip aš nieko prieš ta codevision - trukumas kad mokama. |
|
|
|
|
|
Kokį kompiliatorių naudojate ? |
Parašytas: 2011 06 26, 14:30 |
|
|
|
Dreifas rašo: |
Tokios eilutes kaip
DDRB=0x02;
jau vadinasi slamštas, nes vizualiai reikia spelioti kokie pinai yra naudojami.
|
as nesutinku su situo pasisakymu. Pats megstu naudoti sesiolikainius skaicius ir jei ipranti tai pakankamai vaizdu ir greita. Jei reikia ijungti tarkim 8 bitu registro 6 ar 7 bitus tai rasinet 1<<XYZ tampa jau mechaniniu darbu. |
|
|
|
|
|
Kokį kompiliatorių naudojate ? |
Parašytas: 2011 06 26, 16:26 |
|
|
|
rasom taip ir fsio 0b11111111 |
|
_________________ Aš pažeidžiau forumo taisykles ir reklamavau paraše. ...Bet uz reklama tai susimokejau |
|
|
|
|
Kokį kompiliatorių naudojate ? |
Parašytas: 2011 06 26, 16:42 |
|
|
|
Matikas850 rašo: |
Dreifas rašo: |
Tokios eilutes kaip
DDRB=0x02;
jau vadinasi slamštas, nes vizualiai reikia spelioti kokie pinai yra naudojami.
|
as nesutinku su situo pasisakymu. Pats megstu naudoti sesiolikainius skaicius ir jei ipranti tai pakankamai vaizdu ir greita. Jei reikia ijungti tarkim 8 bitu registro 6 ar 7 bitus tai rasinet 1<<XYZ tampa jau mechaniniu darbu. |
Pritariu, reikia ismokt skaityt sesioliktainius skaicius. |
|
|
|
|
|
Kokį kompiliatorių naudojate ? |
Parašytas: 2011 06 26, 17:28 |
|
|
|
DDRB=0x02 :
"barmene, sustatykite 8 tuščius bokalus, įpilkite į antrą iš dešinės alaus ir paduokite jį man."
DDRB |= (1<<PD1) :
"barmene, sustatykite 8 tuščius bokalus, įpilkite į pirmąjį iš dešinės alaus. Paskui pristatykite iš dešinės dar vieną tuščią bokalą, perstumkite visus bokalus per vieną poziciją kairėn, ir paduokite tą bokalą, kuris tapo antru iš dešinės" |
|
|
|
|
|
|
Kokį kompiliatorių naudojate ? |
Parašytas: 2011 06 26, 17:32 |
|
|
|
Na tai dabar pasakykit kuri eilute aiškesne?
//enable reception and RC complete interrupt
UCSR0B |= (1<<RXEN0)|(1<<RXCIE0);
Ar
UCSR0B = 0x18;
Beje nustatant bitus registre turetu buti naudojama OR operacija
UCSR0B |= 0x18;
Mano galva su tokiu trumpu užrasymu teks dažniau žvilgčioti datasheet ir žiūrėti kurie bitai nustatyti.
Paimkit bet koki tutoriala - pamatysit.
Bet, kaip sakoma, programuokit kaip norit, tačiau ilgainiui atsimušit i siena del tingėjimo parašyti aiškesnį kodą.
P.S. Aš ir nesakiau kad šešioliktainiai skaičiai yra blogai - juos reikia mokėti. |
|
|
|
|
|
|
Kokį kompiliatorių naudojate ? |
Parašytas: 2011 06 26, 17:48 |
|
|
|
degama rašo: |
DDRB=0x02 :
"barmene, sustatykite 8 tuščius bokalus, įpilkite į antrą iš dešinės alaus ir paduokite jį man."
DDRB |= (1<<PD1) :
"barmene, sustatykite 8 tuščius bokalus, įpilkite į pirmąjį iš dešinės alaus. Paskui pristatykite iš dešinės dar vieną tuščią bokalą, perstumkite visus bokalus per vieną poziciją kairėn, ir paduokite tą bokalą, kuris tapo antru iš dešinės" |
Teisingiau būtų:
DDRB=0x02 :
"barmene, išpilkite iš visų 8 bokalų nesvarbu kad ir kas ten būtų iš kas iš jų geria ir įpilkite į antrą iš dešinės alaus ir paduokite jį man."
DDRB |= (1<<PD1) :
"barmene, sustatykite atskirai 8 tuščius bokalus, įpilkite į pirmąjį iš dešinės alaus. Paskui pristatykite iš dešinės dar vieną tuščią bokalą, perstumkite visus bokalus per vieną poziciją kairėn, pakeiskite visus tuščius bokalus su chebros bokalais, ir paduokite tą bokalą, kuris tapo antru iš dešinės" |
|
|
|
|
|
|
Google paieška forume |
|
|
Naujos temos forume |
|
|
FS25 Tractors
Farming Simulator 25 Mods,
FS25 Maps,
FS25 Trucks |
|
ETS2 Mods
ETS2 Trucks,
ETS2 Bus,
Euro Truck Simulator 2 Mods
|
|
FS22 Tractors
Farming Simulator 22 Mods,
FS22 Maps,
FS25 Mods |
|
VAT calculator
VAT number check,
What is VAT,
How much is VAT |
|
LEGO
Mänguköök,
mudelautod,
nukuvanker |
|
Thermal monocular
Thermal vision camera,
Night vision ar scope,
Night vision spotting scope |
|
FS25 Mods
FS25 Harvesters,
FS25 Tractors Mods,
FS25 Maps Mods |
|
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija |
|
FS25 Mods
FS25 Maps,
FS25 Cheats,
FS25 Install Mods |
|
GTA 6 Weapons
GTA 6 Characters,
GTA 6 Map,
GTA 6 Vehicles |
|
FS25 Mods
Farming Simulator 25 Mods,
FS25 Maps |
|
ATS Trailers
American Truck Simulator Mods,
ATS Trucks,
ATS Maps |
|
|
|