Elektronika.lt
 2024 m. lapkričio 2 d. Projektas | Reklama | Žinokite | Klausimai | Prisidėkite | Atsiliepimai | Kontaktai
Paieška portale
EN Facebook RSS

 Kas naujo  Katalogas  Parduotuvės  Forumas  Tinklaraščiai
 Pirmas puslapisSąrašas
 Forumas / + pokalbiai
 - Paieška forume
 - D.U.K. / Forumo taisyklės
 - Narių sąrašas
 - Registruotis
 - Prisijungti

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 11 02, 20:37. 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 12
Pereiti prie 1, 2  Toliau
Pradėti naują temą  Atsakyti į pranešimą Rodyti ankstesnį pranešimą :: Rodyti kitą pranešimą 
 USART mega328p
PranešimasParašytas: 2016 10 02, 21:56 Pranešti apie taisyklių pažeidimą Atsakyti su citata
pcwortex
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Sveiki,
Reikia pagalbos, kazkodel neveikia kodas atmega328p USART. kodas toks
Kodas:
void eilute(unsigned char *data )
{

while(*data!=0)
   {
while (!(UCSR0A & (1<<UDRE0)));
   UDR0 = *data;
   data++;
   }
}

taciau jeigu as nusiunciu tokia komanda

Kodas:
while(1)
    {
   eilute("gpio.write(4,gpio.HIGH)");
   simboliai(13);
   _delay_ms(1000);
   eilute("gpio.write(4,gpio.LOW)");
   simboliai(13);
   _delay_ms(1000);
   }

Tai man visa laika spausdina gpio.write(4,gpio.HIGH)
Bet nespausdina gpio.write(4,gpio.LOW) ir nesuprantu, kodel, gal kas galit patarti, kur problema

_________________
Diplomas tik etikete ant konservų dėžutes. O kas slepiasi dėžutėje neaišku.
 USART mega328p
PranešimasParašytas: 2016 10 03, 04:54 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Socrates
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
1. Neaisku kaip aprasytas masyvas data[]?
2. Kas tas simboliai(13)?
3. Tikrini kol neateis simbolis 0, bet jo niekada ir nesiunti.
 USART mega328p
PranešimasParašytas: 2016 10 03, 08:32 Pranešti apie taisyklių pažeidimą Atsakyti su citata
pcwortex
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Citata:
Kas tas simboliai(13)?


simboliai() yra paprogramė, kad rašytų eilutę iš naujo pagal ASCII table 13 - Carriage return.

Kodas:

simboliai(unsigned char m)
{
while (!(UCSR0A & (1<<UDRE0)));
UDR0 =m;
}


Citata:
3. Tikrini kol neateis simbolis 0, bet jo niekada ir nesiunti.

Kodas:
while(*data!=0)


Čia aš tikrinu, kada bus eilutės galas. ASCII table 0 - NULL;

Citata:
Neaisku kaip aprasytas masyvas data[]?


Čia nesupratau. Ar masyvo aprašymui neužtenka

Kodas:
unsigned char *data


gal čia galėtumėt kas nors konkrečiau pakomentuoti?

_________________
Diplomas tik etikete ant konservų dėžutes. O kas slepiasi dėžutėje neaišku.
 USART mega328p
PranešimasParašytas: 2016 10 03, 14:17 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Socrates
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Na as ir sakiau: tikrini kol ateis 0, bet niekada jo nesiunti.

Masyvui tu nurodei rodykle i belekokia vieta atminty. Galiausiai rasysi rasysi ir nulush tavo programa.
Masyvui reikia isskirti atminti. Pasidomek malloc().
 USART mega328p
PranešimasParašytas: 2016 10 03, 19:47 Pranešti apie taisyklių pažeidimą Atsakyti su citata
R2D2
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Socrates rašo:
Na as ir sakiau: tikrini kol ateis 0, bet niekada jo nesiunti.

Masyvui tu nurodei rodykle i belekokia vieta atminty. Galiausiai rasysi rasysi ir nulush tavo programa.
Masyvui reikia isskirti atminti. Pasidomek malloc().


nu tai toje belekokioj atminty ir yra tas tekstas. Ir dar su '0' gale. Kompiliatorius padaro tą darbą.

čia bėda bus tas delay. Išmetus pirmąjį, parašys abu tekstus.
 USART mega328p
PranešimasParašytas: 2016 10 03, 19:54 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Socrates
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
R2D2 rašo:
Socrates rašo:
Na as ir sakiau: tikrini kol ateis 0, bet niekada jo nesiunti.

Masyvui tu nurodei rodykle i belekokia vieta atminty. Galiausiai rasysi rasysi ir nulush tavo programa.
Masyvui reikia isskirti atminti. Pasidomek malloc().


nu tai toje belekokioj atminty ir yra tas tekstas. Ir dar su '0' gale. Kompiliatorius padaro tą darbą.

čia bėda bus tas delay. Išmetus pirmąjį, parašys abu tekstus.


Geras kompiliatorius tada. As tokio nelabai zinau...
 USART mega328p
PranešimasParašytas: 2016 10 03, 19:58 Pranešti apie taisyklių pažeidimą Atsakyti su citata
R2D2
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Socrates rašo:
Geras kompiliatorius tada. As tokio nelabai zinau...


Bet koks C kompiliatorius tą padaro šiaip.
 USART mega328p
PranešimasParašytas: 2016 10 03, 22:51 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Socrates
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
R2D2 rašo:
Socrates rašo:
Geras kompiliatorius tada. As tokio nelabai zinau...


Bet koks C kompiliatorius tą padaro šiaip.


Na tada as atsilikes. Nes siaip aprasius rodykle, tai ji rodys betkur i atminti ir ten nebutinai bus nuliai. Ypac jeigu pataikysi kurnors, kur jau buvo rasyti duomenys anksciau. Neveltui yra malloc().

O kas del nulio terminavimo, tai tu turbut kalbi apie string'a aprasyta kaip konstanta. Tokiu atveju kompiliatorius prides gale nuli, bet jo atveju tas stringas nera atskirai aprasytas kaip konstanta.

Placiau:
http://stackoverflow.com/questions/10943033/why-are-strings-in-c-usually-terminated-with-0

Ir neveltui visada reikia prideti nuli, jei naudoji tokius kaip strcpy() ar pan.
 USART mega328p
PranešimasParašytas: 2016 10 03, 23:00 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Digix
VIP narys
VIP narys
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Socrates rašo:
Na as ir sakiau: tikrini kol ateis 0, bet niekada jo nesiunti.

Masyvui tu nurodei rodykle i belekokia vieta atminty. Galiausiai rasysi rasysi ir nulush tavo programa.
Masyvui reikia isskirti atminti. Pasidomek malloc().


tu cia klysti:

iskirti nieko nereikai nes viskas iskiriama cia:
eilute("gpio.write(4,gpio.LOW)");

sita funkcija perduoda pointeri i masyva "gpio.write(4,gpio.LOW)" kurio gale yra nulis

tik kadangi scia yra atmega o ne arm tai masyvas yra ne ram o flash tipo atmintyje i kuria reikia kreptis skirtingomis komandomis nei adresuojant ram.

man isvis stebina kaip siuo atveju isvis kazkas spausdinama nes nera nieko pamineta apie flash atminti.

funkcijsoe deklaracijoje turetu buti tai kazkaip nurodyta

galbut
void eilute(flash unsigned char *data )
 Re: USART mega328p
PranešimasParašytas: 2016 10 03, 23:05 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Digix
VIP narys
VIP narys
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
pcwortex rašo:

Tai man visa laika spausdina gpio.write(4,gpio.HIGH)
Bet nespausdina gpio.write(4,gpio.LOW) ir nesuprantu, kodel, gal kas galit patarti, kur problema


labai keista situacija nes neisku kodel tau cia isvis kazkas spaudinama kai neturetu buti beveik nieko

pounterio deklaracijoje turetu buti kazkas tokio

flash unsigned char *data
arba
cosnt unsigned char *data

prikalusomai nuo naudojamo kompiliatoriaus
 USART mega328p
PranešimasParašytas: 2016 10 03, 23:14 Pranešti apie taisyklių pažeidimą Atsakyti su citata
R2D2
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Socrates rašo:
R2D2 rašo:
Socrates rašo:
Geras kompiliatorius tada. As tokio nelabai zinau...


Bet koks C kompiliatorius tą padaro šiaip.


Na tada as atsilikes. Nes siaip aprasius rodykle, tai ji rodys betkur i atminti ir ten nebutinai bus nuliai. Ypac jeigu pataikysi kurnors, kur jau buvo rasyti duomenys anksciau. Neveltui yra malloc().

O kas del nulio terminavimo, tai tu turbut kalbi apie string'a aprasyta kaip konstanta. Tokiu atveju kompiliatorius prides gale nuli, bet jo atveju tas stringas nera atskirai aprasytas kaip konstanta.

Placiau:
http://stackoverflow.com/questions/10943033/why-are-strings-in-c-usually-terminated-with-0

Ir neveltui visada reikia prideti nuli, jei naudoji tokius kaip strcpy() ar pan.


Nu ir nereikia atskirai aprašinėt, nes kompiliatorius tai padaro.
Ir išvis čia patarinėti naudot malloc(), tai ką žinau... Žmogus nori antrą eilutę pamatyt, kai vieną jau mato. Tai akivaizdu užstringa tarpe tarp jų.
 Re: USART mega328p
PranešimasParašytas: 2016 10 03, 23:16 Pranešti apie taisyklių pažeidimą Atsakyti su citata
R2D2
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Digix rašo:
pcwortex rašo:

Tai man visa laika spausdina gpio.write(4,gpio.HIGH)
Bet nespausdina gpio.write(4,gpio.LOW) ir nesuprantu, kodel, gal kas galit patarti, kur problema


labai keista situacija nes neisku kodel tau cia isvis kazkas spaudinama kai neturetu buti beveik nieko

pounterio deklaracijoje turetu buti kazkas tokio

flash unsigned char *data
arba
cosnt unsigned char *data

prikalusomai nuo naudojamo kompiliatoriaus


visai nekeista, nes kompiliatorius pasirūpina, kad tie stringai gulėtų RAMe...
 Re: USART mega328p
PranešimasParašytas: 2016 10 03, 23:49 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Digix
VIP narys
VIP narys
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
R2D2 rašo:
Digix rašo:
pcwortex rašo:

Tai man visa laika spausdina gpio.write(4,gpio.HIGH)
Bet nespausdina gpio.write(4,gpio.LOW) ir nesuprantu, kodel, gal kas galit patarti, kur problema


labai keista situacija nes neisku kodel tau cia isvis kazkas spaudinama kai neturetu buti beveik nieko

pounterio deklaracijoje turetu buti kazkas tokio

flash unsigned char *data
arba
cosnt unsigned char *data

prikalusomai nuo naudojamo kompiliatoriaus


visai nekeista, nes kompiliatorius pasirūpina, kad tie stringai gulėtų RAMe...


neturetu kompiliatorius daryti tokios nesamones, nes nera jokio reikalo tu stringu kisti i labai mizerna ram jei jie neskirti ketimui ir ji eikvoti be jokio reikalo.

jei nori kas stringas butu padetas i ram reikia specialiai nurodyti pvz:

char text[] (arba text*) = " kazkoks tekstas";
 Re: USART mega328p
PranešimasParašytas: 2016 10 04, 03:01 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Socrates
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Digix rašo:
R2D2 rašo:
Digix rašo:
pcwortex rašo:

Tai man visa laika spausdina gpio.write(4,gpio.HIGH)
Bet nespausdina gpio.write(4,gpio.LOW) ir nesuprantu, kodel, gal kas galit patarti, kur problema


labai keista situacija nes neisku kodel tau cia isvis kazkas spaudinama kai neturetu buti beveik nieko

pounterio deklaracijoje turetu buti kazkas tokio

flash unsigned char *data
arba
cosnt unsigned char *data

prikalusomai nuo naudojamo kompiliatoriaus


visai nekeista, nes kompiliatorius pasirūpina, kad tie stringai gulėtų RAMe...


neturetu kompiliatorius daryti tokios nesamones, nes nera jokio reikalo tu stringu kisti i labai mizerna ram jei jie neskirti ketimui ir ji eikvoti be jokio reikalo.

jei nori kas stringas butu padetas i ram reikia specialiai nurodyti pvz:

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.
 USART mega328p
PranešimasParašytas: 2016 10 04, 09:11 Pranešti apie taisyklių pažeidimą Atsakyti su citata
R2D2
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Todėl reikia nusilenkti kompiliatorių kūrėjams, kad sugeba padaryti tokius stebuklus.

O kažkas supranta ar nesupranta kaip kompiliatorius dirba, tai jau OFFTOPIC.
Pradėti naują temą  Atsakyti į pranešimą Pereiti prie 1, 2  Toliau
 
Forumo sistema: phpBB
 „Google“ paieška forume
 Kas naujesnio?
 Naujos temos forume

Global electronic components distributor – Allicdata Electronics

Electronic component supply – „Eurodis Electronics“

LOKMITA – įvairi matavimo, testavimo, analizės ir litavimo produkcija

Full feature custom PCB prototype service

GENERAL FINANCING BANKAS

Mokslo festivalis „Erdvėlaivis Žemė

LTV.LT - lietuviškų tinklalapių vitrina

„Konstanta 42“

Technologijos.lt

Buitinė technika ir elektronika internetu žemos kainos – Zuza.lt

www.esaugumas.lt – apsaugok savo kompiuterį!

PriedaiMobiliems.lt – telefonų priedai ir aksesuarai

Draugiškas internetas

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
Reklama
‡ 1999– © Elektronika.lt | Autoriaus teisės | Privatumo politika | Atsakomybės ribojimas | Turinys | Reklama | Kontaktai LTV.LT - lietuviškų tinklalapių vitrina
Script hook v, Openiv, Menyoo
gta5mod.net
FS25 Mods, FS25 Tractors, FS25 Maps
fs25mods.lt
Optical filters, UV optics, electro optical crystals
www.eksmaoptics.com
Reklamos paslaugos
SEO sprendimai

www.addad.lt
Elektroninių parduotuvių optimizavimas „Google“ paieškos sistemai
www.seospiders.lt
FS22 mods, Farming simulator 22 mods,
FS22 maps

fs22.com
Reklama


Reklama