Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
23.01.2011, 18:11
|
|
Почётный гражданин KAZUS.RU
Регистрация: 24.09.2007
Сообщений: 1,437
Сказал спасибо: 287
Сказали Спасибо 339 раз(а) в 202 сообщении(ях)
|
С код помогите решить проблему
Всем доброе время.
Вобшем проблема такая
Есть код
#include ‹mega8535.h›
#include ‹delay.h›
extern unsigned char zadanie_I; //переменная задание для источника тока
extern unsigned char zadanie_U; //переменная задание для источника напряжения
void start_310 (void){//функция первичного включения инвертора когда подано напряжение вообще
delay_ms (20); //Ждем 2 секунды пока заряжаются через резистор силовые конденсяторы
PORTB.0=1; //Включаем оптотиристор шунтирующий резистор
if (zadanie_I==0){ //если задание тока равно 0
zadanie_I=1; //записываем минимальное значение задания тока
//zadanie_I_eep=zadanie_I;
}
if (zadanie_U==0){ //если задание напряжения равно 0
zadanie_U=1; //записываем минимальное значение задания напряжения
//zadanie_U_eep=zadanie_U;
}
delay_ms (5); //Ждем 0,5 секунды
TCCR2=0x6E; //Запускаем таймер 2 со всеми настройками ШИМа
}
В порт пишем единицу PORTB.0=1, а на пине импульсы. В протеусе симулируется вроде нормально. Какая может быть причина? В delay стоит не то что в коментарии умышлено. Функция используется 1 раз в main перед while (1) только при подаче питания на контролер.
Последний раз редактировалось 7Fantomas7; 23.01.2011 в 18:17.
|
|
|
Сказали "Спасибо" 7Fantomas7
|
|
|
23.01.2011, 19:32
|
|
Прописка
Регистрация: 11.10.2008
Сообщений: 132
Сказал спасибо: 8
Сказали Спасибо 35 раз(а) в 30 сообщении(ях)
|
Re: С код помогите решить проблему
Хм,.. 1 сек = 1000 мС.
|
|
|
|
23.01.2011, 19:44
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.11.2008
Адрес: г.Смоленск
Сообщений: 2,018
Сказал спасибо: 348
Сказали Спасибо 1,024 раз(а) в 552 сообщении(ях)
|
Re: С код помогите решить проблему
пауза 20 мс, 2 сек = 2000 мс
5 мс, 0.5 сек = 500 мс
|
|
|
|
23.01.2011, 20:09
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: С код помогите решить проблему
Сообщение от 7Fantomas7
|
Всем доброе время.
Вобшем проблема такая
Есть код
Код:
|
#include ‹mega8535.h›
#include ‹delay.h›
extern unsigned char zadanie_I; //переменная задание для источника тока
extern unsigned char zadanie_U; //переменная задание для источника напряжения
void start_310 (void){//функция первичного включения инвертора когда подано напряжение вообще
delay_ms (20); //Ждем 2 секунды пока заряжаются через резистор силовые конденсяторы
PORTB.0=1; //Включаем оптотиристор шунтирующий резистор
if (zadanie_I==0){ //если задание тока равно 0
zadanie_I=1; //записываем минимальное значение задания тока
//zadanie_I_eep=zadanie_I;
}
if (zadanie_U==0){ //если задание напряжения равно 0
zadanie_U=1; //записываем минимальное значение задания напряжения
//zadanie_U_eep=zadanie_U;
}
delay_ms (5); //Ждем 0,5 секунды
TCCR2=0x6E; //Запускаем таймер 2 со всеми настройками ШИМа
} |
В порт пишем единицу PORTB.0=1, а на пине импульсы. В протеусе симулируется вроде нормально. Какая может быть причина? В delay стоит не то что в коментарии умышлено. Функция используется 1 раз в main перед while (1) только при подаче питания на контролер.
|
Проверить включение вотчдога. И выключить. Первое, что пришло в голову. По тексту анси си претензий нет. А вот что происходит вне приведенного модуля - тут не конкурс прорицателей.
Разве что задержка коротковата, 5 мсек. Судя по каментам, вам подлиннее хотелось? И еще, для облечения понимания наваянного вами, ради Бога, применяйте тэг CODE, он и создан для удобства чтения кодов людьми. Хорошо еще, у вас нет вложенных условий-циклов. Я ввел на вашу цитату - красиво?
Последний раз редактировалось ut1wpr; 23.01.2011 в 20:15.
|
|
|
Эти 2 пользователя(ей) сказали Спасибо ut1wpr за это сообщение:
|
|
|
23.01.2011, 21:56
|
|
Почётный гражданин KAZUS.RU
Регистрация: 24.09.2007
Сообщений: 1,437
Сказал спасибо: 287
Сказали Спасибо 339 раз(а) в 202 сообщении(ях)
|
Re: С код помогите решить проблему
Nfc Saadov ДЛЯ ВАС СПЕЦИАЛЬНО НАПИСАЛ
Цитата:
|
В delay стоит не то что в коментарии умышлено.
|
Да и какое это имеет отношение к вопросу.
ut1wpr,
Цитата:
|
Разве что задержка коротковата, 5 мсек. Судя по каментам, вам подлиннее хотелось?
|
Просто в протеус задержки в секундах будут симулироваться до нового года. Я потом исправлю.
Цитата:
|
Я ввел на вашу цитату - красиво?
|
Я просто не знаю как с полосами прокрутки делать, к своему стыду.
Цитата:
|
А вот что происходит вне приведенного модуля - тут не конкурс прорицателей.
|
Да вы правы, вне приведенного модуля все выглядит так
Код:
|
/************************************************** ***
This program was produced by the
CodeWizardAVR V2.04.4a Advanced
Automatic Program Generator
© Copyright 1998-2009 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project :
Version :
Date : 03.10.2010
Author : NeVaDa
Company : Microsoft
Comments:
Chip type : ATmega8535L
Program type : Application
AVR Core Clock frequency: 16,000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 128
************************************************** ***/
#include ‹mega8535.h›
#include ‹delay.h›
#include "start_310.h"
#include "peremenie_konst.h"
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=T State6=T State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTA=0x00;
DDRA=0x3F;
// Port B initialization
// Func7=Out Func6=Out Func5=Out Func4=In Func3=Out Func2=In Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=P State3=0 State2=P State1=0 State0=0
PORTB=0x14;
DDRB=0xEB;
// Port C initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=1 State6=1 State5=1 State4=1 State3=1 State2=1 State1=1 State0=1
PORTC=0xFF;
DDRC=0xFF;
// Port D initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=In Func2=In Func1=In Func0=In
// State7=0 State6=1 State5=1 State4=1 State3=P State2=P State1=P State0=P
PORTD=0x7F;
DDRD=0xF0;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x40;
// Analog Comparator initialization
// Analog Comparator: On
// The Analog Comparator's positive input is
// connected to the Bandgap Voltage Reference
// Interrupt on Falling Output Edge
// Analog Comparator Input Capture by Timer/Counter 1: Off
//ACSR=0x4A;
ACSR=0x00;
SFIOR=0x00;
/*** ADC initialization
// ADC Clock frequency: 1000,000 kHz
// ADC Voltage Reference: AREF pin
// ADC High Speed Mode: Off
// ADC Auto Trigger Source: Free Running
// Only the 8 most significant bits of
// the AD conversion result are used
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0xA4;
SFIOR&=0x0F;
***/
// Global enable interrupts
#asm("sei")
/************************************************** ************************************************** ***************/
start_310();
while (1){
}
} |
PS а как вертикальную прокрутку сделать.
Собачий таймер пробовал и так и так.
Последний раз редактировалось 7Fantomas7; 23.01.2011 в 22:24.
|
|
|
Сказали "Спасибо" 7Fantomas7
|
|
|
24.01.2011, 00:02
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.11.2008
Адрес: г.Смоленск
Сообщений: 2,018
Сказал спасибо: 348
Сказали Спасибо 1,024 раз(а) в 552 сообщении(ях)
|
Re: С код помогите решить проблему
По питанию есть конденсаторы? Питание не шумное? Ресет подтянут? Конденсатор от ресета на землю есть?
|
|
|
|
24.01.2011, 00:24
|
|
Вид на жительство
Регистрация: 14.10.2009
Сообщений: 338
Сказал спасибо: 35
Сказали Спасибо 92 раз(а) в 73 сообщении(ях)
|
Re: С код помогите решить проблему
Кондеры на кварце какого номинала? Кварц высокий или низкопрофильный? Если низкий то надо кондеры уменьшить до 12-15 пикух чтобы кварц работал на своей первой гармонике.
__________________
Найди путь или проложи сам!
|
|
|
Сказали "Спасибо" MasterMushi
|
|
|
24.01.2011, 00:31
|
|
Почётный гражданин KAZUS.RU
Регистрация: 24.09.2007
Сообщений: 1,437
Сказал спасибо: 287
Сказали Спасибо 339 раз(а) в 202 сообщении(ях)
|
Re: С код помогите решить проблему
Цитата:
|
По питанию есть конденсаторы?
|
По питанию установлено 4 шт по 0,1 мкф вокруг процесора с удалением от ног до 5мм и один конденсатор 1500 мкф.
Цитата:
|
Питание не шумное?
|
До 160 миливольт на ногах.
Подтянут 12кОм к плюсу и 0,1мкф на землю пульсация таже.
Вообще пульсация это шум щупа или по земле чего гуляет. Землю осцилографа вешаю на землю схемы и туда же щуп и тоже вижу пульсацию. Безпорядочный шум.
Цитата:
|
Кондеры на кварце какого номинала?
|
22 пика
Кварц высотой милиметров 5, вобшем судя по всему низкопрофильный.
Я не думаю что из за кварца потому как частота импульсов на пине стабильна 34,13кГц, ширина стабильна. Если бы был хаотический reset или шум колбасил не было бы стабильной частоты импульсов на пине.
Последний раз редактировалось 7Fantomas7; 24.01.2011 в 00:51.
|
|
|
Сказали "Спасибо" 7Fantomas7
|
|
|
24.01.2011, 00:47
|
|
Почётный гражданин KAZUS.RU
Регистрация: 24.09.2007
Сообщений: 1,437
Сказал спасибо: 287
Сказали Спасибо 339 раз(а) в 202 сообщении(ях)
|
Re: С код помогите решить проблему
Во вложении проект. Написан в CVAVR 2.05 схема в Протеусе, симуляция настроена. Симулировал в AVRStudio все нормально садится на пин единица все вроде нормально, с симуляцией в протеусе какието глюки, я задал вопрос в другой теме.
Последний раз редактировалось 7Fantomas7; 24.01.2011 в 00:50.
|
|
|
Сказали "Спасибо" 7Fantomas7
|
|
|
24.01.2011, 00:51
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: С код помогите решить проблему
Может контакты на осциллографе окислились/поизносились? Поотключайте разъёмы.
|
|
|
Сказали "Спасибо" omercury
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 05:11.
|
|