Страница 1 из 1
есть проблема перейти с AT90S4433 на ATMEGA8
Добавлено: Пт ноя 02, 2012 17:57:18
kit_sergo
Доброго времени суток, уважаемые коты!
Помогите чем можете...
Программировал AT90S4433 без проблем, теперь хочу перейти в связи с известными проблемами на ATMEGA8.
На LCD информацию выводил, сигналы АЦП обрабатывал, с таймерами работал, ШИМ сигналы использовал для управления симисторами, уровень подготовки есть... но чёрт возьми как??? С ATMEGA8 у меня реальный ступор возник...
Пробую прошить программу из hex файла подготовленного CodeVisionAVR через PonyProg2000 в mega8, а она мертвая.
Для заинтересовавшихся вышлю код программы...
Чего прошу?
Хочу рабочий исходник программы для mega8: ну просто светодиодом на любом пине порта поморгать.
Настройку битов конфигурации и секретности в PonyProg2000: V CKOPT; V BOOTSZ1; BOOTSZ0; V SUT1; V SUT0
остальные фузы без галочек, может чего не так делаю???
Ничего сверхестественного не прошу, разберусь дальше сам. Просто тупо стартануть надо...
У меня есть CodeVisionAVR 1.24.2с Evaluation, PonyProg2000 2.06c Beta Jul 27 2003.
Есть программатор, подключающийся к COM порту и теперь уже есть параллельный программатор Sterch ST-007.
Re: есть проблема перейти с AT90S4433 на ATMEGA8
Добавлено: Пт ноя 02, 2012 20:54:19
Antifritz
Я надеюсь, что программу перекомпилировали под мегу8. Отличия у них только в адресации регистров и прстая мигалка светодиодом(на делеях, без таймеров) должна нормально работать на обеих. А что с CKSEL фьюзами? CKSEL=0000 - это внешний источник тактирования, CKSEL=1111 - это кварц.
Re: есть проблема перейти с AT90S4433 на ATMEGA8
Добавлено: Пт ноя 02, 2012 21:28:35
kit_sergo
Antifritz, спасибо, что откликнулись!
Программу, если этот небольшой кусок кода можно назвать программой, я создал для MEGA8 при помощи CodeWizardAVR (это в CodeVisionAVR) и немного постарался "ручками"...
А, что по поводу CKSEL Вы намекаете? У меня внешний кварц 4МГц. Если знаете наверняка, то подскажите как настроить галки
этих битов в PonyProg2000. Я так понимаю, что либо они все выключены должны быть, либо все установлены.
Немного повторюсь, насчёт настройки битов конфигурации и секретности. У меня в PonyProg2000 установлены галки только у битов
CKOPT
BOOTSZ1
BOOTSZ0
SUT1
SUT0
(т.е. у остальных они не установлены, т.е. сброшены), может чего не так делаю???
Re: есть проблема перейти с AT90S4433 на ATMEGA8
Добавлено: Пт ноя 02, 2012 23:57:21
zero648
С PONY не работал, но если нужно просто разобраться с программированием, то советую фузы вообще пока не трогать, по заводским настройкам у меги8 тактирование стоит от внутреннего генератора 1 Мгц, и все ограничения сняты, пробуй пока просто программировать, чтобы понять архитектуру камня.
С программой походу не помогу, асм юзаю, готовую прошивку если, а смысл?
Re: есть проблема перейти с AT90S4433 на ATMEGA8
Добавлено: Сб ноя 03, 2012 00:02:20
kit_sergo
Тем у кого нет осциллографа проверить работает ли микроконтроллер ATMega8 можно зашив программу:
Код: Выделить всё
void main(void)
{
// Input/Output Ports initialization
PORTB=0x00; DDRB=0xFF; PORTC=0x00; DDRC=0xFF; PORTD=0x00; DDRD=0xFF;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 4000,000 kHz
TCCR0=0x01; TCNT0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
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: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00; TCCR2=0x00; TCNT2=0x00; OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
MCUCR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x01;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 9600
UCSRA=0x00; UCSRB=0x18; UCSRC=0x86; UBRRH=0x00; UBRRL=0x19;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
// Analog Comparator Output: Off
ACSR=0x80; SFIOR=0x00;
// ADC initialization
// ADC Clock frequency: 125,000 kHz
// ADC Voltage Reference: AREF pin
// ADC High Speed Mode: Off
ADMUX=ADC_VREF_TYPE; ADCSRA=0x85; SFIOR&=0xEF;
// Watchdog Timer initialization
// Watchdog Timer Prescaler: OSC/2048k
WDTCR=0x1F; WDTCR=0x0F;
// Global enable interrupts
#asm("sei")
while (1)
{
#asm("wdr")
// Place your code here
#asm
dec r23
mov r22,r23
metka_1:
dec r22
brne metka_1
ldi r22,0xFF
metka_2:
dec r22
brne metka_2
ldi r30,0xFF
out 0x18,r30
out 0x15,r30
out 0x12,r30
mov r22,r23
metka_3:
dec r22
brne metka_3
ldi r22,0xFF
metka_4:
dec r22
brne metka_4
ldi r30,0x00
out 0x18,r30
out 0x15,r30
out 0x12,r30
#endasm
};
}
Подключив на любой выход любого порта пьезо-динамик, Вы услышите прикольную сирену. Если контроллер жив конечно
Antifritz! По поводу галок напротив фьюзов CKSEL могу сказать следующее. Для внешнего кварца 4МГц установленного на плате эти галки в PonyProg2000 ставить не надо. Если их поставить, то внутрисхемно по SPI мк уже программироваться не будет. Сегодня я это проверил. Хорошо, что у меня есть ещё и программатор параллельный, иначе выкинул бы мк
