AVR ledky

C,C++,C#

Moderátori: psichac, Moderátori

logarytmus
Okoloidúci
Okoloidúci
Príspevky: 42
Dátum registrácie: 10 Apr 2014, 17:29

AVR ledky

Príspevok od používateľa logarytmus » 16 Apr 2015, 17:17

mam napisany takyto program:

#include <avr/io.h>
#include <util/delay.h>

int main()
{
DDRB=0b11111111;

while(1)
{
PORTB=0b11111111;
while(PORTB!=0b10000000)
{
_delay_ms(400);
PORTB=PORTB*2;
}
while(PORTB!=0b00000000)
{
_delay_ms(400);
PORTB=PORTB/2;
}
}
}


No a chcem aby mi ledky ktore mam na vystupoch isli ako: zzzzzzzz,vzzzzzzz,vvzzzzzzz,vvvzzzzzz... a naspat ako vvvvvvvv,vvvvvvvz,vvvvvvzz,vvvvvzzz.... to prve mi ide ale ked idu ledky naspat tak idu iba po jednej ze ked sa zapne dalsia ta pred nou zhasne.

z=zapnuta , v= vypnuta
0

peterple
Ultimate člen
Ultimate člen
Príspevky: 2328
Dátum registrácie: 25 Jún 2013, 21:06
Bydlisko: Krajné
Vek: 57
Kontaktovať používateľa:

Re: AVR ledky

Príspevok od používateľa peterple » 16 Apr 2015, 18:14

čo si čakal? Zostala ti tam jedna jednotka v siedmom bite a ked to budeš posúvať doprava delením tak sa tam žiadna nemože objaviť. Tak si ten siedmi bit nastav do jednotky pomocou or a máš to.

Skús použiť aj simulátor, možno ti to bude jasnejšie.
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.

logarytmus
Okoloidúci
Okoloidúci
Príspevky: 42
Dátum registrácie: 10 Apr 2014, 17:29

Re: AVR ledky

Príspevok od používateľa logarytmus » 16 Apr 2015, 18:27

Prepac, ale dajako tomu nechapem mohol by si mi to napisat ako program co tam treba doplnit? Co mam zle?
0

peterple
Ultimate člen
Ultimate člen
Príspevky: 2328
Dátum registrácie: 25 Jún 2013, 21:06
Bydlisko: Krajné
Vek: 57
Kontaktovať používateľa:

Re: AVR ledky

Príspevok od používateľa peterple » 16 Apr 2015, 19:31

Ako program ti to ja nenapíšem. Možno sa niekto iný nájde. Dôvod je ten že nerozumieš princípu. Ak ti dám riešenie, princíp nepochopíš. Mal by som na teba dve otázky:
1. Môžem vedieť čomu z toho čo som napísal nerozumieš?
2. Už si si ten tvoj kód krokoval v simulátore?

Zle tam nemáš nič len ti tam niečo chýba.
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.

logarytmus
Okoloidúci
Okoloidúci
Príspevky: 42
Dátum registrácie: 10 Apr 2014, 17:29

Re: AVR ledky

Príspevok od používateľa logarytmus » 16 Apr 2015, 19:54

toto som nepochopil:
jedna jednotka v siedmom bite a ked to budeš posúvať doprava delením tak sa tam žiadna nemože objaviť. Tak si ten siedmi bit nastav do jednotky pomocou or a máš to.
a nie nesimuloval som to. po pravde neviem ako sa simuluje.
0

stanleyv
Pokročilý člen
Pokročilý člen
Príspevky: 738
Dátum registrácie: 14 Máj 2007, 00:00
Bydlisko: Trnava
Vek: 51

Re: AVR ledky

Príspevok od používateľa stanleyv » 16 Apr 2015, 19:57

V čom to píšeš? Ak AVRstudio, ten má priamo simulátor, ak verzia 4.19 a nižšie, prilinkuješ k tomu hapsim a máš aj vizualizáciu .....
0
Ak nakupuješ často na ebay, Banggood, Aliexpres a pod., tu sa zaregistruj a môžeš ušetriť:
https://www.bonusway.cz?r=6361768

„Jediná druhá šance, kterou máme, je udělat stejnou chybu podruhé.“
David Mamet

logarytmus
Okoloidúci
Okoloidúci
Príspevky: 42
Dátum registrácie: 10 Apr 2014, 17:29

Re: AVR ledky

Príspevok od používateľa logarytmus » 16 Apr 2015, 20:01

Pisem v avr 5.0 kde tam je simulator neviem ale vizualizaciu mam ked to napalim na atmegu 8 tak na vystupe mam ledky tak vidim
0

peterple
Ultimate člen
Ultimate člen
Príspevky: 2328
Dátum registrácie: 25 Jún 2013, 21:06
Bydlisko: Krajné
Vek: 57
Kontaktovať používateľa:

Re: AVR ledky

Príspevok od používateľa peterple » 16 Apr 2015, 20:07

na ledkách vidíš figu drevennú. Keď si nevieš predstaviť ako tam tie bity vo vnútri cvrlikajú. Prvá najdôležitejšia vec pre teba je naučiť sa používať simulátor.
Ja mám 6.0 tak ti to neviem presne nalinkovať. Určite to nájdeš keď zagoogliš. Ak nie ozvy sa. Nejako ta tam donavigujem.
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.

logarytmus
Okoloidúci
Okoloidúci
Príspevky: 42
Dátum registrácie: 10 Apr 2014, 17:29

Re: AVR ledky

Príspevok od používateľa logarytmus » 16 Apr 2015, 20:48

No tak uz som prisiel aj na ten simulator. Vidim jak to tam cvrlika ale stale neviem ako to spravit aby ked ide naspat tak postupne sa zapinala dalsia ledka a tie pred tym ostali zapnute.
0

peterple
Ultimate člen
Ultimate člen
Príspevky: 2328
Dátum registrácie: 25 Jún 2013, 21:06
Bydlisko: Krajné
Vek: 57
Kontaktovať používateľa:

Re: AVR ledky

Príspevok od používateľa peterple » 16 Apr 2015, 21:03

Fajn, Tak teraz k tomu postupu. Dufam že si si to krokoval a videl si pekne ako delenie dvoma posuva ten jeden bit vždy smerom doprava. A kedže chceš aby ten siedmy bit bol jednotkový treba tam tú jednotku nejako dostať. No a na to som ti poradil funkciu OR. Po googli ako sa v C robí bitový or (nie logický) a porozmýšlaj aká tam bude treba hodnota aby sa ti nastavil práve siedmi bit. Keď sa ti nechce rozmýšlať. Tak voľačo skús a krokuj si to. To potom pochopíš.
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.

logarytmus
Okoloidúci
Okoloidúci
Príspevky: 42
Dátum registrácie: 10 Apr 2014, 17:29

Re: AVR ledky

Príspevok od používateľa logarytmus » 16 Apr 2015, 21:28

okej, dakujem. Pochopil som funguje.
0

peterple
Ultimate člen
Ultimate člen
Príspevky: 2328
Dátum registrácie: 25 Jún 2013, 21:06
Bydlisko: Krajné
Vek: 57
Kontaktovať používateľa:

Re: AVR ledky

Príspevok od používateľa peterple » 16 Apr 2015, 21:31

Nemáš za čo. Urobil si si sám.
Bolo by fajn pre pospolitý ľud keby si sem dal konečné riešenie. Ale medzi značky code. nie len tak ako si to urobil prvý krát.
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.

logarytmus
Okoloidúci
Okoloidúci
Príspevky: 42
Dátum registrácie: 10 Apr 2014, 17:29

Re: AVR ledky

Príspevok od používateľa logarytmus » 16 Apr 2015, 21:54

Kód: Vybrať všetko

#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
	DDRB=0b11111111;
    while(1)        
    {
		PORTB=0b11111111;
		while (PORTB!=0b10000000)
		{
			_delay_ms(400);
			PORTB=PORTB*2;
		}
		while (PORTB!=0b11111111)
		{
			_delay_ms(400);
			PORTB=PORTB/2|0b10000000;
			
	}	
    }
}
0

peterple
Ultimate člen
Ultimate člen
Príspevky: 2328
Dátum registrácie: 25 Jún 2013, 21:06
Bydlisko: Krajné
Vek: 57
Kontaktovať používateľa:

Re: AVR ledky

Príspevok od používateľa peterple » 16 Apr 2015, 22:05

nemá to chybu, aj keď ja by som miesto delenia a násobenia použil bitové posuny doprava a doľava. Efektívnosť by mohla byť možno trochu lepšia, ak by to nezvládol optimalizovať kompilátor.

Násobenie a delenie AVR nemajú až tak moc hw implementované. Takže to potrebuje trochu kódu. Ale múdry kompilátor by mohol na to prísť že sa to dá previesť na rotácie, čo je jedna inštrukcia.
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.

Napísať odpoveď