Вообще кстати puts() ведь должна сама в конце символ новой строки печатать. У neid либо она не из stdlib.h берется (реализация функции), либо в терминале настроен newline на CR+LF возможно.
ADC0.COMMAND = 0x01;//Start Conversion
while ( (ADC0.INTFLAGS & 1)==0 );// подождём конца первого преобразования (флага прерывания ацп)
asm("sei"::); // Разрешить глобальное прерывание
ADC0.INTFLAGS |=1;
И оставить только sei(); (причем лучше так из #include <avr/cpufunc.h>, без asm()).
Если не поможет, попробуйте в студии из Atmel Start'а сгенерить код и посмотреть что там оно нагенерит. Вообще в мануале пишут что надо асинхронный канал настроить на использование синхронного. Честно с системой событий новых AVR я сам пока не разбирался. Но если бы случился затык, полез бы смотреть код из генератора.
• Configure TCA with the desired frequency and period
• Select TCA overflow event as an event source for synchronous event channel 0
• Configure asynchronous user channel 1 (ADC0) to use synchronous event channel 0 as event
input
• Configure the ADC0 for an ADC conversion triggered by an event
[uquote="WiseLord",url="/forum/viewtopic.php?p=3968950#p3968950"]neid, очевидно же: putchar('\n'); putchar('\r');
P.S. Хотя и можно и puts обойтись, да[/uquote]
Честно я залез в help, и только перевел описание для библиотеки <stdlib.h> вчера, а до этой библиотеки <stdio.h> долез сегодня после вашего сообщения, и увидел что вы имеете ввиду - void putchar(char c);. Вообще я только постигаю все это дело и многие мои тупые первые ошибки гуглю или ищу на форумах более менее правильно объяснение... и может мне первым делом надо было понять для чего эти библиотеки, и как они работают. Но нам же уже надо в УАРТ данные слать))))
NStorm писал(а):Вообще кстати puts() ведь должна сама в конце символ новой строки печатать. У neid либо она не из stdlib.h берется (реализация функции), либо в терминале настроен newline на CR+LF возможно.
Из нее самой stdlib.h , подключена еще alcd.h. Я пока не в железе, а в Протусе, не увидел там таких настроек терминала.
Мужики в любом случаем спасибо, ошибки свои понял что я не так делал!)
[uquote="Lilia",url="/forum/viewtopic.php?p=3969060#p3969060"]А вот заработало, когда EVSYS.ASYNCUSER0 на EVSYS.ASYNCUSER1 поменяла. Может поделитесь почему 1 должен быть? [/uquote]
USER канал в EVSYS - это "получатель" сообщения. Конкретно именно ADC0 находится в ASYNCUSER1. Это написано в таблице 14.5.5:
Т.е. при n=1, выбираем "целью" события ADC0. Значит писать надо в EVSYS.ASYNCUSER1. Чуть ниже небольшая таблица, которая показывает 4 варианта что можно туда записать - это тот канал, с которого будем принимать сообщения.
"Отправитель", это там где просто канал, без USER. Т.к. у нас отправитель TCA0_OVF_LUNF - он находится в SYNCCH0 (табл. 14.5.4), поэтому и пишем сюда 0x1. Тем самым говоря, что отправитель был задан в канале SYNCCH0.
Вы же получателем выбрали сам таймер обратно, записав в EVSYS.SYNCUSER0 = 1 (табл. 14.5.6). А если писали в EVSYS.ASYNCUSER0 - то отправляли событие в таймер Б (TCB), соотв. по таблице 14.5.5.
Чуть ниже небольшая таблица, которая показывает 4 вариант что можно туда записать - это то, кто будет "отправитель" сообщения.
Это не отправитель, а выбор канала, по которому будут приходить события. А вот к уже выбранному каналу необходимо привязать отправителя. Каких отправителей на какой канал можно повесить - надо смотреть даташит.
Асинхронный канал предназначен для асинхронных событий (фронты этих событий не синхронизируются с тактовой частотой МК) от внешних ног, от асинхронных таймеров.
Lilia, вообще по-умолчанию должно быть. Попробуйте обновить студию и Pack поддержки семейства МК (не помню где, но где-то отдельно там в опциях они есть). Студия сейчас кстати Microchip Studio стала называться.
У меня новый вопрос. Пытаюсь настроить внешнее прерывание в том же attiny1607. В регистре INTFLAGS по внешнему событию в порта А меняется бит, но прертывание не происходит. Прерывание таймера и АЦП удалось настроить. Не понимаю в чем может быть дело.
Добавлено after 2 hours 41 minute 36 seconds:
[uquote="Lilia",url="/forum/viewtopic.php?p=3969135#p3969135"]У меня сама студия только названия регистров подсказывает. Может это где-то настраивается?[/uquote]
Приветствую. Я с новыми мк AVR не работал. Посмотрел бегло даташит на упомянутый камушек. Что могу сказать. Интересненько. От классических авр есть во многом серьёзные отличия. Хотел бы поинтересоваться насчёт впечатлений об этих камушках. Что скажете? Плюсы, минусы.
Demiurg, там много из xmega перекочевало. Камни классные, себе взял attiny1614 на поиграться, но пока только соб-но и "игрался" с ними только. Преимуществ масса. Просто на порядок более развитая периферия, которая местами даже лучше stm32 (ничего против stm32 не имею, местами там лучше, просто факты что местами у 0-series/1-series AVRок есть круче вещи). Недостатки - сходства с классическими AVR очень мало, осваивать почти заново всё надо. Программатор нужен UPDI, это легко решаемо в принципе, полно вариантов уже из чего их собрать. Что USBAsp есть мод., из CH340 переходника можно сделать и т.д. Я покупал оригинальный Snap! за $15 - работает в родных IDE + есть отладка железная (не проверял правда пока). Как-то так.
ЗЫ. Помимо тинек у них подобные штуки еще в линейке мег появились: https://www.microchip.com/wwwproducts/en/AVR128DA64