 |

|
|
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 2025 12 16, 23:38. Visos datos yra GMT + 2 valandos.
|
|
|
 |
Forumas » Mikrovaldikliai » USART mega328p
|
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 2 iš 2 Pereiti prie Atgal 1, 2 |
|
 |
USART mega328p |
Parašytas: 2016 10 04, 13:34 |
|
|
|
|
| R2D2 rašo: |
| Todėl reikia nusilenkti kompiliatorių kūrėjams, kad sugeba padaryti tokius stebuklus. |
Na tikrai. Dabar masyvu ilgius aprasineja tik durniai, o malloc() jau senai isejes i pensija  |
|
|
|
|
|
 |
 |
Re: USART mega328p |
Parašytas: 2016 10 04, 19:48 |
|
|
|
|
| Socrates rašo: |
| Digix rašo: |
char text[] (arba text*) = " kazkoks tekstas"; |
Butent kaip tu cia dabar aprasei, tai kompiliatorius ir supras kaip zinomo ilgio masyva. O kai nurodai tik pointeri, tai ten belekas gali nutikt.
O siaip nurodzius char data[25] kompiliatoriui butu viskas aisku. |
jei nurodysi char data[25] tada jau reikes rasyti kitaip
char data[25]= {'k','a','z','k','o','k','s'....'\0'}
jei tu C kalboje parasai " kazkoks tekstas" tai tokiu budu automatiskai tas tekstas patalpinamas i kazkokia atminties vieta kaip masyvas su nuliu pabaigoje ir grazinamas pointeris i ta masyva.
todel
char data[25]=" kazkoks tekstas";
negali veikti is principo, nes tu negali masyvo prilyginti pointeriui.
tokiu ateveju reikes naudoti memcpy asba strcpy |
|
|
|
|
|
 |
 |
USART mega328p |
Parašytas: 2016 10 04, 20:28 |
|
|
|
|
| Socrates rašo: |
| R2D2 rašo: |
| Todėl reikia nusilenkti kompiliatorių kūrėjams, kad sugeba padaryti tokius stebuklus. |
Na tikrai. Dabar masyvu ilgius aprasineja tik durniai, o malloc() jau senai isejes i pensija  |
Kam reikalingas tas ne į temą offtopic`as? Patarinėkim apie C ir mikrovaldiklius, geriau. |
|
|
|
|
|
 |
Re: USART mega328p |
Parašytas: 2016 10 04, 20:29 |
|
|
|
|
| Digix rašo: |
todel
char data[25]=" kazkoks tekstas";
negali veikti is principo, nes tu negali masyvo prilyginti pointeriui.
tokiu ateveju reikes naudoti memcpy asba strcpy |
ir kodėl negali? |
|
|
|
|
|
 |
Re: USART mega328p |
Parašytas: 2016 10 04, 21:16 |
|
|
|
|
| R2D2 rašo: |
| Digix rašo: |
todel
char data[25]=" kazkoks tekstas";
negali veikti is principo, nes tu negali masyvo prilyginti pointeriui.
tokiu ateveju reikes naudoti memcpy asba strcpy |
ir kodėl negali? |
manau ten buvo parasyta kodel. |
|
|
|
|
|
 |
Re: USART mega328p |
Parašytas: 2016 10 04, 21:25 |
|
|
|
|
| Digix rašo: |
manau ten buvo parasyta kodel. |
Manau ten buvo negerai parasyta.
char data[25]="kazkoks tekstas";
char *fakinpointer = data;
Ka tik isbandziau, veikia puikiai, ir dargi nulis gale  |
|
|
|
|
|
 |
 |
USART mega328p |
Parašytas: 2016 10 05, 18:18 |
|
|
|
|
Na vieną dieną neatėjau, tai žiūriu čia diskucija užvirus. Na nežinau kodėl man neveikia ant atmega328p valdiklio. Padariau kodą ant atmegos8 viskas veikia gerai. Parsisiunčiau AVR studio 4.18. Na pradėjo veikti tas kodas, tačiau dabar problema kita atsirado. Kartais išdrasko siunčiamą eilutę. Padariau print screena terminal V1.93b. Na į kompą iš atmegos328p siunčiu per FT232RL. Tai va, kaip kartais spausdinamą eilutę, galite pamatyti čia
http://talpix.lt/u/K8eXSku
Tai gal kas nors galit šį kodą sukompiliuoti į hex failą ir man atsiųsti. Gal mano kompiliatorius grybauja.
Kodas:
| Kodas: |
#include <avr/io.h>
#include <avr/delay.h>
#define FOSC 8000000
#define BAUD 9600
#define MYUBRR FOSC/16/(BAUD-1)
void USART_Init()
{
UBRR0H = (MYUBRR>>8);
UBRR0L = MYUBRR;
UCSR0B = (1<<TXEN0);
UCSR0C = (0<<USBS0)|(3<<UCSZ00);
}
simboliai( char m)
{
while (!(UCSR0A & (1<<UDRE0)));
UDR0 = m;
}
void eilute(unsigned char *data)
{
while(*data!=0)
{
while (!(UCSR0A & (1<<UDRE0)));
UDR0 = *data;
data++;
}
}
int main(void)
{
USART_Init();
while(1)
{
eilute("gpio.write(4,gpio.LOW)");
simboliai(13);
_delay_ms(1000);
eilute("gpio.write(4,gpio.HIGH)");
simboliai(13);
_delay_ms(1000);
}
}
|
|
|
_________________ Diplomas tik etikete ant konservų dėžutes. O kas slepiasi dėžutėje neaišku. |
|
|
|
 |
 |
USART mega328p |
Parašytas: 2016 10 05, 18:29 |
|
|
|
|
| ne, nieko daryti nereikia. Pasileidau ant PUTTY programos, tai ne vieną kartą nesudraskę eilutės |
|
_________________ Diplomas tik etikete ant konservų dėžutes. O kas slepiasi dėžutėje neaišku. |
|
|
|
 |
Re: USART mega328p |
Parašytas: 2016 10 06, 02:43 |
|
|
|
|
| Badas rašo: |
| Digix rašo: |
manau ten buvo parasyta kodel. |
Manau ten buvo negerai parasyta.
char data[25]="kazkoks tekstas";
char *fakinpointer = data;
Ka tik isbandziau, veikia puikiai, ir dargi nulis gale  |
pas tave nebus kartais C++ kompiliatorius? nes jis tokius dalykus daznai automatiskai sutvarko naudodamas "operator overloading" funkcija. |
|
|
|
|
|
|
 |
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 |
 |
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija |
 |
FS25 Mods
FS25 Maps,
FS25 Cheats,
FS25 Install Mods |
 |
FS25 Mods
Farming Simulator 25 Mods,
FS25 Maps |
 |
ATS Trailers
American Truck Simulator Mods,
ATS Trucks,
ATS Maps |
 |
Must have farming mods
Farming simulator modhub,
Best farming simulator mods |
|

|
 |