есть проблема перейти с AT90S4433 на ATMEGA8

Обсуждаем контроллеры компании Atmel.
Ответить
Родился
Сообщения: 18
Зарегистрирован: Пн окт 19, 2009 15:07: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.
... в даташите все шито-крыто ;))
Контактная информация:
Реклама
Прорезались зубы
Аватара пользователя
Сообщения: 222
Зарегистрирован: Чт июл 08, 2010 01:03:40
Откуда: Украина, Киев

Сообщение Antifritz »

Я надеюсь, что программу перекомпилировали под мегу8. Отличия у них только в адресации регистров и прстая мигалка светодиодом(на делеях, без таймеров) должна нормально работать на обеих. А что с CKSEL фьюзами? CKSEL=0000 - это внешний источник тактирования, CKSEL=1111 - это кварц.
Реклама
Родился
Сообщения: 18
Зарегистрирован: Пн окт 19, 2009 15:07:18
Откуда: Бийск, Алтайский край, Россия

Сообщение kit_sergo »

Antifritz, спасибо, что откликнулись!
Программу, если этот небольшой кусок кода можно назвать программой, я создал для MEGA8 при помощи CodeWizardAVR (это в CodeVisionAVR) и немного постарался "ручками"...
А, что по поводу CKSEL Вы намекаете? У меня внешний кварц 4МГц. Если знаете наверняка, то подскажите как настроить галки
этих битов в PonyProg2000. Я так понимаю, что либо они все выключены должны быть, либо все установлены.

Немного повторюсь, насчёт настройки битов конфигурации и секретности. У меня в PonyProg2000 установлены галки только у битов
CKOPT
BOOTSZ1
BOOTSZ0
SUT1
SUT0
(т.е. у остальных они не установлены, т.е. сброшены), может чего не так делаю???
... в даташите все шито-крыто ;))
Контактная информация:
Вымогатель припоя
Аватара пользователя
Сообщения: 650
Зарегистрирован: Пн июн 18, 2012 12:01:04
Откуда: Челябинская область, Копейск

Сообщение zero648 »

С PONY не работал, но если нужно просто разобраться с программированием, то советую фузы вообще пока не трогать, по заводским настройкам у меги8 тактирование стоит от внутреннего генератора 1 Мгц, и все ограничения сняты, пробуй пока просто программировать, чтобы понять архитектуру камня.
С программой походу не помогу, асм юзаю, готовую прошивку если, а смысл?
Реклама
Эиком - электронные компоненты и радиодетали
Родился
Сообщения: 18
Зарегистрирован: Пн окт 19, 2009 15:07:18
Откуда: Бийск, Алтайский край, Россия

Сообщение 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 мк уже программироваться не будет. Сегодня я это проверил. Хорошо, что у меня есть ещё и программатор параллельный, иначе выкинул бы мк :(
... в даташите все шито-крыто ;))
Контактная информация:
Реклама
Ответить

Вернуться в «AVR»