ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
24 ноября
994614
Tpoeшник (13.04.2020 12:34 - 13:05, просмотров: 15033)
Добрый! Нашлись на полке ATMega324PB. Решил на основе этого процессора сделать небольшой узел для железки. IAR у меня ломаный и старый. Другого я не видел и не знаю, везде этот. Не поддерживает такой кристалл. Но поддерживает например другой проц с схожим названием ATmega324p. Скачал демо версию IARa для AVR и вытащил из него iom324pb.h и заменил им iom324p.h ! 

В проекте выбрал проц ATmega324p. Компилится, заливается в проц, работает мигалка диодом.

В проекте нужны все три UART. Но если добавлять код для этого 3го UART - ошибка.

...
#pragma vector=USART2_RX_vect

__interrupt void USART2_Rx_isr(void) {

  INT08U data;

  INT08U tmphead;

  data = UDR2;

  tmphead = ( UART2_RxHead + 1 ) & UART2_RX_BUFFER_MASK;

  UART2_RxHead = tmphead;

  if (tmphead == UART2_RxTail) { }

  UART2_RxBuf[tmphead] = data;

}
...


Error[e16]: Segment INTVEC (size: 0xc4 align: 0x1) is too long for segment definition. At least 0x48 more bytes needed. The problem occurred while

processing the segment placement command "-Z(CODE)INTVEC=0-(_..X_INTVEC_SIZE-1)", where at the moment of placement the available memory

ranges were "CODE:0-7b"

   Reserved ranges relevant to this placement:

   CODE:0-7b ?FILL1

Error while running Linker