forum.mcontrollers.com - hlavní stránka forum.mcontrollers.com - fórum

 

.: fórum - hlavní stránka :.
Technology Stronghold by Rudolf Vesely
How to build Microsoft System Center hosted cloud series
FAQFAQ HledatHledat Seznam uživatelůSeznam uživatelů Uživatelské skupinyUživatelské skupiny RegistraceRegistrace
ProfilProfil StatistikaStatistika Soukromé zprávySoukromé zprávy PřihlášeníPřihlášení

 
Generátor: Generovaní sinusového a trojúhelníkového průběhu
Jdi na stránku 1, 2, 3, 4, 5  Další
 
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> AVR
 
hypnoz
Anonymní





PříspěvekZaslal: 28 duben 2013, 11:59    Předmět: Generátor: Generovaní sinusového a trojúhelníkového průběhu Citovat

Dobre poledne. Jsem zacatecnik a potreboval bych poradit s programem pro generovani sinusoveho a trojuhelnikoveho prubehu (cele zadani viz. priloha).

Tady je cast meho programu (DALE SI NEVIM RADY):

#include <avr/io.h> //vloz knihovnu vstupu a vystupu (PIN,DDR,PORT)
#define F_CPU 20000000UL //f==20MHz

int main(void)
{
//DDRD = 0x04; //vystup pro tlacitko
DDRB = 0xFF; //vystup pro TLC7524C
sinu(); //pri startu sinus
while (1)
{
//pracuje donekonecna
}
}

void sinu(void)
{

}

void troj(void)
{
OCR0A = 0x92; //(3/4)*50000==37500;37500/256==146;146==0x92
TCCR0A = 0xC1; //COM0A1,COM0A0,(correct PWM) WGM00
TCCR0B = 0x0C; //WGM02,(/256)CS02

if((TIFR & 0x01)==1)
{
TIFR=TIFR | 0x01; //nuluje registr TIFR (zapsanim 1)
while (1)
{
troj();
}
}
}

Potreboval bych vysvetlit princip techto dvou prubehu + zakladni vyuziti v beznem zivote + vzorecky potrebne pro tabulku SINu. Nebo jestli je i jina moznost, rad se priucim. Zkracene: Zajima me VSE tykajici se teto problematiky. Predem dekuji.

P.S.: Prosim neposilejte mi sem jiz vypracovane reseni. To mi NIC NEDA !!!

Arrow administrator: přejmenováno z "GENERATOR - SIN a TROJ"



zad.jpg
 Komentář:

Stáhnout
 Soubor:  zad.jpg
 Velikost:  213.51 kB
 Staženo:  348 krát

Návrat nahoru
 

 
Martin
ATmega pouzivatel
ATmega pouzivatel


Založen: 5.1.2008
Příspěvky: 1457

PříspěvekZaslal: 29 duben 2013, 19:37    Předmět: Citovat

Vazim si Tvoju snahu o samostatny pristup.

Tak v prvom rade, ten program fungovat nebude spravne, lebo ty jeden krat zavolas funkciu sinu() a potom sa ti uz program zasekne v nekonecnej slucke.
Skus na to ist takto:

kód:


#define TRUE 255
#define FALSE 0
#define MAX_KROK 1000 // ak bude Casova Zakladna nastavena na hodnotu 100us, potom bude perioda signalu 100ms, co zodpoveda 10Hz.
// Ak ma byt frekvencia vystupneho signalu napr 50kHz, potom napriklad pri MAX_KROK = 10 treba nastavit casovu zakladnu na hodnotu 2us

void fn_inicializacie(void);
uint8_t fn_test_cz(void); // funkcia, ktora vrati TRUE ak nastal okamih casoveho kvanta, napriklad 100us
void fn_generuj_jeden_krok_sinusu(uint16_t krok);
fn_generuj_jeden_krok_trojuholnika(uint16_t krok);
uint8_t fn_tlacitko(void); // funkcia, ktora vracia po kazdom stlaceni na striedacku TRUE a FALSE. Funckia tiez obsahuje vsetky casove osetrenia proti zakmitom.

uint16_t krok = 0;
uint8_t tl_sinus = TRUE;

main()
{
   fn_inicializacie();
   while(1) {
      if  (fn_test_cz() == TRUE) {
         tl_sinus = fn_tlacitko();
        if (tl_sinus) fn_generuj_jeden_krok_sinusu(krok);
        else fn_generuj_jeden_krok_trojuholnika(krok);

         // ohranicenie hodnoty premennej krok
         krok = krok + 1;
         if (krok > MAX_KROK) krok = 0;
       }
   }
}


"jeden_krok_"znamena, ze v jednom casovom kvante ktore je definovane vysledkom funkcie fn_test_cz() spravis na vystupe jeden krok hodnoty z priebehu.

Oni ti v tom zadani nepisu, kolkymi krokmi ma byt ten vystupny signal aproximovany. Zpoza DA prevodnika VZDY polezie signal, ktory bude mat schody a rozdiel medzi dvoma najblizsimi schodmi nemoze byt principialne mensi, ako 1/256 UvystMAX. Ale rozdiel moze byt aj vacsi, to zavisi od zadania. V kazdom pripade, generovat trojuholnik s maximalnou jemnostou pri najrychlejsej zadanej zmene, t.j. pocas 1/4T vygenerovat 256 hodnot a to za cas 20us* 1/4 = 5us sa procesorom taktovanym 20MHz jednoducho neda. Pri 20MHz za 5us mcu spravi teoreticky maximalne 100 instrukcii, ak bude robit iba presuny v ramci registrov. To vsak na 256 zmien vystupnej hodnoty za tento cas jednoducho nestaci. Ale kludne moze byt trojuholnik generovany len 10 aproximacnymi hodnotami. Toto sa este veduceho opytaj, ci 50kHz je "frekvencia" jednej zmeny na vystupe DA alebo frekvencia vystupneho signalu. Ak plati b) potom z neho vymackni minimalny pocet tych aproximacii.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
hypnoz
Anonymní





PříspěvekZaslal: 01 květen 2013, 14:19    Předmět: Citovat

Diky za odpoved. Tak ta frekvence je pro vystupni signal tedy varianta b). Kdyz si mluvil o aproximaci jakou mi doporucujes pro SIN a pro TROJ prubehy?(minimalni pocet hodnot v tabulce)
Návrat nahoru
 

 
hypnoz
Anonymní





PříspěvekZaslal: 01 květen 2013, 14:23    Předmět: dodatek Citovat

A kdyz si psal: ak bude Casova Zakladna nastavena na hodnotu 100us, potom bude perioda signalu 100ms, co zodpoveda 10Hz.

Jak si nastavil casovou zakladu? co to je? Myslis tim T=1/f; T=1/20 000 000; T=500us

Diky.
Návrat nahoru
 

 
Martin
ATmega pouzivatel
ATmega pouzivatel


Založen: 5.1.2008
Příspěvky: 1457

PříspěvekZaslal: 01 květen 2013, 16:08    Předmět: Citovat

precitaj si tuto diskusiu, pred casom sa to tu rozoberalo.

http://forum.mcontrollers.com/viewtopic.php?p=21577#21577
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
hypnoz
Anonymní





PříspěvekZaslal: 01 květen 2013, 16:25    Předmět: Citovat

Tak tam sem to tezce nepochopil... Je tam toho moc Sad Mohl by si mi prosim na predesle otazky odpovedet ty sam tak, abych to pochopil? Very Happy

Diky.
Návrat nahoru
 

 
Martin
ATmega pouzivatel
ATmega pouzivatel


Založen: 5.1.2008
Příspěvky: 1457

PříspěvekZaslal: 01 květen 2013, 16:44    Předmět: Citovat

Obkresli kod z mojho prispevku z 06 leden 2013, 16:02

a vloz si do casti, kde si mas vlozit svoj kod, kod ktory bude vzdy generovat prave jednu hodnotu na DA vystupe.

ja Ti to jednoduchsie napisat neviem ako som to napisal vo svojich prispevkoch v tej diskusii. Smile

Ak Ta aj zaujima ako to funguje, nastuduj a vyskusaj si moje prispevky v tej diskusii pred tym datumom. Su tam aj komentare k jednotlivym riadkom. Neviem, co by som k tomu este mohol dodat. Snad len to, ze Ti drzim palce.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
AB
Profesionál
Profesionál


Založen: 24.2.2010
Příspěvky: 419

PříspěvekZaslal: 02 květen 2013, 10:48    Předmět: Citovat

citace:
Kdyz si mluvil o aproximaci jakou mi doporucujes pro SIN a pro TROJ prubehy?(minimalni pocet hodnot v tabulce)

Nejlépe je nejprve zjistit maximální počet vzorků za periodu který program zvládne.
U sinusového průběhu 41,67 kHz trvá jedna perioda 1000000/41670 = 24 mikrosec.

Zkusil jsem zápis jednoho vzorku v přerušení.
kód:
uint8_t sin_tab[16]={1,2,3,4,5,6,7,8};
ISR (TIMER0_OVF_vect)
{
static uint8_t i=0;
   PORTB = sin_tab[(i & 0x00001111)];
   i++;
}

Provedení tohoto kódu trvá asi 2,5 us. (včetně skoku do a z přerušení)
Do jedné periody bychom takto mohli zapsat max. 24/2,5 = 9 vzorků.
Pro zjednodušení bychom zvolili přerušení každé 3 us tj. 8 vzorků na periodu.

Ale 8 vzorků na periodu je málo (4 na půlperiodu!).
Nemám s tím praktické zkušenosti, ale myslím že by bylo potřeba aspoň 16, lépe 32 vzorků na periodu aby signál trochu vypadal.
Zrychlit kód můžeme napsáním obsluhy přerušení v asembleru. (nezkoušel jsem)
Nebo můžeme napsat kód do hlavní smyčky (nepoužít přerušení)
kód:
 int main(void)
{
uint8_t i=0;

  while(1)
   {
      PORTB = sin_tab[i];
      i++;
      if (i==16) i=0;
   }

Tady mi vyšel jeden běh smyčky za 0,7 us.
(Tato doba ale může záviset na překladači. Je třeba zkontrolovat a doladit v simulátoru.)
Po doplnění na 0,8 us (aby perioda 24 us byla tímto číslem dělitelná) dostaneme 30 vzorků na periodu.

Je vidět, že kmitočet 41 kHz už přináší určité problémy.

Berte prosím všechny časy s rezervou, dělal jsem jenom rychlé zkoušky v simulátoru Avrstudia.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Radius
Profesionál
Profesionál


Založen: 22.2.2013
Příspěvky: 475

PříspěvekZaslal: 02 květen 2013, 19:45    Předmět: Citovat

Taky je možné nemít pevný počet vzorků na periodu. Provede se to velmi jednoduše pomocí fázového akumulátoru. Funkce SINGEN() se volá s konstatní periodou a výstupní frekvence je lineárně zavislá na parametru f.

int SINGEN(int f)
{
static int A=0; // A je akumulator faze
const int SIN_LUT[]={ }; // tabulka sinus x

A=A+f; // posun faze

return SIN_LUT[A];
}


Takhle jsem to napsal jen pro ilustraci, v praxi se počet členů tabulky omezí a adresuje se jen několika horními bity fázového akumulátoru.
Dále je pak vhodné upravit výstup D/A vhodnou dolní propustí.

_________________
x51 , ARM , XILINX
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovy WWW stránky
 

 
hypnoz
Anonymní





PříspěvekZaslal: 03 květen 2013, 12:55    Předmět: frekvence Citovat

Diky vsem. Jeste bych se rad ujisil, ze spravne pocitam frekvenci na vystupu... Muzu pouzit vzorec: f(PWM)=f(clk)/(N*256) nebo radeji f(PWM)=f(clk)/(N*(OCR0A-1)) ???
A muj druhy dotaz. Je rozdil jestli pouziji preruseni nebo skok do VOID radek? Ovlivni to neco? Myslim napr. : Program bezi a dojde ke shode TCNT0 s OCR0A. Je lepsi udelat:

if((TIFR & 0x01)==1) //TCNT0==OCR0A?
{
i2();
}
void i2()
{
TIFR=TIFR | 0x01; //nuluje registr TIFR (zapsanim 1)

}

NEBO

ISR TIMER0_COMPA_vect
{
TIFR=TIFR | 0x01; //nuluje registr TIFR (zapsanim 1)
}

Co myslite?
Návrat nahoru
 

 
Radius
Profesionál
Profesionál


Založen: 22.2.2013
Příspěvky: 475

PříspěvekZaslal: 04 květen 2013, 0:10    Předmět: Citovat

ad bod 2. Za mě raději použít interrupt - mcu může dělat i něco jinýho a takhle bys ho bloknul jen v jedný úloze.
_________________
x51 , ARM , XILINX
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovy WWW stránky
 

 
hypnoz
Anonymní





PříspěvekZaslal: 04 květen 2013, 11:37    Předmět: PROG Citovat

No ja to zkusil udelat nasledovne, ale nevim, zda je spravne nastaven registr OCR0A. V komentech jsou i vypocty, tak na to prosim nekdo mrknete. Dekuji.


kód:
#define F_CPU 20000000UL      //zakladni frekvence
#include <avr/io.h>            //input/output

unsigned char sinu  [32] = {127,138,149,160,171,182,193,205,      //127-205
                     205,193,182,171,160,149,138,127,      //205-127
                     127,116,105,94,83,72,61,49,         //127-49
                     49,61,72,83,94,105,116,127};      //49-127
unsigned char troj  [20] = {0,12,24,36,48,      //0-48
                     60,71,82,93,103,      //60-103
                     114,125,136,147,154,      //114-154
                     124,93,62,31,0,};   //124-0
unsigned char i=0, y=0;

void sinu1()
{
   TCCR0A = 0;
   TCCR0B = 0;
   /* 20000000/(1*256)=78125;78125/256=305;41670/305=137 */
   OCR0A = 0x89;      //137
   /* T0:Fast PWM;/1 */
   TCCR0A |= (1<<0)|(1<<1);
   TCCR0B |= (1<<3)|(1<<0);
   
   while (1)
   {
   if((TIFR & 0x01)==1)      //TCNT0==OCR0A?
      {
         i1();
      }
   /*ZMENA SIGNALU PO STISKNUTI TLACITKA:*/      
      if(PORTD==0x7B)      //je zmacknute tlacitko?
      {
         PORTB = 0;      //signal 0
         PORTD = 0x7F;      //zadne tlacitko neni sepnuto
         troj1();
      }
   }
}

void i1()
{
         TIFR=TIFR | 0x01;      //nuluje registr TIFR (zapsanim 1)
         PORTB = sinu[i];      //hodnota z tabulky
         i++;
         if (i==31)
         {
            i=0;
         }
}

void troj1()
{
   TCCR0A = 0;
   TCCR0B = 0;
   /* 20000000/(1*256)=78125;78125/256=305;50000/305=164 */
   OCR0A = 0xA4;      //164
   /* T0:Fast PWM;/1 */
   TCCR0A |= (1<<0)|(1<<1);
   TCCR0B |= (1<<3)|(1<<0);
   
   while (1)
   {
   if((TIFR & 0x01)==1)      //TCNT0==OCR0A?
      {
         i2();
      }
   /*ZMENA SIGNALU PO STISKNUTI TLACITKA:*/      
      if(PORTD==0x7B)      //je zmacknute tlacitko?
      {
         PORTB = 127;      //signal 0
         PORTD = 0x7F;      //zadne tlacitko neni sepnuto
         sinu1();
      }
   }
}

void i2()
{
         TIFR=TIFR | 0x01;      //nuluje registr TIFR (zapsanim 1)
         PORTB = troj[y];      //hodnota z tabulky
         y++;
         if (y==24)
         {
            y=0;
         }
}

int main(void)
{   
   DDRB = 0xFF;      //vystup pro signal
   DDRD = 0x7B;      //vstup pro tlacitko (PD2)
   PORTD = 0x7F;      //zadne tlacitko neni sepnuto
   sinu1();
}


Jde mi predevsim o zkontrolovani chyb + jestli mate nekdo moznost to otestovat, byl bych velice rad... Ale uplne nejvic mi jde o vypocet OCR0A, ktery ovlivnuje to, jak rychle jsou posilany hodnoty z tabulek na PORTB. Bylo mi receno ze prave toto ovlivnuje vystupni frekvenci, ktera ma byt u SINUS = 41670 Hz a u TROJUHEL = 50000 Hz.

Predem dekuji za odpovedi a preji hezky zbytek dne.
Návrat nahoru
 

 
hypnoz
Anonymní





PříspěvekZaslal: 04 květen 2013, 13:29    Předmět: dodatek Citovat

A jeste me zajima... Pokud ma byt vystupni frekvence TROJ signalu 41670Hz znamena to, ze perioda signalu = 20us? Ze vstahu: T=1/f;T=1/41670 ??? Diky.
Návrat nahoru
 

 
Martin
ATmega pouzivatel
ATmega pouzivatel


Založen: 5.1.2008
Příspěvky: 1457

PříspěvekZaslal: 04 květen 2013, 13:36    Předmět: Re: PROG Citovat

Program by sa Ti po chvili zrutil, lebo volas funkciu z funkcie a stale dookola bez navratu z funkcie, takze po konecnom case pretecie zasobnik z navratovych adries a bude to Smile

kód:

void sinu1()
{
    // ...
   while (1)


toto while je vyslovene vrazende. Uz nikdy nebudes moct obsluzit casovu slucku.

kód:

   /*ZMENA SIGNALU PO STISKNUTI TLACITKA:*/      
      if(PORTD==0x7B)      //je zmacknute tlacitko?


toto urcite netestuje stav tlacitka. Stav vstupu hladaj v registri PIND
kód:

void i1()
{
         TIFR=TIFR | 0x01;      //nuluje registr TIFR (zapsanim 1)
         PORTB = sinu[i];      //hodnota z tabulky
         i++;
         if (i==31)
         {
            i=0;
         }
}
   while (1)


zase nejaka divna nekonecna slucka

Tak ja to skusim (ospravedlnujem sa) znova na zaklade mojho prispevku
z z 06 leden 2013, 16:02.
kód:

// projekt pre demonstrovanie pouzitia citaca ako casovej zakladne vsektych dejov v mcu
// ATmega8, CLK 8MHz, prekladac GCC, AVRstudio 4.18, -Os

#include <avr/io.h>
#include <stdint.h>

// Definice makier s parametrami
#define SET(BAJT,BIT) ((BAJT) |= (1<<(BIT)))
#define TST(BAJT,BIT) ((BAJT) & (1<<(BIT)))

#define TRUE 0x00
#define FALSE 0xff
#define SINUS TRUE
#define TROJUHOLNIK FALSE
#define PREDVOLBA_CZ_SINUS 7 // spravnost hodnoty predvolby teraz neskumam, treba si ju vypocitat podla Tvojich potrieb
#define PREDVOLBA_CZ_TROJUHOLNIK 5 // spravnost hodnoty predvolby teraz neskumam, treba si ju vypocitat podla Tvojich potrieb

#define TLACITKO_BIT  5 // nech je tlacitko na piatom bite
#define TLACITKO_PORT  PIND // nech je tlacitko na porte D
#define TLACITKO_SMER_PORT DDRD // nech je tlacitko na porte D
#define MAX_VZORKY_TROJUHOLNIK 20
#define MAX_VZORKY_SINUS 32
#define PORT_PRE_DA PORTB
#define SMER_PORT_PRE_DA DDRB

uint8_t generuj_signal = SINUS;
uint8_t stav_tlacitka_new,  stav_tlacitka_old, i; // zmestili by sa do jedneho bajtu, ale spracovanie v dvoch bajtoch usetri strojovy cas.

// predpokladajme, ze vstup na tlacitko je osetreny nasledovne:
// medzi pinom a Ucc je R = 10kohm
// a medzi pinom a GND je kondenzator 100n-1uF
// tym povazujem zakmity tlacitka za vyriesene


unsigned char sinu  [MAX_VZORKY_SINUS] = {127,138,149,160,171,182,193,205,      //127-205
                     205,193,182,171,160,149,138,127,      //205-127
                     127,116,105,94,83,72,61,49,         //127-49
                     49,61,72,83,94,105,116,127};      //49-127
unsigned char troj  [MAX_VZORKY_TROJUHOLNIK] = {0,12,24,36,48,      //0-48
                     60,71,82,93,103,      //60-103
                     114,125,136,147,154,      //114-154
                     124,93,62,31,0,};   //124-0

int main(void)
{
   // ========= zaciatok inicializacie ===========
   OCR2 = PREDVOLBA_CZ_SINUS;
   SET(TCCR2,WGM21);
   SET(TCCR2,CS22); // predvolbu delicky treba tiez tak ako PREDVOLBA_CZ... upravit podla aktualnych potrieb
   RES(TLACITKO_SMER_PORT,TLACITKO_BIT);
   SMER_PORT_PRE_DA = 0xff; // port pre DA treba nastavit ako vystupny

   if (TST(TLACITKO_PORT,TLACITKO_BIT)) stav_tlacitka_new = TRUE;
   else stav_tlacitka_new = FALSE;
   stav_tlacitka_old = stav_tlacitka_new;
   // ========= koniec inicializacie ===========

   while(1) {
      if (TST(TIFR,OCF2)) {
         SET(TIFR,OCF2); // reset bitu priznaku pretecenia dame hned
                                   // za testovaciu podmienku a nie niekde do
                                   // prdaka, kde si uz po pol roku prehliadania
                                   // zdrojovych textov nespomenieme ze co tym
                                   // nastavenim jednotky v bite casovaca chcel
                                   // autor vobec povedat.

// kvoli testovaniu stavu tlacitka nebudeme nikde skakat,
// lebo sice skok na funkciu je efektny a prehladny,
// ale trochu nam zabera zo strojoveho casu
// co pri potrebe generovat 50kHz trojuholnika je uz citit.
// zaroven je to uloha na par riadkov,
// takze nam moc nezneprehladni kod
         // =========== zaciatok testovania tlacitka ===========
         if (TST(TLACITKO_PORT,TLACITKO_BIT)) stav_tlacitka_new = TRUE;
         else stav_tlacitka_new = FALSE;
         // stav generovania signalu sa zmeni len pri nabeznej hrane stlacenia tlacitka
         if (stav_tlacitka_new == FALSE) && (stav_tlacitka_old == TRUE)) {
            if (generuj_signal == SINUS) {
               generuj_signal = TROJUHOLNIK;
               // trojuholnik moze mat inu periodu ako sinus
               OCR2 = PREDVOLBA_CZ_TROJUHOLNIK;
            }
            else {
               generuj_signal = SINUS;
               // sinus moze mat inu periodu ako trojuholnik
               OCR2 = PREDVOLBA_CZ_SINUS;
            }
            // vynulujeme pomocne pocitadlo, aby priebeh zacinal vzdy od zaciatku
            i = 0;
         }
         stav_tlacitka_old = else stav_tlacitka_new;
         // =========== koniec testovania tlacitka ===========

         // ========= zaciatok generovania vzorky ===========
         // volba spravnej funkcie na zaklade stavu "tlacitka"
         if (generuj_signal == SINUS) {
            PORT_PRE_DA = sinu[i];
            i++;
            if (i >= MAX_VZORKY_SINUS) i = 0;
         }
         else {
            PORT_PRE_DA = troj[i];
            i++;
            if (i >= MAX_VZORKY_TROJUHOLNIK) i = 0;
         }
         // ========= koniec generovania vzorky ===========

      }
   }

   return;
}


Program je (myslim si Smile ) prehladny, bez zbytocnych skokov niekde kde to uz netreba a tym aj maximalne rychly. Program som netestoval, to necham na velacteneho citatela. Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
AB
Profesionál
Profesionál


Založen: 24.2.2010
Příspěvky: 419

PříspěvekZaslal: 04 květen 2013, 21:12    Předmět: Citovat

citace:
A jeste me zajima... Pokud ma byt vystupni frekvence TROJ signalu 41670Hz znamena to, ze perioda signalu = 20us? Ze vstahu: T=1/f;T=1/41670 ??? Diky.


Kup si lepší kalkulačku.
1/41670 = 2,3998080153587712982961363090953e-5
= 23,998 us
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

Zobrazit příspěvky z předchozích:   
Zobrazit předchozí téma :: Zobrazit následující téma  
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> AVR Časy uváděny v GMT + 2 hodiny
Jdi na stránku 1, 2, 3, 4, 5  Další
 
Strana 1 z 5
Přejdi na:  
Můžete přidat nové téma do tohoto fóra.
Můžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Můžete k příspěvkům připojovat soubory
Můžete stahovat a prohlížet přiložené soubory
 



Num Lock Holder - app to hold Numlock
Copyright © 2017 Rudolf Veselý, mcontrollers.com.
Je zakázáno používat části tohoto webu bez souhlasu autora. || Powered by phpBB © 2001, 2002 phpBB Group - with RedSquare DoubleJ(Jan Jaap)