Непонятная ошибка..

Suro
Offline
Зарегистрирован: 03.07.2017

Никак не могу понять как это возможно.



Когда подаю питание , программа попадает в этот цыкл и не выходит из него.



В чем может быть проблема ? (есть еще на плате 1kOM Pull-Up резистор на +5V , и проверяю тестером тот же пин и на него стоит 1)

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

А что, кода не будет? 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ЕвгенийП пишет:

А что, кода не будет? 

С кодом то многие могут, Вы попробуте с хрустальным шаром

nik182
Offline
Зарегистрирован: 04.05.2015

Ой. A что такое prp? У меня на эту запись ошибку дает. 

sadman41
Offline
Зарегистрирован: 19.10.2016

Mало того, что prp, так еще и цыкл. Хана контроллеру.

Suro
Offline
Зарегистрирован: 03.07.2017

там у меня есть строка 

 

#define prp        2

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Ну, значит, кода не будет. Расходимся.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

ua6em пишет:

Вы попробуте с хрустальным шаром

Хрустальные шары запрещены, а я - человек дисциплинированный.

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Вот ни хрена в цыклах не сечёте, а набижали тут лишь бы человека потроллить!

Кстати, ТСу и на амперке воздушный автобус тоже за код сказал, но он и там тупит и упирается рогом. Рыцыдивист, аднака!

О, кстати, а этот цыкл мы уже видели полтора месяца назад - #1 Ну, точня - рыцыдивист!

b707
Offline
Зарегистрирован: 26.05.2017

Ворота пишет:

О, кстати, а этот цыкл мы уже видели полтора месяца назад - #1 Ну, точня - рыцыдивист!

и ни одного из данных тогда советов, похоже, ТС не выполнил. Зачем снова пришел?

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Ну, я ж говорю - рецидивист.

А советы - так, судя по тому, как он выполняет совет вставить код,  ...

Suro
Offline
Зарегистрирован: 03.07.2017
#include <mega16.h>
#include <delay.h>

#define prp        2
#define pluse      1            
#define minuse     2

unsigned int current_prp;

void main(void)
{

//-----------------------------------------------------------------------------------------------------------------------
     
    //PORTS Configuration
    DDRA  = 0b00001000;      
    PORTA = 0b00000000;

    DDRD  = 0b11111000;     
    PORTD = 0b11111111;

    DDRB  = 0b11110000;     
    PORTB = 0b00001111;
    
    DDRC  = 0b00000000;     
    PORTC = 0b11111100;

while(1){
while(PINC.prp == 0){
                if(PIND.pluse == 0){
                    current_prp++;
                    delay_ms(250);
                    
                     if(current_prp >= 10000){
                     current_prp = 0;    
                     };       
                };
                if(PIND.minuse == 0){
                    current_prp--;
                    delay_ms(250);
                                         
                    if(current_prp <= 0){
                    current_prp = 9999;    
                    };                  
                };
            };
}
}

 

Suro
Offline
Зарегистрирован: 03.07.2017

будет очень интересен твой ответ

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Suro пишет:

будет очень интересен твой ответ

Чей? Мой или чей-то другой?

Suro
Offline
Зарегистрирован: 03.07.2017

а с чево ты это взял b707 ???????

Suro
Offline
Зарегистрирован: 03.07.2017

да да твой ворота .

вот и теперь тебе код

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

а это точно код для ардуины?

Suro
Offline
Зарегистрирован: 03.07.2017

ua6em пишет:

а это точно код для ардуины?

нет это написано в codevisionavr для Atmega16

sadman41
Offline
Зарегистрирован: 19.10.2016

Спасибо, что не на Лиспе!

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Suro пишет:

да да твой ворота .

вот и теперь тебе код

1. код не мне, а тебе, мне он не нужен, т.к. у меня проблемы нет, она есть у тебя.

2. ты решил меня поэкзаменовать? Ещё такое заявление и будешь послан на йух (туда же, где уже находятся другие мои экзаменаторы)

3. Да, она действительно входит в "цыкл" стр. 28 и не выходит из него никогда. А ты ожидал другого поведения? В чём твоя проблема, голуба?

b707
Offline
Зарегистрирован: 26.05.2017

Suro, кратенько почитал справку по Кодевизион и делаю вывод. что вы неправильно пользуетесь макросами для пинов

Вот так, как у вас -  работать, имхо, не должно:

#define prp 2

if (PINC.prp == 1 )  {
............
}

А вот так рекомендует справка по КодеВижиону

#define alarm_input PINA.2 
void main(void) 
{ 
/* test bit 2 input of Port A */ 
if (alarm_input) { /* place some code here */ }; 
/* ....... */ 
} 

Замечаете, в чем разница? - макросом можно подменить полную запись  PINA.2, а только номер бита - нельзя.

Дело в том, что запись в форме PINC.1 - вообще-то недопустима по стандарту языка, поскольку в Си имена переменных, в том числе полей структур, не могут начинаться с цифры. Доступ к битам регистра PIN.2 - это специальное извращение Кодевижине, которое разрешается перед компиляцией через исключение. А когда вы подставляете вместо номера бита макрос - этот механизм перестает работать.

 

Suro
Offline
Зарегистрирован: 03.07.2017

b707 пишет:

Suro, кратенько почитал справку по Кодевизион и делаю вывод. что вы неправильно пользуетесь макросами для пинов

Вот так, как у вас -  работать, имхо, не должно:

#define prp 2

if (PINC.prp == 1 )  {
............
}

А вот так рекомендует справка по КодеВижиону

#define alarm_input PINA.2 
void main(void) 
{ 
/* test bit 2 input of Port A */ 
if (alarm_input) { /* place some code here */ }; 
/* ....... */ 
} 

Замечаете, в чем разница? - макросом можно подменить полную запись  PINA.2, а только номер бита - нельзя.

Дело в том, что запись в форме PINC.1 - вообще-то недопустима по стандарту языка, поскольку в Си имена переменных, в том числе полей структур, не могут начинаться с цифры. Доступ к битам регистра PIN.2 - это специальное извращение Кодевижине, которое разрешается перед компиляцией через исключение. А когда вы подставляете вместо номера бита макрос - этот механизм перестает работать.

 

очень спосибо за ответ ,, буду иметь введу у тчательно прочту справку ,, но вот в чем у меня была проблема ,, надо только НЕ программировать фьюз JTAG (default JTAG = 0 - programmed , надо было только отключить его)