admin

Видеокурс По Avr-Микроконтроллерам Для Начинающих

2344 posts in this topic

COKPOWEHEU    273

 

В вашем проекте неправильно объявлен массив строк. Почему-то используется первая, ошибочная версия, хотя на форум были выложены правильные.

Нет функции main(). Хотя в этом посте она упомянута...

Share this post


Link to post
Share on other sites
URRS    0

По поводу void name{....} предположил, что туда вписывают основные настройки портов (предустановки).

А в main{name()....} основной код.

Посоветуйте литературу по Си для чайников с «0»? Для тех кто к программированию отношение не имел (технарь).

Share this post


Link to post
Share on other sites

Опорное решение: компоненты для защиты RS-485

Компания Bourns анонсировала новую (4-ю) версию демонстрационной платы для тестирования защиты низковольтных слаботочных цепей от токовых перегрузок и импульсных перенапряжений, в частности, для защиты интерфейса RS-485. Мы собрали для вас всю самую интересную информацию по данной теме на одной странице.

Подробнее...

S1BaR1T    0

Всем привет. На форуме у Вас первый раз, так что сильно не ругайтесь)

Спасибо за создание курса, очень интересно, но завис на 6 уроке:(

Ладно то что в протеусе8,5 экран не работает прочитал, поставил 7,4 тоже не работает, не беда скачал 7,6 ураа заработало.

Видимо потому что я только учусь, не работает у меня на реальном экранчике:(

Все контакты подключения проверил не однократно, прошивка залилась, но вот не кажет и все. В предыдущих уроках проблем не возникало все и в живую работало. Может у меня динамит (экран) не той системы? Можно его как то проверить хотя бы один пиксель помимо мк вывести? Прикладываю фото экрана.

IMG_20161216_154707.jpg

IMG_20161216_154654.jpg

Код пишется в 7 студии. МК Atmega8

Если есть добрые люди готовые помочь начинающему в возникающих у него вопросах скажем по почте телеграмму вайберу и прочему помимо форума буду очень рад.

Заранее спасибо.

Edited by S1BaR1T
два раза фото отобразились

Share this post


Link to post
Share on other sites
URRS    0

@S1BaR1T , приветствую. Свой дисплей подсоединил нормально. Контакты и в правду на твоём как то по другому. Но от перемены слагаемых...

// Распиновка порта (из библиотеки n5110.h) 
LCD_DC_PIN                 PB1    // DC
LCD_CE_PIN                 PB2    // SCE
SPI_MOSI_PIN              PB3  // SDIN 
LCD_RST_PIN               PB4    // RESET
SPI_CLK_PIN                PB5  // SCLK 

Твоя распиновка:

1 Vcc - +5V( или 3.3V)

2 GND -5V

3 LCD_CE_PIN                 PB2    // SCE

4 LCD_RST_PIN               PB4    // RESET

5 LCD_DC_PIN                 PB1    // DC

6 SPI_MOSI_PIN              PB3  // SDIN 

7 SPI_CLK_PIN                PB5  // SCLK 

8 подсветка дисплея +5В или 3,3 (на усмотрение).

Во вложении рабочий код с библиотекой на дисплей, схема протеуса 7.

LCD_5110.zip

LCD proj.rar

lcd_5110.DSN

Share this post


Link to post
Share on other sites

Видео вебинара «Уникальный подход MORNSUN к разработке DC/DC-преобразователей. Что на выходе?»

На сайте КОМПЭЛ доступны материалы вебинара, посвященные последнему поколению DC/DC преобразователей с фиксированным входом R3 от MORNSUN. Вы можете посмотреть видеозапись, ознакомиться с презентацией и ответами на вопросы.

Подробнее...

COKPOWEHEU    273

Поправлю: GND - 0 В, а не -5 В. Напряжения обычно меряются относительно земли, GND, если это явно не указано. Обозначение -5 В обозначает подачу отрицательного напряжения, то есть двуполярный источник питания.

Ну и библиотеку вы используете не последней версии. В первом посте этой темы выложены два варианта, исправляющие баг с выводом чисел. Лучше используйте какую-нибудь из них.

Share this post


Link to post
Share on other sites
Berg    19
#include <avr/io.h>
#include "n5110.h"

int main(void)
{
 PORTC |= (1<<PC0)|(1<<PC1)|(1<<PC2);
 Lcd_init();
    while(1)
    {
      Lcd_clear();
		switch(PINC & 0b111){
			case 7: Lcd_prints(0,1,FONT_1X,(unsigned char *)PSTR("Северный")); break;
			case 6: Lcd_prints(0,1,FONT_1X,(unsigned char *)PSTR("Сев.-Восточный")); break;
			case 5: Lcd_prints(0,1,FONT_1X,(unsigned char *)PSTR("Восточный")); break;
			case 4: Lcd_prints(0,1,FONT_1X,(unsigned char *)PSTR("Юго-Восточный")); break;
			case 3: Lcd_prints(0,1,FONT_1X,(unsigned char *)PSTR("Южный")); break;
			case 2: Lcd_prints(0,1,FONT_1X,(unsigned char *)PSTR("Юго-Западный")); break;
			case 1: Lcd_prints(0,1,FONT_1X,(unsigned char *)PSTR("Западный")); break;
			case 0: Lcd_prints(0,1,FONT_1X,(unsigned char *)PSTR("Сев.-Западный")); break;
			default: break;
		}
		Lcd_update();	
    }
}

кнопки PC0-PC2 и на общий

Share this post


Link to post
Share on other sites
URRS    0

@Berg ,большущее спасибо:friends:!!!! Всё работает:dance2:. Теперь усовершенствуем до 16 значений (изучим функцию switch), добавим задержки, тестинг и монтаж! Теперь антенна Яги будет под защитой от ветра (лобового порыва). Как соберу, фото прилажу. С уважением, Николай (Rx9chy/8) с полярного круга!

@COKPOWEHEU книга «Язык Си» шикарная, как раз для таких как я!!! Очень интересная! Спасибо!

20140821_204150.jpg

Share this post


Link to post
Share on other sites
MaxVest    2

 Viktor26

Прежде чем разговаривать с человеком менторским тоном, вы хотя бы убедитесь, что вы правы.

Да, скаченный Proteus 8 с наших торрент-тракеров  действительно не выводит данные на  виртуальные lcd 3310. Но кто мешает скачать Proteus 8.1,  на котором всё ОК! с  piratebay.

Не хотите помочь человеку, просто пройдите мимо - не грызите. Не нужно создавать виртуальную дедовщину.

Безымянный.png

Share this post


Link to post
Share on other sites
Viktor26    309

А а чем, извините меня, я не прав. ?? Разговора про 8.1 не было. А то что вы невнимательно смотрели видио и не удосужились почитать первые посты этой темы, это факт. Я Вам явно на это указал. Вы считаете что это вам не помогло? Я думаю помогло. Вы же вон сразу кинулись новые протеусы качать и пробовать.  А если бы были чуть внимательнее и вопросов бы у вас было меньше. А самое интересное то, что через одного новички об этом спрашивают, чуть ли не на каждой второй странице есть ответ на этот вопрос, а вы меня в чем то обвиняете. Странно.. да и ладно))

Share this post


Link to post
Share on other sites
S1BaR1T    0

@URRS Спасибо, еще тыщу раз проверил контакты, библиотеки все же взял не твои, а по совету @COKPOWEHEU ему тоже спасибо, завел все на протеусе, записал в мк и ура все заработало. К сожалению, не могу сказать в чем точно была причина, но точно во мне, а не в оборудовании. Совет новичкам: будьте внимательны и проверьте все не однократно, чтоб не создавать кучу постов. А то будете как я:)

Но все равно, теперь вопрос, извиняюсь если не сюда.

Нашел датчик, насколько я понимаю это датчик влажности(могу ошибаться). Вытащен он был из какого-то МФУ. К большому своему сожалению не помню что за модель. В интернете информации по датчику найти не могу. Помогите подключить к ATMEGA8. Заранее спасибо.

1.jpg

2.jpg

3.jpg

Share this post


Link to post
Share on other sites
Guest Vladimir   
Guest Vladimir

Просмотрел 6 уроков , понял одно , если б автор меньше занимался словоблудством , а больше говорил по теме то было бы гораздо полезнее , а то его вечно объяснять не буду , очень много , и тому подобное съедает треть , как минимум времени , уж лучше бы тогда просто говорил , что объяснять не будет , но при этом не пытался объяснить почему он не будет объяснять , то хоть смотреть без перемотки можно было бы , текст ужесен , точнее больше половины того что говорит автор , это просто словоблудство

Share this post


Link to post
Share on other sites
COKPOWEHEU    273

Да видеокурсы по программированию вообще бесполезны. Если человек не умеет читать книги или хотя бы статьи, программировать он не сможет.

Share this post


Link to post
Share on other sites
Alex441    3

Отпишусь для новичков как я. Proteus 8.5 SP0 (Build22067) скаченный с торрента уже имеет в себе библиотеку и работает нормально с 5110 дисплеем без каких либо танцев с бубнами.

5110test2.png

Отдельно отмечу, что чтобы все работало нужно устанавливать этот дисплей из внутренней библиотеки и не нужно ничего импортировать !!! Поэтому чтобы все работало нужно оформлять практику в ручную(строить схему вручную) а не загружать готовый файл.

Edited by Alex441

Share this post


Link to post
Share on other sites
Alex441    3

Сейчас я пишу свой относительно небольшой проект. Я использую старую версию библиотеки 5110, у меня много пременных float, вывожу я все переменные (в т.ч. и целые) через Lcd_printf. Соответственно каждая функция дико разрослась, поэтому я начал думать об оптимизации. Я это к тому что :

Попробовал я библиотеку от COKPOWEHEU с выводом все тех же переменных(самых разных) через вывод с фиксированной точкой (к примеру умноженных на 100 и 2 знаками после точки) и не получил никакой выигрыш во flash памяти. У меня как было порядка 6800 байт занято так и осталось, а вот озу с 650 поднялось почти до 800. Я использовал direct версию с выключенным дабл.  Хотя при выводе единичных переменных выигрыш в памяти получается.

Отсюда 2 вопроса :

1. Что там (в библиотеке от COKPOWEHEU) могло съесть 150 байт ОЗУ ?

2. Кто нить тоже сравнивал в своих проектах разницу в выигрыше между классической версией и  от COKPOWEHEU ?

PS : Я, кстати, вот еще что заметил. Atmel Studio 7 безбожно постоянно вылетает. Чем больше проект тем чаще. Причем вылетает на пустом месте когда останавливаешь дебаг. Проверял на компе и на ноуте. В итоге перешел на версию 6.2 пока тут такой глюк не замечен.

 

Edited by Alex441

Share this post


Link to post
Share on other sites
COKPOWEHEU    273

Странно. Сама библиотека резервирует 504 байта под видеобуфер (на самом деле он там не нужен, но для совместимости оставлен), по 2 байта на текущую позицию, начало и конец измененной области, и по 1 байту на флаги размера символов и необходимости обновления. Там физически не выделяется больше 512 байт. Возможно, вы используете числа с плавающей точкой где-то еще в коде. Ну а так, все коды открыты, функции несложные (хотя местами документации и не хватает). Да и писались эти версии в основном для демонстрационных целей: на практике хранить графический видеобуфер вряд ли необходимо, проще текстовый буфер, да и оптимизировать многое можно.

Share this post


Link to post
Share on other sites
Alex986    0

Всем доброго времени суток! Я понимаю, что опоздал со своим сообщением и опоздал не хило, но все же. Я полный НУЛЬ в радиоэлектронике и микроконтроллерах в частности, но так, как по работе все чаще приходится сталкиваться с МК, решил изучить данную тему и наткнулся на данный видеокурс. У меня вопрос по заданию к третьему уроку, я его выполнил, и в протеусе вроде как все работает, но хотелось бы услышать, что я сделал неправильно по коду. Заранее благодарю тех, кто объяснит и не будет смеяться.

//Atmega8A
#define F_CPU 8000000 //Задаем тактовую частоту процессора
#include <util/delay.h> //Подключаем библиотеку задержек
#include <avr/io.h>
#include <stdlib.h>
#include <time.h> 


    

void preset(){
    DDRB = 0xFF;
    PORTB = 0x00;
    DDRC = 0xFF;
    PORTC = 0x00;
    DDRD = 0xFF;
    PORTD = 0x00;
}

int main(void)
{
    preset();
    while (1) 
    {
        srand(time(NULL));
        int rand_PORT=rand()%4;//Генерируем порт от 1-3
        for(rand_PORT=1; rand_PORT<=4;rand_PORT--){
            
            PORTB = rand();
            _delay_ms(1000);
            PORTC = rand();
            _delay_ms(1000);
            PORTD = rand();
            _delay_ms(1000);
            
                        }
        
        
    }
}

 

 

схема.png

Share this post


Link to post
Share on other sites
COKPOWEHEU    273
Цитата

У меня вопрос по заданию к третьему уроку

Еще бы само задание узнать...

Цитата

srand(time(NULL));

Бесполезно: количество тактов с момента старта всегда будет одинаковым. Хотите более-менее нормальный рандом - используйте внешние данные, АЦП хотя бы.

Цитата

int rand_PORT=rand()%4;//Генерируем порт от 1-3
        for(rand_PORT=1; rand_PORT<=4;rand_PORT--){

То есть вы проинициализировали переменную рандомом и на следующем же такте присваиваете ей единицу. А зачем? Да еще счет какой-то странный: от 1 до 4, через вычитание. Да еще переменная 16-битная - зачем?

Цитата

#define F_CPU 8000000 //Задаем тактовую частоту процессора

Это лучше выносить в настройки проекта или makefile. Если в проекте будет несколько файлов исходников (*.c, *.cpp) то частоту придется указывать в каждом, а это простейший путь к ошибкам.

Share this post


Link to post
Share on other sites
Guest chotke   
Guest chotke

Всем доброго вечера. На днях друг познакомил с так званой платформой ардуино. Погуглил, нашел информацию что можно шить самому мк и проводить обвязку самому. Зная язык С, решил даже не брать дуино, и вот возникли пару вопросов. Ответы пытался гуглить, но потом надоело и забил на них:

8-битным контроллерам проще и быстрее работать с переменными размером с байт (uint_8, short int например), не так ли?

Для не сложных проектов, эксперементов для ознакомления F_CPU можно ставить в мегагерц, и нужно при прошивке также ставить 1МГц?

Спасибо за ответы.

Share this post


Link to post
Share on other sites
COKPOWEHEU    273
Цитата

Зная язык С, решил даже не брать дуино

Справедливости ради, а Ардуине не Си, а С++ (точнее, даже avr-g++) с собственным набором библиотек.

Цитата

Ответы пытался гуглить, но потом надоело и забил на них:

Если бы начали с ассемблера, ответ на первый вопрос был бы очевиден. Впрочем, надеюсь, еще придете к нему. В AVR ресурсов немного, иногда придется экономить такты и байты (но ради Омниссии, без фанатизма! Преждевременная оптимизация хуже ее отсутствия) или хотя бы понимать как код работает и почему работает не так как ожидалось.

Цитата

8-битным контроллерам проще и быстрее работать с переменными размером с байт (uint_8, short int например), не так ли?

Почти всегда так.

Цитата

Для не сложных проектов, эксперементов для ознакомления F_CPU можно ставить в мегагерц, и нужно при прошивке также ставить 1МГц?

Не совсем верно. Частота задается так называемыми fuse-битами, они же отвечают за источник тактирования, поведение ресета и многое другое. Новичку рекомендуют просто не менять их значение, потому что исправить его достаточно сложно, а почти все, кто эти биты трогал, хоть раз их портили. Ну а частота контроллеров и заводскими установками обычно именно 1 МГц.

Share this post


Link to post
Share on other sites
Grig96    73
1 час назад, COKPOWEHEU сказал:

Ну а частота контроллеров и заводскими установками обычно именно 1 МГц.

Ну вроде на ардуинах по умолчанию не 1 МГц. (для просто мк согласен)

Share this post


Link to post
Share on other sites
chotke    1

Если бы начали с ассемблера, ответ на первый вопрос был бы очевиден. Впрочем, надеюсь, еще придете к нему. В AVR ресурсов немного, иногда придется экономить такты и байты (но ради Омниссии, без фанатизма! Преждевременная оптимизация хуже ее отсутствия) или хотя бы понимать как код работает и почему работает не так как ожидалось.

Да я знаю что на ассемблере просто огонь, но для начала думаю и на Си можно, плюс только сейчас будем учить ассемблер.

АТмега8 и АТтини13 думаю пойдут для начала?

Share this post


Link to post
Share on other sites
COKPOWEHEU    273
Цитата

Ну вроде на ардуинах по умолчанию не 1 МГц. (для просто мк согласен)

На ардуинках зависит от модели. Чаще всего стоит кварц. На 16 МГц вроде - могу ошибаться, никогда ардуинки в руках не держал. Но ведь и chotke не собирается Ардуину воспроизводить, а хочет сразу учиться нормально.

Цитата

АТмега8 и АТтини13 думаю пойдут для начала?

Да, вполне. ATmega8 и ATmega48/88/168/328 на мой взгляд наиболее удачный выбор. Самый маленький из Мег корпус (DIP-28, корпуса smd для обучения подходят хуже, поэтому не рассматриваем), но при этом достаточное количество выводов и периферии: и таймеры, и АЦП, и UART с SPI.

ATtiny13 контроллер неплохой, но выводов маловато. Его стоит брать не для обучения а уже под конкретную задачу.

.

Вы же в курсе, что в эти контроллеры на заводе обычно не прошивается загрузчик (в отличие от ардуины) и для прошивки потребуется программатор?

Share this post


Link to post
Share on other sites
chotke    1

Вы же в курсе, что в эти контроллеры на заводе обычно не прошивается загрузчик (в отличие от ардуины) и для прошивки потребуется программатор?

Да как бы да) Прошивку сам буду писать. Благо у того же Китая есть дешевые usbasp, или на крайняк есть лпт порт.

А от ардуинки сразу отказался потому что там много проверок на защиту от "дурака", и потому производительность падает в разы..

В атмел студио накинул небольшой код - вывод двузначного числа на два семисегментных индикатора. Время выполнения функции почти 0.001 секунд. Так как я в душе перфекционист, и двумя руками за оптимизацию, вопрос: не слишком ли долго? 3 провода, 1МГц камня. Спасибо.

Share this post


Link to post
Share on other sites
COKPOWEHEU    273

Зависит от подключения. Я обычно использую динамическую индикацию с частотой обновления больше 200 Гц (иначе заметно мерцание). Вы бы лучше показали свой код и схему, можно было бы говорить более конкретно.

С другой стороны, эта тема предназначена только для обсуждения конкретного видеокурса. Лучше создайте новую.

Share this post


Link to post
Share on other sites

Your content will need to be approved by a moderator

Guest
You are commenting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoticons maximum are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Similar Content

    • By small girl
      Привет, ребят! Кто возьмется написать на С протокол взаимодействия для сети микроконтроллеров. База: STM32 с bluetooth модулем HC-06,- slave. ПК - master?

      За вознаграждение
    • By LegionKC
      Добрый день.
      Экспериментирую с платой TP4056 и MK ATmega8, конкретнее - пытаюсь собрать простенькое зарядное устройство с выводом параметров при зарядке/разрядке на АЦП МК. Для измерения тока нашел ACS712. Думаю, что получится выводить ток при зарядке (т.е. когда идет питание на TP4056 и нагрузка отключена) и при разрядке (питание выключено, нагрузка подключена). Нагрузка - резистор. Возникла проблема с измерением напряжения на АКБ. Вернее, проблема с отсутствием идей как это сделать. Может какую-нибудь схему делителя напряжения нужно сделать? Прошу помочь советом. Схему из пэинта прилагаю.
      Спасибо.
       

    • By Геннадий Быков
      Уважаемые электронщики и им сочувствующие!
      Хочу на даче собрать макет морского маяка в человеческий рост. Но для этого необходима схема управляющая светодиодами. Основное, схема должна иметь независимое питание(Солнечная панель) и быть слаботочной (5-9 вольт). Как вижу я. Маяк ориентировочно высотой 1,50-1,80 м. В маяке, с низу до верха 6 окошек (по одному 5мм светодиоду). И на верху сам маяк из 8-ми 0,5 ваттных светодиодов установленных по кругу. С наступлением темноты, включаются диоды на "1 этаже" и раз в 5-10 минут происходит действие. Диоды поэтажно (снизу вверх) начинают загораться (как будто кто-то поднимается вверх по ступеням) и после загорания самого верхнего окна, через пару секунд, включается маяк. Поочередно по кругу (эффект метеора), со скоростью 2-3 сек на круг, делает оборотов 10 и выключается. Потом в обратной последовательности гасятся окошки (светодиоды) сверху в низ и остаются два нижних, периодически и независимо включающиеся и выключающиеся (эффект присутствия). И вновь через 5-10 минут вышеописанное действие. Буду очень признателен любым советам, ссылкам, помощью. Немного умею паять, немного знаю Ардуино. Готов в разумных пределах спонсировать, разработку и сборку.
    • By Vladislav7
      Добрый день.
       
      Необходимо разработать схему для изготовления печатной платы с установленным микроконтроллером (подобрать подходящий), также подобрать все электронные компоненты и написать программу.
      Цель следующая:
      Необходимо с помощью одного контроллера управлять двумя цепями состоящими из 15 светодиодов (мощность одного = 0,1 Вт) каждая, диоды одноцветные.
      При включении одной кнопки начинает мигать одна цепь. При включении второй - вторая. Возможность одновременного включения кнопок.
      Необходим датчик индикации на кнопке, который будет мигать в такт светодиодной цепи. Принцип кнопки как у аварийной сигнализации.
       
      Спасибо.
  • Сообщения

    • Вариант намеренной раскрутки срача не рассматривается? 
    • Чтобы нести подобную пургу, что он написал, нужно быть наглухо прозомбированным, а такое  возможно сделать только с плохо соображающим человеком. ))   Я сейчас набивая ответ в теме о божественном полете на Луну, обратил внимание, что это STEN50 её замутил. Как раз в 13 году, года пошла разнарядка по ТВ каналам раскручивать эту лунную "аферу".  Любопытно послушать с технической точки зрения, где Мухин называет ретрансляторы - орбитерами, шесть штук которых запустили американцы, чтобы нас облопошить. Вот скажи, можно ли такое навешать радиолюбителю? Он или продался или тупой как валенок.
    • Материала для блоков поблизости мест установки пирамид нет. Блоки привозные. Пирамиды установлены хитрым образом в нужном месте не просто так. Значит для кого то был смысл карячить блоки в пустыню и ставить пирамиды определённым образом. И это были явно не древние египтяне. Чужаки прилетали на землю за золотом и другим сырьём. Не зря в культуре многих народов тотемные и культовые вещи именно из золота. Вполне возможно древние египтяне тупо наткнулись на пирамиды в пустыне, посчитали их дарами богов и воспользовались ими как гробницами. Скорее всего не зная прямого назначения этих строений. Возможно они даже  встречали хозяев пирамид и считая их своими богами сохраняли пирамиды до "пришествия" и расписали пирамиды историей многих династий фараонов. Там есть изображения похожие на современную технику, людей в шлемах. Похожие рисунки людей в скафандрах есть у ацтеков, майя, индусов. Древние люди рисовали и писали про виманы, небесные колесницы и всякие летающие штуки. В мифах древней Греции есть легенда о Фаэтоне а Млечный путь считают следом зажжённого Фаэтоном в небе пожара. Легенду можно толковать по разному. Но судя по происходящим событиям это описание прилёта на землю крупного метеорита, после которого произошла катастрофа и богу пришлось заново восстанавливать жизнь на земле. Откуда это было известно людям, если согласно легенде на земле всё погибло,  тоже загадка. Либо не всё, либо кто то наблюдал со стороны. Звёздное скопление Плеяд у славян называется Стожары. У греков и других народов Плеяды, как ни странно, означают тоже самое. Каким образом разноязычные народы в разное время называют звёзды одинаково непонятно.
    • Что касаемо отверстий. Они имеют гладкие стенки но нигде нет следов оплавления. На заготовках мегалитических блоков весом 40-120т есть следы как от резцов дисковой пилы гигантского диаметра. Такой техники нет и сейчас. Порода твёрдая, типа карбокорундовая, её резать только алмазным инструментом с охлаждением. Ни один современный лазер такую породу не берёт. Может в вашей школе говорили о строительстве пирамид методом отливки. В наших учебниках написано иначе. Пирамиды собраны без раствора из хорошо обработанных блоков. Блоки стоят так, что лезвие ножа не пролезет. Наружняя штукатурка за века местами разрушилась местами осталась. На ней местами остались иероглифы. Всё это 100500 раз рассказывалось и показывалось по кабельным каналам (Дискавери, CBS Science, Наука2.0 и др) и образовательным программам типа Клуб путешественников, Планета...
    • Он не дебил, он Вас за дебила держит - тупо закидывает бессвязным пропагандосским гуаном.  Так что пусть лучше картинки вешает - и волки сыты, и овцы целы.  
    • Так они автономны, доступа лостаточно, ессно, если их (торы)  этим боковинкам не крепить, а сделать Каркас унифицированный, отверстий более чем.