Перейти к содержанию

udlcvn

Members
  • Постов

    34
  • Зарегистрирован

  • Посещение

Весь контент udlcvn

  1. Вот так я объявил и все заработало int user_data[] __attribute__((space(eedata))) = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
  2. Для объявления массива в памяти EEPROM посмотрел в хелпе "MPLAB XC16 C Compiler Help" как это делается и взял оттуда кусок кода. Вот этот int _EEDATA(2) user_data[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; скопировал в текст программы где объявляются глобальные переменные и она перестала компилироваться. Может кто знает как объявить массив в энергонезависимой памяти? Или подскажет что здесь не правильно.
  3. Если программу только компилировать то удачно. Это сообщение появляется после удачной компиляции при запуске симуляции. Может гугл не правильно перевел. О каком инструменте речь? Я недавно в MPLAB работаю.
  4. Мое сообщение вы не внимательно читали. Вот сообщение симулятора И вот гугл перевод сообщения. Из сообщения понятно что "программа не была построена с использованием расширенных инструкций процессора" А где их взять эти расширенные инструкции. Я подумал что они есть в XC16. Этот контроллер PIC18F2520 и этот PIC18F2585 работает в симуляторе а этот PIC18F44J11 и этот PIC18F24J10 не работает. Они все 18-ой серии. Дгадался что с буквой "J" в названии не симулируется? Какой он серии и как его симулировать?
  5. Нужна программа для написания и отладки кода на Си для пик контроллеров.
  6. Вот такое сообщение выкидывает если в настройках стоит например PIC18F44J11 и другие но не все. С этим например PIC18F2520 работает. Устанавливал компиляторы Си ХС8 и ХС16 но в списке только ХС8. Может из-за этого не работает. Как с этим бороться?
  7. Все решилось это не прошивка это мусор в переменных.
  8. Слетает прошивка при включении/выключении питания. ATiny2313A После прошивки работает пока не отключу питание. Пытался отключить и включить при заброшенном контроллере (подключал ресет к земле) все равно слетает.
  9. Точно. Просто я для проверки одну команду разместил в отдельном файле так оно не зашло туда.
  10. Atmel Studio 7.0 как настроить чтобы при отладке заходить в файл. Мне это надо чтоб проект не был в одном файле. Это не удобно приходится крутить колесо долго.
  11. Все верно дело во фузе CLKDIV8 был запрограммирован. Про существование данного фуза я раньше не слышал. Флаг опустошения буфера передачи UDRE0 я не проверяю когда уверен что буфер пуст. В данном случае из за большого интервала между передачами я не проверяю. А если я точно знаю что и буфер и сдвиговый регистр пуст то загружаю два байта подряд. И потери данных не было. Я так отправлял данные с АЦП сразу два байта старший и младший. Так как АЦП работал в непрерывном режиме и время преобразования постоянно то просто рассчитал минимальную скорость передачи чтобы данные не задерживались (отправлялись быстрей чем получались). Так удобней прям из прерывания АЦП и сокращается время обработки прерывания. А если данные будут передаваться медленней необходимого то все равно будет потеря данных, в данном случае даже если проверять бит UDRE0. Бит UDRE0 проверяют чтоб не перезаписать данные которые еще не переместились в сдвиговый регистр.
  12. В место любых данных передает только 0 или 128. Программа просто передает известные значения но получаем в место отправленных только 0 или 128. Код можно пропустить и прочитать до конца сообщение для понимания проблемы. Настраеваю вот так ;========================================================================================================================== ;===================== Константы UART ===================================================================================== .equ ON_UCSR0A = (0<<RXC0 | 0<<TXC0 | 0<<UDRE0 | 0<<FE0 | 0<<DOR0 | 0<<UPE0 | 0<<U2X0 | 0<<MPCM0) .equ ON_UCSR0B = (1<<RXCIE0 | 0<<TXCIE0 | 0<<UDRIE0 | 1<<RXEN0 | 1<<TXEN0 | 0<<UCSZ02 | 0<<RXB80 | 0<<TXB80) .equ ON_UCSR0C = (0<<UMSEL01 | 0<<UMSEL00 | 0<<UPM01 | 0<<UPM00 | 1<<USBS0 | 1<<UCSZ01 | 1<<UCSZ00 | 0<<UCPOL0) ; Настройка скорости .equ ON_UBRR0H = 0 .equ ON_UBRR0L = 25 ;===================== константы UART ===================================================================================== ;========================================================================================================================== макрос выкладую чтобы видно было че за команда "uout" .macro uout .if @0<0x40 out @0,@1 .else sts @0,@1 .endif .endm потом записую так //************************************************************************************* ;===================== Настройка UART ================================================= ldi temp, ON_UCSR0A uout UCSR0A, temp ldi temp, ON_UCSR0B uout UCSR0B, temp ldi temp, ON_UCSR0C uout UCSR0C, temp ; Настройка скорости ldi temp, ON_UBRR0H uout UBRR0H, temp ldi temp, ON_UBRR0L uout UBRR0L, temp ;===================== настройка UART ================================================= //************************************************************************************* специально для проверки организовал такой цикл. main: ldi temp, 255 inc time1 cp time1, temp brne main ldi temp, 255 inc time2 cp time2, temp brne main inc temp2 uout udr0, temp2 rjmp main он отправляет раза два за секунду байты каждый раз больше на единицу но приходит в место данных только 128 и 0 вот копи паст 128 0 128 128 0 128 128 128 128 128 128 128 0 128 128 128 128 128 128 0 128 128 128 128 128 0 128 128 0 128 0 0 128 128 0 128 0 128 128 128 128 128 128 0 128 128 128 128 128 0 128 128 0 128 0 128 128 128 128 128 0 128 128 128 128 а должно быть 1 2 3 4 5 6 и так далее по кругу. До этого организовывал передаю на контроллер который в прерывании приема отправлял байт назад. И было замечено что при отправке байта примерно 190 и больше по светодиоду было видно что контроллер вообще ниче не отправляет да и принятых в компе байт не добавлялось. Предположение что не принимает старт бит а прием байтов с маленьким значением из за большого числа нулей воспринимается как старт бит. скорости вроде правильные. кварц 8МГц скорость порта serialPort1.BaudRate = 19200; Хочю отметить что прием передачю на мега8 я уже организовывал таких проблем небыло.
  13. В нэте есть инфа как добавлять в список новые мк. Я думаю не понадобится так как новая прошивка не дружит с USBASP_AVRDUDE_PROG.
  14. Поставил новую прошивку с оф сайта. Полностью стер и переписал всю память а не только флеш. И ещо нужно было скорость программирования подобрать. В старой была скорость бешеная а щас медленней. На большой и на совсем маленькой не работает. Также щас программатор перестал работать с программой USBASP_AVRDUDE_PROG А она и нафик не нада если она не хочет шить мегу48Р.
  15. Есть купленный Usbasp программатор который прошивал нормально программой USBASP_AVRDUDE_PROG. Но надо было прошить мегу48Р которой нет в списке. Поэтому я искал программу где есть и нашол. Khazama AVR Programmer. Посмотрев видео я скачал себе эту прогу и так как у меня тоже выскакивала ошибка как в видео то решил обновить. Обновил один нормально но второй программатор новой прошивкой в уже обновленном программаторе прошить не удалось. Короче нажимаю программировать горит красный диод а в проге останавливается шкала прогресса. И выскакивает ошибка. Пробовал залить другую прошивку для меги8 залилась нормально кратковременная остановка прогресса прошивки, было видно по шкале прогресса, но прошивка все таки залилась. Проблемма в том что то прошивка не программатора зашилась. А прошивка программатора программой USBASP_AVRDUDE_PROG а также Khazama AVR Programmer.были безуспешны. Но зато программатору пациенту стало совсем плохо и он перестал подавать признаки жизни. Может фюзы слетели. Решил отложить я его и заняться проектом на мега48Р который и нужно было прошивать. Но до этого он прошивался нормально токо херня выскакивала которую закрыл и он дальше шется, а щас начала выскакивать ошибка как при попытке записать программатор. Так что я остановил эксперименты чтоб контроллер не испортить. Где взять нормальную прошивку для Usbasp на мега8? Старую китайскую я не сохранил. Или предложить другой способ решения проблемы.
  16. Когда будет время планирую проводок возле нагревателя как то припаять чтоб без обдува он распаивался.
  17. известно что будет. Так как у PIND адрес 0х29 и к нему нужно обращатся "in r16, PIND" то адрес записанный в PIND = 0х29 - 0х20 = r9 То соответственно в r16 копируется регистр r9.
  18. Дело не в граблях а в том чем удобней и быстрей пользоваться. А вы сами консольными граблями пользоваться умеете? Примерчик хоть скиньте а то я сомневаюсь.
  19. Я уже писал Перехожу на Khazama AVR Programmer проверил работает.
  20. Я не вижу перспектив пользоваться консольным приложением. Есть графический интерфейс зачем тратить время на изучение команд для дудки. Так можно и в командной строке все делать.
  21. ниче не залипло фен был выключен кнопкой. В таком режиме фен не должен включатся. А здесь вентилятор не включился а нагреватель да. Я симистор прозвонил там три ома все время включен токо в розетку в тыкну и греет.
  22. И каким образом программировать контроллер.
  23. Серезная проблемма это пожарная безопасность. Я незнаю как в других станциях но эта а точнее фен чють не загорелся, я вовремя заметил малиновый цвет железяки. Станция находилась в таком режиме часа два. Кто не знает, фен и паяльник выключены но станция подключена к сети. вот что получилось Причина известна, пробило симистор. Вот только мне не понятно почему симистор после нахождения в закрытом состоянии пробило. Щас отключил нагреватель, снял фишку чтоб паяльником пользоваться. Нагреватель остался целым, только небольшое выгорание изоляции которой он обмотан. Буду менять симистор после выяснения причин выхода его из строя. Какая может быть причина выхода из строя симистора? Варианты ответа: это симистор такой попался, бросок напряжения в сети (сомнительно так как больше ниче не згорело), проблемы со станцией, свой вариант...
×
×
  • Создать...