IgnatiusF

Не могу разобраться с таймером T0 на ATMEGA328P

9 posts in this topic

IgnatiusF    2

Не могу настроить таймер 0 на работу, и даже не получается понять в чем проблема. Делаю в Proteus, так как это быстрее и нагляднее.

Пробовал и просто по переполнению делать прерывание (WGM[1..0]  00) и по совпадению (WGM[1..0]  10; OCR0A = 0 - 255), однако прерываний нет. Перед циклом ставлю TCNT0 = 0;

Тактирование выставляю TCCR0B (CS[2..0] 001, 100, 101).

Прерывания TIMSK0 (OCIE0A, TOIE0) выставляю, не вызываются. Даже принудительным заносом значения в регистр TIFR0 (OCF0A, TOV0).

Прерывание пытаюсь выполнить таким образом:

#include <avr/interrupt.h>
volatile unsigned int A = 0;
ISR(TIMER0_OVF_vect) {
	A = 1; }
...
while(1) {
	if (A == 1)
		PORTB |= (1<<0); }

Proteus показывает, что вывод настроен как выход, но всегда 0;

Конкретный код привести не могу, так как у меня не заработало совсем ничего.

Внизу я сделал вырезку из даташита на ATMEGA328 по 0 таймеру 8-бит, и занес в один PDF файл.

ATmega328-106-112.pdf

Прошу помочь разобраться с таймером и прерываниями для него.

Share this post


Link to post
Share on other sites
_abk_    127

А прерывания Т0 и глобально разрешены?

Нужен конкретный код, который "не заработало совсем ничего" А так можно долго рассуждать...

Share this post


Link to post
Share on other sites
IgnatiusF    2
8 минут назад, _abk_ сказал:

А прерывания Т0 и глобально разрешены?

Нужен конкретный код, который "не заработало совсем ничего" А так можно долго рассуждать...

Ух, вот тут я жестко затупил, прерывания не разрешал. Сейчас попробую)

Да, пару минут поковырял код и все работает. Точнее я пока только на переполнении проверил, но надеюсь и остальное все будет работать. Спасибо большое)

Share this post


Link to post
Share on other sites

DC/DC-преобразователи MORNSUN R3. Повышенная надёжность - сниженная стоимость!

Особенностью преобразователей R3 являются улучшенные технические характеристики, повышенная надёжность и сниженная стоимость. Электрическая прочность изоляции представленных преобразователей не менее 1500 В, а температурный диапазон применения -40…105ºС.

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

IgnatiusF    2

Да, вот еще кое-что мне не понятно. В некоторых статьях писали, что у таймеров отдельный генератор.

Если я на 8 МГц настрою таймер на тик раз в секунду, то он точно так же будет тикать раз в секунду и на 20 МГц? Даташит читаю-читаю, не вижу нигде четкого и ясного ответа.

Share this post


Link to post
Share on other sites

Новые методы уменьшения дрейфа нуля в малошумящих АЦП Texas Instruments

Стабилизация с помощью двойного прерывания с двойным контролем в новых АЦП ADS1235 производства Texas Instruments позволяет снизить до минимума напряжение смещения и достичь высокой точности в измерительных цепях современных прецизионных цифровых приборов.

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

_abk_    127
10 часов назад, IgnatiusF сказал:

В некоторых статьях писали

Есть 2 хорошие книжки Евстифеева  - функционально структурированные переводы  даташитов  с пояснениями - для Tiny и ATmega. Там разжевано все до мелочей, лучше и не надо ничего. В сети они есть, бывают и бумажные варианты в интернет-магазинах. 

Share this post


Link to post
Share on other sites
ruhi    39
19 часов назад, IgnatiusF сказал:

В некоторых статьях писали, что у таймеров отдельный генератор.

у некоторых(!) таймеров отдельный генератор, такие таймеры называются асинхронными, но вам надо определиться что такое 8МГц, 20МГц если это изменяемая частота тактирования таймера то его интервалы будут соответственно изменяться, и это очевидно!!!

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

что тоже очевидно - само собой разумеется.

Читайте описание периферии процессора в подлинниках.

Share this post


Link to post
Share on other sites
IgnatiusF    2

Вот теперь ясно - если будет слово "асинхронный", то у него свой такт генератор, который работает независимо от частоты процессора, то что и нужно было узнать) Спасибо

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Similar Content

    • By mr_smit
      Вынес то что не получается в упрощенной форме в отдельный проект. Среда разработки CooCox 1.7.8, микроконтроллер STM32F103C8T6.
      Нужно раз в ~100 мсек формировать на ножке МК, например,такую последовательность:

      Стартовую длительность формирует таймер, в первом же своем прерывании по совпадению активирует DMA и дальше уже DMA по запросу таймера загружает значение CCR из массива. Что то похожее на управление светодиодами WS2812B. То что я сочинил выдает на пин:

      Но только один раз при первом вызове. При последующих вызовах данные из массива выдаются без первоначальной длительности в 150 мкс.
      Не могу найти ошибку. 
       
      #include <stm32f10x.h> #include <stm32f10x_conf.h> #include <stm32f10x_gpio.h> #include <stm32f10x_rcc.h> #include <stm32f10x_tim.h> #include <stm32f10x_dma.h> GPIO_InitTypeDef PIN; TIM_TimeBaseInitTypeDef TIM_Config; TIM_OCInitTypeDef TIM_OCConfig; DMA_InitTypeDef DMA_Setting; uint8_t Test_Buf[] = {15,30,30,30,15}; void delay_ms(uint32_t ms) { volatile uint32_t nCount; RCC_ClocksTypeDef RCC_Clocks; RCC_GetClocksFreq (&RCC_Clocks); nCount = (RCC_Clocks.HCLK_Frequency/10000)*ms; for (; nCount != 0; nCount--); } void Init_GPIO(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); PIN.GPIO_Pin = GPIO_Pin_11; // PA11 -> TIM1 Channel4 PIN.GPIO_Mode = GPIO_Mode_AF_PP; PIN.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &PIN); } void Init_TIM_Transmit(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); TIM_TimeBaseStructInit(&TIM_Config); // настройки по дефолту TIM_Config.TIM_Prescaler = 72-1; // Запускаем таймер на тактовой частоте 1 MHz (72000000/(72-1)) TIM_Config.TIM_Period = 150-1; // Период - 150 мкс TIM_Config.TIM_ClockDivision = 0; // частоту дополнительно не делим TIM_Config.TIM_CounterMode = TIM_CounterMode_Up; // считаем вверх TIM_TimeBaseInit(TIM1, &TIM_Config); // Инициализируем TIM1 TIM_OCStructInit(&TIM_OCConfig); // настройки по дефолту TIM_OCConfig.TIM_OCMode = TIM_OCMode_PWM1; // Конфигурируем как ШИМ (выравнивание по границе) TIM_OCConfig.TIM_OutputState = TIM_OutputState_Enable; // Включаем выход TIM_OCConfig.TIM_Pulse = 0; // CCR до старта пока нулевой TIM_OCConfig.TIM_OCPolarity = TIM_OCPolarity_High; // Полярность TIM_OCConfig.TIM_OCIdleState = TIM_OCIdleState_Reset; // состояние выхода по совпадению CCR (сброс) TIM_OC4Init(TIM1, &TIM_OCConfig); // Инициализируем 4-й выход таймера, это PA11 TIM_ARRPreloadConfig(TIM1,ENABLE); // Предзагрузка периода (ARR) TIM_OC4PreloadConfig(TIM1, TIM_OCPreload_Enable); // Предзагрузка длины импульса CCR 4-го канала // (даем досчитать до конца и только потом значение меняется на новое) TIM_DMACmd(TIM1,TIM_DMA_CC4,DISABLE); // выключаем пока запрос к DMA от таймера TIM1 по достижении CCR) TIM_CtrlPWMOutputs(TIM1, ENABLE); // включаем выходы (это только для TIM1) TIM_CCxCmd(TIM1,TIM_Channel_4,TIM_CCx_Enable); // разрешаем таймеру управлять выводом PA11 TIM_ITConfig(TIM1, TIM_IT_CC4, DISABLE); // запрещаем пока таймеру генерировать прерывание по совпадению NVIC_EnableIRQ(TIM1_CC_IRQn); // разрешаем прерывания TIM_Cmd(TIM1, DISABLE); // Выключаем таймер (пока ждем) } void TIM1_CC_IRQHandler(void) // прошло 130 мкс { if (TIM_GetITStatus(TIM1, TIM_IT_CC4) != RESET) { // по совпадению TIM_ClearITPendingBit(TIM1,TIM_IT_CC4); // сбрасываем флаг прерывания TIM1 по совпадению } NVIC_EnableIRQ(TIM1_CC_IRQn); // выключаем прерывания от таймера TIM_ITConfig(TIM1, TIM_IT_CC4, DISABLE); // TIM1->ARR = 40-1; // устанавливаем период 40 мкс TIM1->CCR4 = Test_Buf[0]; // ширину из массива для следующего импульса DMA1_Channel4->CNDTR = 4; // длина данных для DMA на 1 меньше т.к. уже установили выше 1 элемент TIM_DMACmd(TIM1,TIM_DMA_CC4,ENABLE); // разрешаем таймеру делать запрос к DMA по совпадению CCR DMA_Cmd(DMA1_Channel4, ENABLE); // включаем DMA } void Init_DMA(void) { RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); // включаем тактирование DMA1 DMA_Setting.DMA_PeripheralBaseAddr = (uint32_t) &TIM1->CCR4; // куда копировать DMA_Setting.DMA_MemoryBaseAddr = (uint32_t) &Test_Buf[1]; // что копировать DMA_Setting.DMA_DIR = DMA_DIR_PeripheralDST; // копируем в периферию (Peripheral Destination, точка назначения - периферия) DMA_Setting.DMA_BufferSize = 0; // количество передаваемых данных DMA_Setting.DMA_PeripheralInc = DMA_PeripheralInc_Disable; // адрес периферии постоянный DMA_Setting.DMA_MemoryInc = DMA_MemoryInc_Enable; // адрес в памяти увеличиваем DMA_Setting.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord; // периферия 16 бит DMA_Setting.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte; // массив 8 бит DMA_Setting.DMA_Mode = DMA_Mode_Normal; // режим обычный DMA_Setting.DMA_Priority = DMA_Priority_Medium; // приоритет средний DMA_Setting.DMA_M2M = DMA_M2M_Disable; // MemoryToMemory откл. DMA_Init(DMA1_Channel4, &DMA_Setting); // TIM1_CH4 относится к 4-му каналу DMA1 DMA_ITConfig(DMA1_Channel4, DMA_IT_TC, ENABLE); // настраиваем прерывание по окончанию передачи NVIC_EnableIRQ(DMA1_Channel4_IRQn); // включаем прерывания от 4-го канала DMA1 DMA_Cmd(DMA1_Channel4, DISABLE); // пока выключаем 4-ый канал DMA1 } void DMA1_Channel4_IRQHandler(void) // закончили передавать { if (DMA_GetITStatus(DMA1_IT_TC4) != RESET) { // по совпадению DMA_ClearITPendingBit(DMA1_IT_TC4); // сбрасываем флаг прерывания DMA1 Channel4 transfer complete } if (TIM_GetITStatus(TIM1, TIM_IT_CC4) != RESET) { // по совпадению TIM_ClearITPendingBit(TIM1,TIM_IT_CC4); // сбрасываем флаг прерывания TIM1 на всякий случай } TIM1->ARR = 150-1; // вновь настраиваем на период 150 мкс TIM1->CCR4 = 0; // и ждем следующею передачу TIM1->CNT = 0; // TIM_DMACmd(TIM1,TIM_DMA_CC4,DISABLE); // всё выключаем DMA_Cmd(DMA1_Channel4, DISABLE); // TIM_Cmd(TIM1, DISABLE); // TIM_ITConfig(TIM1, TIM_IT_CC4, DISABLE); // TIM_CCxCmd(TIM1,TIM_Channel_4,TIM_CCx_Disable); } int main(void) { Init_GPIO(); Init_TIM_Transmit(); Init_DMA(); delay_ms(1000); while(1) { TIM1->CCR4 = 130-1; // до включения линия удерживается в 0 (CCR=0) TIM_ITConfig(TIM1, TIM_IT_CC4, ENABLE); TIM_CCxCmd(TIM1,TIM_Channel_4,TIM_CCx_Enable); TIM_Cmd(TIM1, ENABLE); delay_ms(100); } }  
      TEST_TIM_DMA.zip
    • Guest Алексей
      By Guest Алексей
      Добрый день.
      Помогите пожалуйста.
      Никак не могу найти простую схему, что не впишу все одно получаю таймер на отключение или через кнопку...
      Делаю инкубатор для яиц, яйца нужно поворачивать 2-3 раза в сутки, у меня есть суточный таймер но у него минимум 1 минута, а мой механизм за 1 минуту прокрутит яйца 4 раза, нужно сделать примерно 15 сек.
      Как правильно называется такой таймер, или дайте схему.
      Спасибо.
    • Guest Руслан
      By Guest Руслан
      Добрый день всем! Столкнулся с такой проблемой. Купил несколько китайских реле времени, но они по питанию на 220 В. Теперь хочу их переделать на 24В переменку, возможно кто-то уже имел дело с такой задачей... Тип таймеров AH2-Y. 
    • By pingyini
      Всем доброго времени суток. Решил я сделать "умную" электронную сигарету на arduino. Концепция заключается в кнопочном управлении мощностью посредством ШИМ, наличии экрана, и некоторыми защитами в виде ограничения максимального времени нажатия и уход камня в сон (режим пониженного энергопотребления) после N секунд простоя.
      Вводные: по нажатию кнопки запускается ШИМ и управляет полевиком, но в целях защиты я хочу ограничить время выполнения кода до 7 секунд(что бы при случайном зажатии кнопки в кармане не получить травматическую ампутацию конечностей)

      Проблема пришла откуда не ждали - обработка нажатой основной кнопки срабатывает как попало. Нажимая кнопку обработчик может сработать сразу и отработает как по маслу, а может и через 5 нажатий не сработать вовсе.  Проверял в живую на Arduino UNO, Pro Mini (328е Меги) и в Proteus'е. Симптомы одни и те же.  Проблема очевидно в коде но я в упор не вижу в чем может быть загвоздка. Уровень у меня "штота умею" поэтому не судите строго. 
       
      #define pwmPin 5 #define buttonStart 3 #define maxOnTime 7000 //максимальное время выполнения условия нажатой кнопки #define RED_LED 7 #define GREEN_LED 8 int power = 150; //boolean StartState; boolean StartStateFlag; //Флаг кнопки Старт unsigned long pressTime; void setup() { pinMode(pwmPin, OUTPUT); pinMode(buttonStart, INPUT); pinMode(RED_LED, OUTPUT); pinMode(GREEN_LED, OUTPUT); Serial.begin(9600); //чисто для отладки } void loop() { if (digitalRead(buttonStart) && StartStateFlag && ((millis() - pressTime) <= maxOnTime)) { // (1) если кнопка старт нажата И была отпущена И нажата менее 7 секунд выполняем: analogWrite(pwmPin, power); //запуск ШИМ Serial.println("PWM_ON"); digitalWrite(GREEN_LED, HIGH); digitalWrite(RED_LED, LOW); } else { // (2) иначе StartStateFlag = false; // кнопка небыла отпущена analogWrite(pwmPin, 0); digitalWrite(GREEN_LED, LOW); Serial.println("PWM_OFF"); pressTime = millis(); } if (!digitalRead(buttonStart)) { //(3) если кнопка не нажата analogWrite(pwmPin, 0); //остановка ШИМ Serial.println("PWM_OFF"); digitalWrite(RED_LED, HIGH); StartStateFlag = true; //была отпущена и можно входить в условие с нажатой кнопкой (1) } } И файлы: сам скетч, .elf и .hex для шПротеуса и проект Протеус.
      P. S. ШИМ в Протеусе не работает в принципе, в железе все ОК 
      BUTTON_TEST.ino
      BUTTON_TEST.ino.eightanaloginputs.hex
      BUTTON_TEST.ino.elf
      BUTTON_TEST.ino.with_bootloader.eightanaloginputs.hex
      ButtonTest.pdsprj
    • By Hadja
      Доброго времени суток.
      Помогите отремонтировать электронный таймер электроплиты Kaiser.
      После мойки плиты таймер перестал подавать признаки жизни.
      При включении в сеть срабатывают реле и всё.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                



  • Сообщения

    • ИЛТ6-30М. В наличии: 600шт по 90р/шт -Закончились! Смотрим обьявление, наличие уточняем! Отправлю: почтой, транспортной компанией, в Москву - с курьером. Контакты: Ольга +79042405117 +79085504505 olgalosewa86@mail.ru
    • ИЛТ6-30М. В наличии: 600шт по 90р/шт. -ПРОДАНЫ! В наличии: Индикаторы:
      Индикатор ИВ-3А. С хранения. В групповой упаковке. В наличии: 200шт по 30р/т. 
      ИВ-8. В наличии: 300шт по 20р/шт.
      Индикатор ИЛЦ1-9/7М. С хранения, в групповой упаковке. В наличии: 100шт по 125р/шт. 
      ИЛЦ1-1/9. В наличии: 750шт по 30р/шт. 
      ИЛЦ2-12/8Л. В наличии: 60шт по 40р/шт. 
      ИЛЦ3-4/7М. В наличии: 2800шт по 25р/шт. 
      ИЛТ1-8М. В наличии: 800шт по 45р/шт. 

      Все с хранения, в групповых упаковках. Паспорт, общий на каждую упаковку! Лампа генераторная ГУ-17. С хранения, в групповой упаковке. В наличии: 125шт по 45р/шт. 
      Лампа генераторная ГУ-43Б-1. 2014 года выпуска. Упаковки без крышек. В наличии 4шт по 3500р/шт.
      Лампа генераторная ГУ-34 Б. С хранения. В упаковке. 3 шт. по 1200 руб.
      Лампа генераторная (пентод) ГУ-46. В упаковке, с хранения. В наличии: 3 шт по 1150р/шт. 
      Лампа генераторная (тетрод) ZE025XA Tesla. 1984 года выпуска, в индивидуальных упаковках. Новые. В наличии 23шт. Лампы с хорошим усилением, проверенные, с гарантией! Цена: 2750р за 1шт 
      Лампа 6Н14П (двойной триод). С хранения, в групповой упаковке. В наличии: 50шт по 30р/шт.
      Лампа (двойной триод) 6Н7С. Групповая упаковка по 100шт. В наличии 284 шт. Цена: 60р/шт. Упаковка немного подпортилась от времени.
      Лампа (триод) 6С19П. Групповая упаковка. В наличии: 50шт по 45р/шт.
      Лампа (кенотрон) 2Ц2С. С хранения. В наличии: 180шт по 40р/шт. 
      Лампа (триод-гептод) 6И1П. С хранения, в групповой упаковке. В наличии: 100шт по 45р/шт 
      Лампа 6П15П. С хранения, в групповой упаковке. В наличии: 50шт по 35р/шт. 
      Лампа СМ13-10 В15d/18. С хранения. 1987года выпуска. В упаковках. В наличии 9000шт по 2р/шт Магнетрон МИ-30. С хранения. Паспорта нет. 1шт 3000р
      Магнетрон импульсный Ми-268. Демонтаж. 2шт по 8000р за шт.
      Магнетрон МИ-119. В пленке, есть паспорт. В наличии: 5шт по 9000руб/шт. Трубка электронно-лучевая ЭЛТ 23ЛМ5В. С хранения. В упаковке.1992 г. в. 9шт по 7000р (При покупке всего кол-ва, хорошо уступим) Саратовская обл. г. Энгельс
      Отправим: почтой, транспортной компанией, в Москву - с курьером.
      Контакты: 
      Моб. тел.:+7904-240-51-17.
      E-mail: olgalosewa86@mail.ru  
    • В моторных МК, где все заточено на управление э/двигателями,  как стандарт периферии - наличие одного-двух интерфейсов квадратурного энкодера. ВО ВСЕХ БЕЗ ИСКЛЮЧЕНИЯ таких модулях на входе стоит ЦИФРОВОЙ ФИЛЬТР. Точно такой же, какой стоит во всех без исключения ПРИЕМНИКАХ UART -  сдвиговый регистр на 2 бита с частотой тактирования  обеспечивающей подавление помех длительностью меньше, чем три периода этой частоты. При наличии всех трех 1 (вход и два выхода) происходит переключение выходного триггера в 1, при наличии всех трех 0 - выходной триггер опрокидывается в 0. Иначе никаких действий с триггером не происходит. Это и есть защита от дребезга. Вероятно производители МК не в курсе, что оптические и индуктивные датчики не дребезжат...
    • ИЛТ6-30М. В наличии: 600шт по 90р/шт. -ЗАКОНЧИЛИСЬ! В наличии: Индикаторы:
      Индикатор ИВ-3А. С хранения. В групповой упаковке. В наличии: 200шт по 30р/т. 
      ИВ-8. В наличии: 300шт по 20р/шт.
      Индикатор ИЛЦ1-9/7М. С хранения, в групповой упаковке. В наличии: 100шт по 125р/шт. 
      ИЛЦ1-1/9. В наличии: 750шт по 30р/шт. 
      ИЛЦ2-12/8Л. В наличии: 60шт по 40р/шт. 
      ИЛЦ3-4/7М. В наличии: 2800шт по 25р/шт. 
      ИЛТ1-8М. В наличии: 800шт по 45р/шт. 
      Все с хранения, в групповых упаковках. Паспорт, общий на каждую упаковку! Лампа генераторная ГУ-17. С хранения, в групповой упаковке. В наличии: 125шт по 45р/шт. 
      Лампа генераторная ГУ-43Б-1. 2014 года выпуска. Упаковки без крышек. В наличии 4шт по 3500р/шт.
      Лампа генераторная ГУ-34 Б. С хранения. В упаковке. 3 шт. по 1200 руб.
      Лампа генераторная (пентод) ГУ-46. В упаковке, с хранения. В наличии: 3 шт по 1150р/шт. 
      Лампа генераторная (тетрод) ZE025XA Tesla. 1984 года выпуска, в индивидуальных упаковках. Новые. В наличии 23шт. Лампы с хорошим усилением, проверенные, с гарантией! Цена: 2750р за 1шт 
      Лампа 6Н14П (двойной триод). С хранения, в групповой упаковке. В наличии: 50шт по 30р/шт.
      Лампа (двойной триод) 6Н7С. Групповая упаковка по 100шт. В наличии 284 шт. Цена: 60р/шт. Упаковка немного подпортилась от времени.
      Лампа (триод) 6С19П. Групповая упаковка. В наличии: 50шт по 45р/шт.
      Лампа (кенотрон) 2Ц2С. С хранения. В наличии: 180шт по 40р/шт. 
      Лампа (триод-гептод) 6И1П. С хранения, в групповой упаковке. В наличии: 100шт по 45р/шт 
      Лампа 6П15П. С хранения, в групповой упаковке. В наличии: 50шт по 35р/шт. 
      Лампа СМ13-10 В15d/18. С хранения. 1987года выпуска. В упаковках. В наличии 9000шт по 2р/шт Магнетрон МИ-30. С хранения. Паспорта нет. 1шт 3000р
      Магнетрон импульсный Ми-268. Демонтаж. 2шт по 8000р за шт.
      Магнетрон МИ-119. В пленке, есть паспорт. В наличии: 5шт по 9000руб/шт. Трубка электронно-лучевая ЭЛТ 23ЛМ5В. С хранения. В упаковке.1992 г. в. 9шт по 7000р (При покупке всего кол-ва, хорошо уступим) Саратовская обл. г. Энгельс
      Отправим: почтой, транспортной компанией, в Москву - с курьером.
      Контакты: 
      Моб. тел.:+7904-240-51-17.
      E-mail: olgalosewa86@mail.ru  
    • Манометр грузопоршневой МП-6 кл.0,05.  Б/у, в хорошем рабочем состоянии. Есть груза. Цена: 20000 руб. - ПРОДАН! В наличии: Комплект грузов к манометру грузопоршневому МП-6. С хранения. В ящике. Цена: 4000р Саратовская обл. г. Энгельс. Отправим: почтой, транспортной компанией, в Москву - с курьером. Наличный-безналичный расчет Контакты:  Ольга.
      Моб. тел.:+7904-240-51-17. E-mail: olgalosewa86@mail.ru