Обсуждаем контроллеры компании Atmel.
Ответить

Проблема то ли в протеусе то ли c кодом?

Пн дек 30, 2019 19:02:38

Написал простенький код включения светодиода по двум условиям,но в протеусе светодиод начинает моргать и все начинает глючить,сильно грузится CPU,началось все с того как решил побаловаться со сторожевым таймером,его убрал и вообще поставил другой контроллер и прошивку и все равно такая байда происходит,помогите разобраться,может проблема с код виженом,может с фьюз битами не то что-то?
Код:
#include <mega16.h>

void main(void)
{
DDRB.3 = 1;
PORTB.3 = 0;

DDRB.1 = 0;
PORTB.2 = 1;

PORTB.1 = 1;
DDRB.2 = 0;

while (1)
      {
      if(PINB.3 == 1) {PORTB.3 = 0;}
      if(PINB.1 == 0 && PINB.2 == 0) {PORTB.3 = 1;}
      }
}
Вложения
СКРИН ПРОТЕУСА.jpg
(248.2 KiB) Скачиваний: 73

Re: Проблема то ли в протеусе то ли c кодом?

Пн дек 30, 2019 21:57:33

Да кто ж вас всех на протеус подсаживает? Выбросьте кодевижн, протеус, книжки в зубы, AVR-Studio. AVR Toolchain. В студии есть симулятор. Разберетесь.

Re: Проблема то ли в протеусе то ли c кодом?

Пн дек 30, 2019 22:11:30

зачем порт б.3 от себя рулится?
не проще сделать if ((PINB.1==0)&&(PINB.2==0)) {PORTB.3=1;}else{PORTB.3=0;};

Re: Проблема то ли в протеусе то ли c кодом?

Пн дек 30, 2019 22:44:36

Симулятор AVR-Studio сразу же показал бы косяк. А если бы он книгу по архитектуре МК прочитал ещё...

Re: Проблема то ли в протеусе то ли c кодом?

Пн дек 30, 2019 23:22:30

Потому что вот это его всегда выключает, если он включен:
if(PINB.3 == 1) {PORTB.3 = 0;}

А следом он включается пока нажаты кнопки. В общем проблема в коде, а не протеусе.

Re: Проблема то ли в протеусе то ли c кодом?

Вт дек 31, 2019 06:22:20

if(PINB.3 == 1) {PORTB.3 = 0;}
это примерно тоже самое:

Re: Проблема то ли в протеусе то ли c кодом?

Вт дек 31, 2019 07:22:59

А что ни кто внимание на предупреждение не обратил?
[AVR MEMORY] Writing to memory location 0x08F9 outside of memory size 0x0460
shrus43 писал(а):и вообще поставил другой контроллер
куда поставили другой контроллер?
Проверьте в CVAVR Project-> Configure вкладка C Compiler строка Chip целевой контроллер под который собирается прошивка?

Re: Проблема то ли в протеусе то ли c кодом?

Вт дек 31, 2019 14:31:58

Да кто ж вас всех на протеус подсаживает? Выбросьте кодевижн, протеус, книжки в зубы, AVR-Studio. AVR Toolchain. В студии есть симулятор. Разберетесь.

Начал с этого и как-то привык,да и проблема не в CV и протеусе,а во мне :facepalm:

Добавлено after 53 seconds:
зачем порт б.3 от себя рулится?
не проще сделать if ((PINB.1==0)&&(PINB.2==0)) {PORTB.3=1;}else{PORTB.3=0;};

Да чет,тупанул,вы правы,не знал что в теле скобок,еще скобки нужны,я нубас пока что в этом деле

Добавлено after 6 minutes 45 seconds:
А что ни кто внимание на предупреждение не обратил?
[AVR MEMORY] Writing to memory location 0x08F9 outside of memory size 0x0460
shrus43 писал(а):и вообще поставил другой контроллер
куда поставили другой контроллер?
Проверьте в CVAVR Project-> Configure вкладка C Compiler строка Chip целевой контроллер под который собирается прошивка?

Ну убрал в протеусе все и создал новый проект,создал новый проект с другим микроконтроллером,да прошивка под другой камень писалась :? Настроил короче кв и вроде норм

Добавлено after 1 minute 27 seconds:
Всем спасибо за помощь,с наступающим новым годом!!!! :))
Ответить