Автор Тема: Какво е KC-1206  (Прочетена 27556 пъти)

spookyboy

  • Бил знаел какво е Мехатроника!
  • *****
  • Публикации: 103
    • Профил
Какво е KC-1206
« Отговор #15 -: Октомври 02, 2007, 02:52:22 pm »
@tommyboy Ами то писането на една такава програма не отнема повече от 5 мин., така че не виждам кое му е сложното :)

@INF1n1t За съжеление мозъка ми се е изкривил да мисли алгоритмично и това:counter=250;
  while (counter)
  {
   output_high(PIN_B1);
   delay=10000;
   delay_us(delay);
   output_low(PIN_B1);
   counter--;
  }
напрао ми бърка в очите, моля те изкарай го тоя delay = 10000; извън цикъла, че шсе побъркам ;)
Така и така не се променя, едно присвояване е достатъчно :)
Станьо - 20г. - извън чужбина

Methuselah

  • Вече знае какво е робот!
  • *****
  • Публикации: 67
    • Профил
Какво е KC-1206
« Отговор #16 -: Октомври 02, 2007, 09:47:50 pm »
Абе тия компилатори за различните мцу-та нямат ли оптимизатори?
Първо - оптимизатора би трябвало сам да го изкара от цикъла, и второ да забележи че не се променя и да го замени където трябва.
Разбира се - ако няма оптимизатор - тъпа "грешка"
Сещам се за една книжка за добър стил на програмиране в която имаше доста сериозни грешки предизвикане точно от неразбиране какво кога става и какво прави оптимизатора. Може да я кача - ако не за друго, то поне защото на почти всяка страница имаше весели случки.

INF1n1t

  • Бил знаел какво е Мехатроника!
  • *****
  • Публикации: 139
    • Профил
Какво е KC-1206
« Отговор #17 -: Октомври 02, 2007, 11:19:03 pm »
Абе вие сте ебаси хората, бе! Какво толкова му има...какво ти се е изкривил мозъка па на тебе. Дразнат ме тия истории, са тоя код съм го дал примерно, за какво трябва да се хващате са глупости. Разбирам да правя ядрени опити - не правя. Едно просто buzzer-че. Онзи код, който дадох бачка и лично съм го пробвал.

Methuselah, лично за gcc има си опции за това какво може и не може да прави оптимизатора и с цената на какво. За други компилатори не знам.
Иван Занев - град София

spookyboy

  • Бил знаел какво е Мехатроника!
  • *****
  • Публикации: 103
    • Профил
Какво е KC-1206
« Отговор #18 -: Октомври 03, 2007, 12:56:13 pm »
Цитат на: "INF1n1t"
Абе вие сте ебаси хората, бе! Какво толкова му има...какво ти се е изкривил мозъка па на тебе. Дразнат ме тия истории, са тоя код съм го дал примерно, за какво трябва да се хващате са глупости. Разбирам да правя ядрени опити - не правя. Едно просто buzzer-че. Онзи код, който дадох бачка и лично съм го пробвал.

Methuselah, лично за gcc има си опции за това какво може и не може да прави оптимизатора и с цената на какво. За други компилатори не знам.

Споко бе пич, не се нерви ;) Мене мозъка ми си е изкривен от практиката  :). Просто ти казвам че ще е по-красиво от програмистска гледна точка. Целта ми не е да се заяждам с тебе.
Станьо - 20г. - извън чужбина

DataMatrix

  • Заклет Роботостроител
  • *****
  • Публикации: 308
    • Профил
    • http://datamatrix-bg.net/
Какво е KC-1206
« Отговор #19 -: Октомври 03, 2007, 01:53:47 pm »
Ако толкова ви е за красотата айде
counter=250;
  while (counter)
  {
   output_high(PIN_B1);
   delay_us(10000);
   output_low(PIN_B1);
   counter--;
  }


Голяма работа, стига спорове. Работи ли - работи. Който не му харесва да си го преработи за него, без да го прави на световен проблем. Аз кодове не поствам, за да не се получават такива разправии.
Ето едно едно код-че от мене да разгадаете какво прави:
#include <16F84A.h>
#fuses XT,NOWDT,NOPROTECT,PUT
#use delay(clock=4000000)

void main()
{
 int k=0;
 disable_interrupts(GLOBAL);
 k=read_eeprom(0);
 for ( ; ; )
 {
  output_b(k);
  write_eeprom(0,k);
  if(k<15) k++;
  else k=0;
  delay_ms(1000);
 }
}
Димитър Бояджиев, гр. София

INF1n1t

  • Бил знаел какво е Мехатроника!
  • *****
  • Публикации: 139
    • Профил
Какво е KC-1206
« Отговор #20 -: Октомври 03, 2007, 08:27:46 pm »
Цитат на: "spookyboy"
Цитат на: "INF1n1t"
Абе вие сте ебаси хората, бе! Какво толкова му има...какво ти се е изкривил мозъка па на тебе. Дразнат ме тия истории, са тоя код съм го дал примерно, за какво трябва да се хващате са глупости. Разбирам да правя ядрени опити - не правя. Едно просто buzzer-че. Онзи код, който дадох бачка и лично съм го пробвал.

Methuselah, лично за gcc има си опции за това какво може и не може да прави оптимизатора и с цената на какво. За други компилатори не знам.

Споко бе пич, не се нерви ;) Мене мозъка ми си е изкривен от практиката  :). Просто ти казвам че ще е по-красиво от програмистска гледна точка. Целта ми не е да се заяждам с тебе.


 Извинявай, просто с друго впечатление останах.

  Но иначе за втория delay си прав, но което е интересното - работи и без него.
Иван Занев - град София

spookyboy

  • Бил знаел какво е Мехатроника!
  • *****
  • Публикации: 103
    • Профил
Какво е KC-1206
« Отговор #21 -: Октомври 03, 2007, 09:43:59 pm »
Според мен, заради голямата честота не се забелязва разликата, но мисля че ще се усети при по ниска от 50 Hz. И да не говоря празни приказки ето пример:

тук епсилон е времето за което контролера изпълнява функцията output_low(), което е достатъчно голямо, за да може да се чуе звукът при висока честота (напр 200 Hz) и същевременно достатъчно малко за да се усети разликата между двата начина на възпроизвеждане. Надявам се да съм помогнал някакси :)
Станьо - 20г. - извън чужбина

spookyboy

  • Бил знаел какво е Мехатроника!
  • *****
  • Публикации: 103
    • Профил
Какво е KC-1206
« Отговор #22 -: Октомври 10, 2007, 01:22:14 am »
#include <stdio.h>
#include <dos.h>

enum note {C, Cis, D, Dis, E, F, Fis, G, Gis, A, Ais, B};
short freq[12][10] = { {16, 33, 65, 131, 267, 523, 1047, 2093, 4186, 8372},
{17, 35, 69, 139, 277, 554, 1109, 2218, 4435, 8870},
{18, 37, 73, 147, 294, 587, 1175, 2349, 4699, 9397},
{19, 39, 78, 156, 311, 622, 1245, 2489, 4978, 9956},
{21, 41, 82, 165, 327, 659, 1319, 2637, 5274, 10548},
{22, 44, 87, 175, 349, 698, 1397, 2799, 5588, 11175},
{23, 46, 92, 185, 370, 740, 1480, 2960, 5920, 11840},
{25, 49, 98, 196, 392, 784, 1568, 3136, 6272, 12544},
{26, 52, 104, 208, 415, 831, 1661, 3322, 6645, 13290},
{28, 55, 110, 220, 440, 880, 1760, 3520, 7040, 14080},
{29, 58, 117, 233, 466, 932, 1865, 3729, 7459, 14917},
{31, 62, 123, 247, 494, 988, 1976, 3951, 7902, 15804}};

void _sound(enum note n, short octave, short period) {
sound(freq[n][octave]);
delay(period);
nosound();
}

int main () {
_sound(G, 4, 500);
_sound(G, 4, 500);
_sound(G, 4, 500);

_sound(E, 4, 250);
_sound(B, 4, 250);
_sound(G, 4, 500);
_sound(E, 4, 250);
_sound(B, 4, 250);
_sound(G, 4, 1000);
delay(500);

_sound(D, 5, 500);
_sound(D, 5, 500);
_sound(D, 5, 500);

_sound(E, 5, 250);
_sound(A, 4, 250);
_sound(F, 4, 500);
_sound(E, 4, 250);
_sound(B, 4, 250);
_sound(G, 4, 1000);

return 0;
}
Ето програмата с Дарт Вейдъра дето я искаше днеска :) Работи за комп. Ако искаш да заработи и за пиезо зумера трябва да смениш _sound функцията с тази:_sound(enum note n, short octave, long period) {
long delay = 500000 / freq[n][octave];
period *= 1000;
for (long i = 0; (i << 1) * delay < period; ++i) {
output_high (PIN_B1);
delay_us (delay);
output_low (PIN_B1);
delay_us (delay);
}
И dos.h става излишен. Have Fun! :)
Станьо - 20г. - извън чужбина

tommyboy

  • Направо Робот! :)
  • *****
  • Публикации: 416
    • Профил
Какво е KC-1206
« Отговор #23 -: Октомври 10, 2007, 10:02:43 am »
аве тия прграмки ги пишете на С нали  , щото не ми прилича на асемблер

DataMatrix

  • Заклет Роботостроител
  • *****
  • Публикации: 308
    • Профил
    • http://datamatrix-bg.net/
Какво е KC-1206
« Отговор #24 -: Октомври 10, 2007, 10:14:32 am »
Цитат на: "tommyboy"
аве тия прграмки ги пишете на С нали  , щото не ми прилича на асемблер
:shock:
Естетвено че на C :zubi:
Димитър Бояджиев, гр. София

mohaha

  • Заклет Роботостроител
  • *****
  • Публикации: 233
    • Профил
Какво е KC-1206
« Отговор #25 -: Октомври 10, 2007, 05:47:59 pm »
Може ли една схемичка за такива правоъгълни импулси, че съм далеч от микроконтролерите.  :oops:  :D
Страхил, 18 год. гр. Монтана

tommyboy

  • Направо Робот! :)
  • *****
  • Публикации: 416
    • Профил
Какво е KC-1206
« Отговор #26 -: Октомври 10, 2007, 10:59:52 pm »
Цитат на: "DataMatrix47"
Цитат на: "tommyboy"
аве тия прграмки ги пишете на С нали  , щото не ми прилича на асемблер
:shock:
Естетвено че на C :zubi:



що ве може на асемблер ама естествено че е на С верно тъп въпрос зададох. :lol:

mohaha

  • Заклет Роботостроител
  • *****
  • Публикации: 233
    • Профил
Какво е KC-1206
« Отговор #27 -: Октомври 11, 2007, 12:31:18 am »
Малко можете ли да ми разясните какво е асемблер :oops: .(Съжелявам, ако е спам, но искам да използвам тези пиезоизлъчватели, но незнам как  :oops: . )
Страхил, 18 год. гр. Монтана

DataMatrix

  • Заклет Роботостроител
  • *****
  • Публикации: 308
    • Профил
    • http://datamatrix-bg.net/
Какво е KC-1206
« Отговор #28 -: Октомври 11, 2007, 12:56:27 am »
За пиезотата въобще не е нужен асемблер. Иначе асемблер е език, който е от възможно най-ниско ниво и представлява машинен код, но в едни вид в който човек може да го възприеме.
Димитър Бояджиев, гр. София

DataMatrix

  • Заклет Роботостроител
  • *****
  • Публикации: 308
    • Профил
    • http://datamatrix-bg.net/
Какво е KC-1206
« Отговор #29 -: Октомври 12, 2007, 03:21:44 pm »
Цитат на: "spookyboy"
#include <stdio.h>
#include <dos.h>

enum note {C, Cis, D, Dis, E, F, Fis, G, Gis, A, Ais, B};
short freq[12][10] = { {16, 33, 65, 131, 267, 523, 1047, 2093, 4186, 8372},
{17, 35, 69, 139, 277, 554, 1109, 2218, 4435, 8870},
{18, 37, 73, 147, 294, 587, 1175, 2349, 4699, 9397},
{19, 39, 78, 156, 311, 622, 1245, 2489, 4978, 9956},
{21, 41, 82, 165, 327, 659, 1319, 2637, 5274, 10548},
{22, 44, 87, 175, 349, 698, 1397, 2799, 5588, 11175},
{23, 46, 92, 185, 370, 740, 1480, 2960, 5920, 11840},
{25, 49, 98, 196, 392, 784, 1568, 3136, 6272, 12544},
{26, 52, 104, 208, 415, 831, 1661, 3322, 6645, 13290},
{28, 55, 110, 220, 440, 880, 1760, 3520, 7040, 14080},
{29, 58, 117, 233, 466, 932, 1865, 3729, 7459, 14917},
{31, 62, 123, 247, 494, 988, 1976, 3951, 7902, 15804}};

void _sound(enum note n, short octave, short period) {
sound(freq[n][octave]);
delay(period);
nosound();
}

int main () {
_sound(G, 4, 500);
_sound(G, 4, 500);
_sound(G, 4, 500);

_sound(E, 4, 250);
_sound(B, 4, 250);
_sound(G, 4, 500);
_sound(E, 4, 250);
_sound(B, 4, 250);
_sound(G, 4, 1000);
delay(500);

_sound(D, 5, 500);
_sound(D, 5, 500);
_sound(D, 5, 500);

_sound(E, 5, 250);
_sound(A, 4, 250);
_sound(F, 4, 500);
_sound(E, 4, 250);
_sound(B, 4, 250);
_sound(G, 4, 1000);

return 0;
}
Ето програмата с Дарт Вейдъра

Цитат
 [Linker error] undefined reference to `sound'
  [Linker error] undefined reference to `delay'
  [Linker error] undefined reference to `nosound'
  [Linker error] undefined reference to `delay'
  ld returned 1 exit status

Искам да чуя вейдърааа!
Димитър Бояджиев, гр. София