Например TDA7294

Форум РадиоКот • Просмотр темы - 3 x 74HC165 и atmega328. глюки Протеуса или что?
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Чт мар 28, 2024 11:16:26

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: 3 x 74HC165 и atmega328. глюки Протеуса или что?
СообщениеДобавлено: Ср мар 28, 2018 18:38:38 
Открыл глаза

Зарегистрирован: Пн дек 06, 2010 23:57:09
Сообщений: 74
Откуда: Обнинск
Рейтинг сообщения: 0
Приветствую! Помогите, пожалуйста с кодом.
Три входных регистра 75НС165 и atmega328p.
Проблема в том, что после 12 разряда ни USART не отзывается, ни в порты не переключаются в контроллере, если в них производить запись кода от регистров. Я думаю, что из-за того, что слишком длинное число получается, аж три байта ).
Или это у меня глюки в протеусе?
Может быть кто поможет с кодом?
Проект для AvrStudio 4.19 и для Proteus 7.9 SP1 во вложении.
Код:

#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include "usart.h"

#define   CLK         PD2    // строб - сдвиг данных
#define   SHLD        PD3  //защёлкивание входов
#define   BIT_IN      PD4      //вход данных
#define   BIT          24      //количество входов-бит ...1 регистр 8 входов
#define   show  USART_SendStr("1 ");} else {USART_SendStr("0 ");

void pause(unsigned long i)
   {
while (--i) asm("nop");
}
unsigned long int old_u,  new_u;

uint32_t a;

char s[24];
//unsigned char data[BIT];     //здесь будем хранить данные

void data_in()      //функция чтения данных   74HC165
  {
 unsigned int i=0;
   a=0;
    PORTD &=~(1<<4);//SHLD=0;         //защёлкиваем входные данные
    pause(1000);
    PORTD |=(1<<4);//SHLD=1;   
   
 for( i=0; i<BIT; i++ )   //цикл побитного чтения  данных
  { 
    pause(1000);   
   // data[ i ]=BIT_IN;
 a|=((PIND & (1<<PD3))<<i);

    PORTD &=~(1<<2);//CLK=0;            //сдвигаем данные
    _delay_ms(1);   
    PORTD |=(1<<2);//CLK=1;
         
  }}

void programm()
{
   data_in();
pause(100);
}

int main(void)
{

PORTD= 0b00010101;
DDRD=  0b11110111;
USART_Init();

asm("sei");
while (1)
     {
 a=a>>3;

    old_u= new_u;
 new_u = a;
   if(new_u !=old_u)
  {


if((a>>0) &       1){show}
if((a>>0) &       2){show}
if((a>>0) &       4){show}
if((a>>0) &       8){show}
if((a>>0) &      16){show}
if((a>>0) &      32){show}
if((a>>0) &      64){show}
if((a>>0) &    0x80){show}
if((a>>0) &   0x100){show}
if((a>>0) &   0x200){show}
if((a>>0) &   0x400){show}
if((a>>0) &   0x800){show}
if((a>>0) &  0x1000){show}
if((a>>0) &  0x2000){show}
if((a>>0) &   16384){show}
if((a>>0) &   32768){show}
if((a>>0) &   65536){show}
if((a>>0) &  131072){show}
if((a>>0) &  262144){show}
if((a>>0) &  524288){show}
if((a>>0) & 1048576){show}
if((a>>0) & 2097192){show}
if((a>>0) & 4194304){show}
if((a>>0) & 8388608){USART_SendStr("1\n\r ");} else {USART_SendStr("0\n\r "); }   

   //  sprintf(s," count is: %u\n\r ",a); // раскомментировать и будет показывать  в dec.
  USART_SendStr(s);






}
programm();
}}


Вложения:
74hc165.zip [76.82 KiB]
Скачиваний: 179
Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 27


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y