Kazalo po Svet elektronike forumu Svet elektronike
Revija za prave elektronike
 
AlbumAlbum   Pomoč pogostih vprašanjPomoč pogostih vprašanj   IščiIšči   Seznam članovSeznam članov   Skupine uporabnikovSkupine uporabnikov   Registriraj seRegistriraj se 
 Tvoj profilTvoj profil   Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil   PrijavaPrijava 

Codevision

 
Objavi novo temo   Odgovori na to temo    Kazalo po Svet elektronike forumu -> Digitalna elektronika
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
marsovc
Mojster


Pridružen/-a: Ned Feb 2004 16:43
Prispevkov: 22
Kraj: Ljubljana

PrispevekObjavljeno: Sre Jul 20, 2005 1:01 pm    Naslov sporočila: Codevision Odgovori s citatom

Zanima me ali se je že kdo spoprijel s programom Codevision avr c compiler? Ker jst mam eno tečavico?
_________________
Vem, da nič ne vem:)
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
Jan
Začetnik


Pridružen/-a: Sob Jul 2005 22:40
Prispevkov: 13

PrispevekObjavljeno: Pon Avg 01, 2005 2:37 pm    Naslov sporočila: Odgovori s citatom

Sem se...
Do not ask to ask just ask :D

Povej kaj te muči.
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
marsovc
Mojster


Pridružen/-a: Ned Feb 2004 16:43
Prispevkov: 22
Kraj: Ljubljana

PrispevekObjavljeno: Sre Avg 17, 2005 5:38 pm    Naslov sporočila: Debounce Odgovori s citatom

Kako bi prebral tipko in kako bi dobil debounce učinek?

LP

_________________
Vem, da nič ne vem:)
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
slawc
Profesionalec


Pridružen/-a: Tor Jan 2004 11:41
Prispevkov: 102

PrispevekObjavljeno: Sre Avg 17, 2005 9:48 pm    Naslov sporočila: Odgovori s citatom

to pa ni tezava, ki bi bila odvisna od prevajalnika. Pomemben je pravilni algoritem. Tipka niha dolcen cas, kasneje se umiri. Stanje tipke moras veckrat prebrati, ko se dolocen cas stanje ne spreminja, se je zadeva umirila.
_________________
LP,
Slawc
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Jan
Začetnik


Pridružen/-a: Sob Jul 2005 22:40
Prispevkov: 13

PrispevekObjavljeno: Čet Avg 18, 2005 3:04 pm    Naslov sporočila: Odgovori s citatom

Lahko sprogramiraš debounce, če pa ti ni škoda enega pina prekinitve potem lahko narediš naslednje:

Koda:


________
        |
   INT1 |--------------------
        |                    |
        |                  -----
        |                  \   / 
        |                   \ /
        |                  ˘˘|˘˘
        |                    |1N4148
   PD.0 |--------------------o
        |                    |
        |                    |
        |                    |
        |                    |
        |             _-     |
    GND |-----------O˘  o----   
        |
        |
˘˘˘˘˘˘˘˘



Upam, da je shema dovolj razumljiva.

Koda v Cju je pa tu:
Koda:



unsigned char ScanKey()
{
if (!(PIND & 0x01))     return 0x01;
return NONE;
}


// interupt ki prebere tipke
interrupt [3] void int1_isr(void)
{
  delay_ms(10);
  Key = ScanKey();
}



Prekinitev je treba nastavit tako da se proži ob padcu napetosti
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
marsovc
Mojster


Pridružen/-a: Ned Feb 2004 16:43
Prispevkov: 22
Kraj: Ljubljana

PrispevekObjavljeno: Pon Sep 19, 2005 10:52 am    Naslov sporočila: timer0 Odgovori s citatom

Zivjo

Napisal sem program za časovno prekinitev s timer0 pa se mi zadeva nikakor ne odziva.

Nastavil sem registre, preddelilnik in opazoval TOV0 (vsaj mislim) pa sem želel da se neka spremenljivka povečuje. Kristal je 12 Mhz glede na nastavitve registrov sem izračunal da nja bi bila za kasnitev 0,1 sekunde.

Za pomoč se že v naprej zahvaljujem

// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Reinitialize Timer 0 value
counter = 0;
while (counter < 75) {
TCNT0 = 5;
TCCR0 = 0x03;
while ((TIFR & 0x01) == 0);
TCCR0 = 0;
TIFR = TIFR|0x01;
counter++;
a++;
};
}


// Global enable interrupts
#asm("sei")

while (1)
{
PORTB = a;
};
}

_________________
Vem, da nič ne vem:)
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
Jan
Začetnik


Pridružen/-a: Sob Jul 2005 22:40
Prispevkov: 13

PrispevekObjavljeno: Pon Sep 19, 2005 2:51 pm    Naslov sporočila: Odgovori s citatom

Emm sumljivo si ti to napisal...

Po moje moreš met kje kak void main(void)

potem pa narediš tako

Koda:
void main(void)
{

//inicializiraš porte pa to

//potem pa moreš še timer0 inicializirat

 // timer0
TCCR0=0x02;
TCNT0=0xff;    // tu nastavi tvoje vrednosti


// potem pa moraš še vklopit da se prekinitev sproži ko timer preide iz 0xff na 0x00


// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x05;



  while(1)
  {
  }
}



Upam da ti bo kaj pomagalo pa oprosti za pozen odgovor.. nisem gledal foruma...

LP Jan
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
marsovc
Mojster


Pridružen/-a: Ned Feb 2004 16:43
Prispevkov: 22
Kraj: Ljubljana

PrispevekObjavljeno: Tor Sep 20, 2005 9:08 pm    Naslov sporočila: problemčki Odgovori s citatom

Citiram:
/*****************************************************
Chip type : AT90S2313
Clock frequency : 12,000000 MHz
Memory model : Tiny
External SRAM size : 0
Data Stack size : 32
*****************************************************/

#include <90s2313.h>
#include <delay.h>
int counter = 0;
unsigned char a = 254;


interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
TCNT0 = 6;
if ((TIFR = TIFR & 0x01) == 1)
{
TIFR = 0;
a++;
}


}



void main(void)
{

PORTB=0xF7;
DDRB=0xFF;
PORTD=0x7F;
DDRD=0x7F;
TIMSK=0x02; //requirement (1)
TCCR0=0x03; // set prescale
TCNT0=0x06; // set counts
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
OCR1H=0x00;
OCR1L=0x00;
GIMSK=0x00;
MCUCR=0x00;
ACSR=0x80;
#asm("sei") // enable interrupts //requirement (3)

do
{
PORTB = a;
}while(1);
}



Ima morda kdo še kaj domišlije zakaj ta koda ne dela?

Hvala

_________________
Vem, da nič ne vem:)
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
marsovc
Mojster


Pridružen/-a: Ned Feb 2004 16:43
Prispevkov: 22
Kraj: Ljubljana

PrispevekObjavljeno: Sre Sep 21, 2005 6:26 am    Naslov sporočila: Odgovori s citatom

Zivjo

Sem prišel do rešitve in vam pišem da ne bo še kdo izgubil kakšno dopoldne brezveze. V zgorrnji kodi je vse prov le da je potrebno v prekinitvi pobrisati vse razen a++; . Ker program Codevision verjerno sam pobriše TOV0 bit in ga ni potrebno gledati ne brisati!!!

Hvala vam za pomoč, LP

_________________
Vem, da nič ne vem:)
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
denci
Začetnik


Pridružen/-a: Ned Nov 2005 16:38
Prispevkov: 18

PrispevekObjavljeno: Pon Maj 09, 2011 3:20 pm    Naslov sporočila: Odgovori s citatom

Tudi jaz imam eno vprašanje in sicer poskušam analizirati IR SIRC sprejemnik s pomočjo atmega88 in programskim orodjem codevision, pame zanima, kako sprožiti notranji timer s pomočjo neke spremembe stanja na vhodu.
Rabil bi zato, da bi sprejeti signal najprej zaznal in sprožil timer, nato bi timer vsakih 600us preverjal kaj se je zgodilo s sprejetim signalom in prebral kakšna tipka je bila pritisnjena (12 bitni sirc protokol).
Po moje bi bila na tak načina zadeva najpreprostejša, kaj mislite??

_________________
Če kaj ne veš, ne sramuj se vprašati!
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
Gustav
Profesionalec


Pridružen/-a: Pon Jun 2005 17:19
Prispevkov: 768

PrispevekObjavljeno: Tor Maj 10, 2011 5:20 pm    Naslov sporočila: Odgovori s citatom

denci je napisal/a:
Po moje bi bila na tak načina zadeva najpreprostejša, kaj mislite??


Z nekaj malega srece bos tako dobil ob isti pritisnjeni tipki vsakic malo drugacen rezultat. Protokol je lepo opisan, meri na sredini intervala, kjer naj bi bil nivo v enem ali drugem stanju, ne pa ravno na meji. Obenem ob stanju 1 se dodatno preveri, da ni sprejemnik defekten.
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
denci
Začetnik


Pridružen/-a: Ned Nov 2005 16:38
Prispevkov: 18

PrispevekObjavljeno: Sob Jul 09, 2011 11:13 am    Naslov sporočila: Odgovori s citatom

Zanima me nekaj, uporarabljam Atmega8 in program codevisionavr, pa me zanima, kako sedaj pri sprejemu ir signala izmeriti čas med rising edge in falling edge, da se na podlagi tega prepozna znak.
In kako je potem s frekvneco oddajnika, ali sprejem vzame samo en rissing edge in falling edge za en pulz ali vse vmesne in kako potem vedeti, do koliko je števec preštel med prvim in zadnjim pulzom??

_________________
Če kaj ne veš, ne sramuj se vprašati!
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
denci
Začetnik


Pridružen/-a: Ned Nov 2005 16:38
Prispevkov: 18

PrispevekObjavljeno: Tor Jul 12, 2011 12:31 pm    Naslov sporočila: Odgovori s citatom

Če je kdo delal s tem programom ali s pomočjo c jezika in atmega8 bi prosil, da mi pomaga, kajti na internetu je po forumih je kar nekaj primerov, vendar nobveden ni popoln in ne dela, pa tudi drugi potem pišejo da ne dela in podobno, tako da je zmešnjava, prosil bi za pomoč pri sprejemu signala ali lepo opisanem programu v c, predvsem pa najbolj enjostavnim.
Hvala!

_________________
Če kaj ne veš, ne sramuj se vprašati!
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
denci
Začetnik


Pridružen/-a: Ned Nov 2005 16:38
Prispevkov: 18

PrispevekObjavljeno: Tor Jul 19, 2011 9:38 am    Naslov sporočila: Odgovori s citatom

z uporabo interrupta bi bilo verjetno najboljše, proženje bi bilo ob vsaki spremembi fronte, vendar ne vem kako prepoznati, kdaj je nastopila zadnja fronta kdaj prva. če vemo da oddajnih zaniha s frekvenco, pri protokolu sony konkretno z cca 38kHz.
Tako da okrog tega sem malo skeptičen, lotiti s drugih primerov pa bi verjetno potreboval več časa, da razumem program, kot da se ga lotim kar sam.

_________________
Če kaj ne veš, ne sramuj se vprašati!
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
Jure
Urednik


Pridružen/-a: Pon Jan 2004 12:51
Prispevkov: 2132
Kraj: Ljubljana

PrispevekObjavljeno: Tor Jul 19, 2011 6:46 pm    Naslov sporočila: Odgovori s citatom

Denci,

za Codevision ti ne bom znal pomagati, pač pa nekaj drugega: ali si videl ta članek?

Lp
Jure
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo    Kazalo po Svet elektronike forumu -> Digitalna elektronika Časovni pas GMT + 1 ura, srednjeevropski - zimski čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
You cannot attach files in this forum
You cannot download files in this forum


Powered by phpBB © 2001, 2005 phpBB Group