Перейти до вмісту

Мікроконтролери


Повідомлень в темі: 118

#61 FT232BM

    私は人々嫌い

  • Користувачі
  • PipPipPipPipPipPipPipPipPipPip
  • 3435 повідомлень
  • Стать:Чоловік
  • Місто:Київ->НТУУ "КПІ"

Відправлено 13.01.2010 – 19:29

Та щоб мати внутрішню пам'ять не тре нічого особливого. Кажись тільки EA підтянути через 10К на живлення. Шо за шина P8 я не відстрелюю. Перед трансформатором треба два запобіжника ставити згідно ГОСТ.
  • 0

#62 І Цвях

    опозиція

  • Користувачі
  • PipPipPipPipPipPipPipPipPipPip
  • 1876 повідомлень
  • Стать:Чоловік
  • Місто:Мати міст руських

Відправлено 14.01.2010 – 20:20

FT232BM, по-ходу твій вєлік тільки з такими колесами
Зображення

http://aes.at.ua/publ/svetodiodnoe_koleso_...peda/31-1-0-235
  • 0

#63 FT232BM

    私は人々嫌い

  • Користувачі
  • PipPipPipPipPipPipPipPipPipPip
  • 3435 повідомлень
  • Стать:Чоловік
  • Місто:Київ->НТУУ "КПІ"

Відправлено 15.01.2010 – 00:14

Перегляд дописуІ Цвях (14.01.2010 20:20) писав:

FT232BM, по-ходу твій вєлік тільки з такими колесами
Зображення

http://aes.at.ua/publ/svetodiodnoe_koleso_...peda/31-1-0-235
Тада, радіальна розгортка рулить. Неодноразово заворожувала))
  • 0

#64 Андре

    Постійний житель

  • Користувачі
  • PipPipPipPipPip
  • 134 повідомлень
  • Стать:Чоловік
  • Місто:Тернопіль

Відправлено 24.01.2010 – 12:02

в мене питання... є ATtiny13. в даташеті прише, що по замовчуванню він працює на частоті 9,6МГц.
зліпив схему. контролер динамічно керує двома 7-сигментними індикаторами. показує дві цифри.
написав в AVR Studio програму на C для виводу через певний інтервал цифр на дисплей. 00, 01, 02.. і т.д.
в симуляторі AVR Studio ця програма виводить цифри з інтервалом в 720мс (симулятор працює на 4МГц. чомусь не можу змінити), а в реальності контролер виводить цифри з інтервалом ~2.4c.
виходить, що контролер працює на частоті біля 1Мгц, а не 9,6. фузи я не змінював. в чому справа?

і друга фігня. користуюсь AVR Studio 4.18 + WinAWR 20090313
як на мене то копілятор WinAWR страшно глюканий. часом трапляються моменти, що програма написана правильно, але через їхній алгоритм оптимізації в результаті виходить глючна прошивка.
для прикладу. кілька кусків однієї прошивки:


// глобально
int d=0;
char digit[3] = {0b00011000,0b10111011,0b10010100}; 
...
ISR(TIM0_OVF_vect)(){ // таймер
 ...
char d0;
 d0=d/10;
d0 = digit[d0]; // <<<<< звідси програма чомусь переходить на рядок з кодом "SREG |= 0b10000000;" (внизу)
 ...
}
 int main(){
 d=0;
 mode='s';
 count=0;
 DDRB=0b00001111;
 TCCR0B=0x05;
 TIMSK0=0x02;
 SREG |= 0b10000000;
 while(1){}
}
якщо глянути на дисасемблер, то перехід відбувається через RCALL.

це я помиляюсь чи компілятор? :)  
  • 0

#65 FT232BM

    私は人々嫌い

  • Користувачі
  • PipPipPipPipPipPipPipPipPipPip
  • 3435 повідомлень
  • Стать:Чоловік
  • Місто:Київ-&gt;НТУУ &quot;КПІ&quot;

Відправлено 24.01.2010 – 12:06

Перегляд дописуАндре (24.01.2010 12:02) писав:

в мене питання... є ATtiny13. в даташеті прише, що по замовчуванню він працює на частоті 9,6МГц.
зліпив схему. контролер динамічно керує двома 7-сигментними індикаторами. показує дві цифри.
написав в AVR Studio програму на C для виводу через певний інтервал цифр на дисплей. 00, 01, 02.. і т.д.
в симуляторі AVR Studio ця програма виводить цифри з інтервалом в 720мс (симулятор працює на 4МГц. чомусь не можу змінити), а в реальності контролер виводить цифри з інтервалом ~2.4c.
виходить, що контролер працює на частоті біля 1Мгц, а не 9,6. фузи я не змінював. в чому справа?

і друга фігня. користуюсь AVR Studio 4.18 + WinAWR 20090313
як на мене то копілятор WinAWR страшно глюканий. часом трапляються моменти, що програма написана правильно, але через їхній алгоритм оптимізації в результаті виходить глючна прошивка.
для прикладу. кілька кусків однієї прошивки:


// глобально
int d=0;
char digit[3] = {0b00011000,0b10111011,0b10010100}; 
...
ISR(TIM0_OVF_vect)(){ // таймер
 ...
char d0;
 d0=d/10;
d0 = digit[d0]; // <<<<< звідси програма чомусь переходить на рядок з кодом "SREG |= 0b10000000;" (внизу)
 ...
}
 int main(){
 d=0;
 mode='s';
 count=0;
 DDRB=0b00001111;
 TCCR0B=0x05;
 TIMSK0=0x02;
 SREG |= 0b10000000;
 while(1){}
}
якщо глянути на дисасемблер, то перехід відбувається через RCALL.

це я помиляюсь чи компілятор? :)  
Що значить по "замовчуванню працює"? Знаю про таку якість як максимальна частота. Так всетаки який кварц в тебе в реалі стоїть? З AVR студіо, зоч розробок під AVR майже не маю, працював без проблем, в т.ч. і частоту змінював.
  • 0

#66 Андре

    Постійний житель

  • Користувачі
  • PipPipPipPipPip
  • 134 повідомлень
  • Стать:Чоловік
  • Місто:Тернопіль

Відправлено 24.01.2010 – 12:23

Перегляд дописуFT232BM (24.01.2010 12:06) писав:

Що значить по "замовчуванню працює"? Знаю про таку якість як максимальна частота. Так всетаки який кварц в тебе в реалі стоїть? З AVR студіо, зоч розробок під AVR майже не маю, працював без проблем, в т.ч. і частоту змінював.

кварц не стоїть... таблиця з даташету:


Device Clocking Option                                                  | CKSEL1:0(1)
External Clock (see page 24)                                          | 00
Calibrated Internal 4.8/9.6 MHz Oscillator (see page 25)    | 01, 10
Internal 128 kHz Oscillator (see page 26)                        | 11


тобто там внутрішній осцилятор на 9,6 включено.



а як частоту симулятора змінювати в АВР студіо?

я пробував змінювати через Edit -> Configuration Options. воно ніби і змінюється там, але при виконанні програми в симуляторі всерівно показує частоту 4МГц.
  • 0

#67 FT232BM

    私は人々嫌い

  • Користувачі
  • PipPipPipPipPipPipPipPipPipPip
  • 3435 повідомлень
  • Стать:Чоловік
  • Місто:Київ-&gt;НТУУ &quot;КПІ&quot;

Відправлено 24.01.2010 – 12:28

Перегляд дописуАндре (24.01.2010 12:16) писав:

кварц не стоїть... таблиця з даташету:


Device Clocking Option                                                  | CKSEL1:0(1)
External Clock (see page 24)                                          | 00
Calibrated Internal 4.8/9.6 MHz Oscillator (see page 25)    | 01, 10
Internal 128 kHz Oscillator (see page 26)                        | 11


тобто там внутрішній осцилятор на 9,6 включено.
Дочєго тєхніка дашла)) , чудово.
В AVR Studio здається можна вибирати симуляцію в режимі реального часу, і таку, максимально швидку.
Debug->AVR Simulator options Тут встановлюється частота, можна і вручну вписувати.
Де виставити Realtime debug не знайшов.
  • 0

#68 Андре

    Постійний житель

  • Користувачі
  • PipPipPipPipPip
  • 134 повідомлень
  • Стать:Чоловік
  • Місто:Тернопіль

Відправлено 24.01.2010 – 13:22

 дякую. з частотою розібрався. працює.

але от ця помилка з масивом. минула прошивка була схожою, то там з масивом все було добре. а тут щось незрозуміла.

буду знову до вивчення асемблера повертатись, напевне.
  • 0

#69 Андре

    Постійний житель

  • Користувачі
  • PipPipPipPipPip
  • 134 повідомлень
  • Стать:Чоловік
  • Місто:Тернопіль

Відправлено 26.01.2010 – 15:15

 в мене тепер не питання, а відповідь на мої заяви про глюканість WINAVR GСC компілятора. забираю їх назад :)

більше 10 годин провів над виявленням цієї помилки.  <_< довелось згадати асемблер і ще дещо вивчити. написав аналог програми, яка перед тим глючила на С. не допомогло. всерівно працювала нестабільно. спочатку думав, що проблема в самому коді програми, кілька помилок таки знайшов. але глюки не зникали. подім додумався перевірити чи не ресетиться контролер. таки ресетиться. сама схема була розрахована на підключення терморезистора, але він не був впаяний. до входу контролера, де він мав підлючатись був тільки припаяний резистор 10к на +. саме через нього і ресетилась програма. випаяв його і все запрацювало і контролер почав запускатись правильно кожного разу, а не так як до того...

але от не можу зрозуміти чому. тобто чому пін PB4, сконфігурований як вхід (без Pull-up), при підключенні на плюс через резистор 10к ресетить часом контролер і не дозволяє йому постійно стабільно запускатись. переривання INT0 відключене. контролер ресетиться саме на 0 адресу.

Повідомлення відредагував Андре: 26.01.2010 – 15:16

  • 0

#70 FT232BM

    私は人々嫌い

  • Користувачі
  • PipPipPipPipPipPipPipPipPipPip
  • 3435 повідомлень
  • Стать:Чоловік
  • Місто:Київ-&gt;НТУУ &quot;КПІ&quot;

Відправлено 26.01.2010 – 15:23

Перегляд дописуАндре (26.01.2010 15:15) писав:

 в мене тепер не питання, а відповідь на мої заяви про глюканість WINAVR GСC компілятора. забираю їх назад :)

більше 10 годин провів над виявленням цієї помилки.  <_< довелось згадати асемблер і ще дещо вивчити. написав аналог програми, яка перед тим глючила на С. не допомогло. всерівно працювала нестабільно. спочатку думав, що проблема в самому коді програми, кілька помилок таки знайшов. але глюки не зникали. подім додумався перевірити чи не ресетиться контролер. таки ресетиться. сама схема була розрахована на підключення терморезистора, але він не був впаяний. до входу контролера, де він мав підлючатись був тільки припаяний резистор 10к на +. саме через нього і ресетилась програма. випаяв його і все запрацювало і контролер почав запускатись правильно кожного разу, а не так як до того...

але от не можу зрозуміти чому. тобто чому пін PB4, сконфігурований як вхід (без Pull-up), при підключенні на плюс через резистор 10к ресетить часом контролер і не дозволяє йому постійно стабільно запускатись. переривання INT0 відключене. контролер ресетиться саме на 0 адресу.
По адресі 0, здається RESET знаходиться о_О, а не INT0
  • 0

#71 Андре

    Постійний житель

  • Користувачі
  • PipPipPipPipPip
  • 134 повідомлень
  • Стать:Чоловік
  • Місто:Тернопіль

Відправлено 26.01.2010 – 15:35

Перегляд дописуFT232BM (26.01.2010 15:23) писав:

По адресі 0, здається RESET знаходиться о_О, а не INT0

я трохи неправильно висловився. мав на увазі, що ресет по INT0 не може бути, бо ресетиться на 0.
  • 0

#72 Роланд

    Purple haze all around

  • Користувачі
  • PipPipPipPipPipPipPipPipPipPip
  • 1007 повідомлень
  • Стать:Чоловік
  • Місто:Житомир

Відправлено 26.01.2010 – 20:58

Андре
еее, а код де?
  • 0

#73 Андре

    Постійний житель

  • Користувачі
  • PipPipPipPipPip
  • 134 повідомлень
  • Стать:Чоловік
  • Місто:Тернопіль

Відправлено 26.01.2010 – 23:02

Перегляд дописуРоланд (26.01.2010 20:58) писав:

Андре
еее, а код де?
ось. на рахунок схеми, то... до контролера підлючені дві мікросхеми 74HC164 (SHIFT-регістри). тактовий сигнал на них йде з PB2, а PB0 і PB1 - дані на одну і ншу мікруху, відповідно. до регістрів підключені 7-сигментні індикатори. в масиві коди цифр для них від 0 до 9.
char digit[11] = {0b00011000,0b10111011,0b10010100,0b10010001,0b00110011,0b01010001,0b01010000,0b
10011011,0b00010000,0b00010001,0b11111111};

int d;	// цифра, яка виводиться
char count;
ISR(TIM0_OVF_vect){
     if(count<10){
          count++;
          return;
     }
     count=0;
     if(d<99)	d++;
     else		d=0;
     char ddd1,ddd0; // цифра 1 і 0
     ddd0 = digit[d/10];
     ddd1 = digit[d%10];
     char i=0;
     for(;i<8;i++){
          PORTB &=0b11111000;
          if((ddd0&0b1)==1)
               PORTB|=0b1;
          if((ddd1&0b1)==1)
                PORTB|=0b10;
          ddd0 = ddd0 >> 1;
          ddd1 = ddd1 >> 1;
          PORTB|=0b100;
     }
     PORTB &=0b11111000;
}
int main(){
     d=0;
     mode='s';
     count=0;
     DDRB=0b00001111;
     PORTB=0;
     TCCR0B=0x05;
     TIMSK0=0x02;
     CLKPR=0;
     SREG |= 0b10000000;
     while(1){;}
}

але все вже працює нормально. а на рахунок запитання про частоту, то ось тут дещо знайшов:

http://forum.vingrad.ru/forum/s/1035a02e8f...y1317223/0.html

виявляється частота осцилятора ділиться на 8. такщо реально процесор працює на 1,2МГц. чомусь в документації такого не побачив. колись грався з AT89C2051, то там частота кварца ділилась на 12 і виходила частота процесора. здогадувався, що тут таке може бути, але не міг знайти на скільки конкретно ділиться.
  • 0

#74 Андре

    Постійний житель

  • Користувачі
  • PipPipPipPipPip
  • 134 повідомлень
  • Стать:Чоловік
  • Місто:Тернопіль

Відправлено 28.01.2010 – 16:32

позичив в друга осцилограф. методом практичних досліджень визначив, що якщо в симуляторі виставити частоту Attiny13 = 850кГц, то час більш менш збігається з реальним.(фузи не змінював, регістри також не змінюються в програмі) то на якій ж частоті працює Attiny13? :rolleyes: можна погратись і визначити осцилографом.. але ж має бути якась закономірність. допоможіть розібратись
  • 0

#75 І Цвях

    опозиція

  • Користувачі
  • PipPipPipPipPipPipPipPipPipPip
  • 1876 повідомлень
  • Стать:Чоловік
  • Місто:Мати міст руських

Відправлено 28.01.2010 – 16:38

Препод загадав, як написати для МЦС-51 найкоротшу прогу, в якій буде задіяна вся пам*ть чи то програм чи то данних. Я так розумію, тут треба запустити цикл, приміром, пересилки якогось числа з першої адреси в другу, з другої в третю і т.д. до останньої адреси. Чи тут якась інша фішка?
  • 0

#76 FT232BM

    私は人々嫌い

  • Користувачі
  • PipPipPipPipPipPipPipPipPipPip
  • 3435 повідомлень
  • Стать:Чоловік
  • Місто:Київ-&gt;НТУУ &quot;КПІ&quot;

Відправлено 28.01.2010 – 16:50

Перегляд дописуІ Цвях (28.01.2010 16:38) писав:

Препод загадав, як написати для МЦС-51 найкоротшу прогу, в якій буде задіяна вся пам*ть чи то програм чи то данних. Я так розумію, тут треба запустити цикл, приміром, пересилки якогось числа з першої адреси в другу, з другої в третю і т.д. до останньої адреси. Чи тут якась інша фішка?
Власне ідіотська постановка задачі взагалі. Можна як ти, можна просто розбити пам'ять на два блоки і один копіювати у другий, але тупизни це не змінює.
  • 0

#77 І Цвях

    опозиція

  • Користувачі
  • PipPipPipPipPipPipPipPipPipPip
  • 1876 повідомлень
  • Стать:Чоловік
  • Місто:Мати міст руських

Відправлено 28.01.2010 – 17:00

FT, тобі знайома проблема овеквотінгу в Україні, зоктема на сайтах з логотипами у вигляді собак?
  • 0

#78 FT232BM

    私は人々嫌い

  • Користувачі
  • PipPipPipPipPipPipPipPipPipPip
  • 3435 повідомлень
  • Стать:Чоловік
  • Місто:Київ-&gt;НТУУ &quot;КПІ&quot;

Відправлено 28.01.2010 – 17:35

Перегляд дописуІ Цвях (28.01.2010 17:00) писав:

FT, тобі знайома проблема овеквотінгу в Україні, зоктема на сайтах з логотипами у вигляді собак?
А, що за флуд?
  • 0

#79 Андре

    Постійний житель

  • Користувачі
  • PipPipPipPipPip
  • 134 повідомлень
  • Стать:Чоловік
  • Місто:Тернопіль

Відправлено 28.01.2010 – 23:16

Перегляд дописуІ Цвях (28.01.2010 16:38) писав:

Препод загадав, як написати для МЦС-51 найкоротшу прогу, в якій буде задіяна вся пам*ть чи то програм чи то данних. Я так розумію, тут треба запустити цикл, приміром, пересилки якогось числа з першої адреси в другу, з другої в третю і т.д. до останньої адреси. Чи тут якась інша фішка?
 

в мене краща ідея. коротшої програми просто бути не може. вона займає 0 байт.) тобто якщо контролер буде нулячий, то його проц буде проходити всю память, значить вона вся буде задіяною.   :rolleyes:

Повідомлення відредагував Андре: 28.01.2010 – 23:18

  • 0

#80 FT232BM

    私は人々嫌い

  • Користувачі
  • PipPipPipPipPipPipPipPipPipPip
  • 3435 повідомлень
  • Стать:Чоловік
  • Місто:Київ-&gt;НТУУ &quot;КПІ&quot;

Відправлено 28.01.2010 – 23:24

Перегляд дописуАндре (28.01.2010 23:16) писав:

 

в мене краща ідея. коротшої програми просто бути не може. вона займає 0 байт.) тобто якщо контролер буде нулячий, то його проц буде проходити всю память, значить вона вся буде задіяною.   :rolleyes:
Але не SRAM((
  • 0



Кількість користувачів, що читають цю тему: 1

0 користувачів, 1 гостей, 0 анонімних