Отговори на тема  [ 4 мнения ] 
Проблем с MikroC Pro и Proteus 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Сря Фев 14, 2007 10:07 pm
Мнения: 13
Мнение Проблем с MikroC Pro и Proteus
Здравейте, имам следния проблем значи вчера се опитах да подкарам ds1307 като за целта си направих една схема в Протеус с PIC18F4550, един двуредов LCD и RTC-to. Исках просто на дсиплея да се изписват секундите от часовника като преди тях излезне надпис "Seconds:". При стартиране на симулация в Протеус виждам секундите в I2C Debugger-a и когато те се подават към дисплея като десетични числа се показват след 21-вата секунда като започват от удивителен знак и се изреждат. Но когато реша да ги преобразувам в ascii символи с функцията IntToStr. Настъпва голямо объркване първо, няма последователност във визулазирането на символи, появява се един удивителен знак допълнително и си стои постоянно. Освен това и в двата случая когато подавам към дисплея и десетични и ASCII символи позицията на дисплея не съответства на стойноста която съм задал във функцията за визуализиране. Аз му пиша на девета позиция да се появи символа той излиза на 10-та, пиша 11-та позизия той въобще не се появява. И в Протеуса и в проекта ми тактовите честоти са еднакви 8MHz, осцилатора е HS в MikroC-то. Къде може да е проблема ?

Код:
unsigned short r_data;

char output;


sbit LCD_RS at RC1_bit;
sbit LCD_EN at RC2_bit;
sbit LCD_D4 at RD4_bit;
sbit LCD_D5 at RD5_bit;
sbit LCD_D6 at RD6_bit;
sbit LCD_D7 at RD7_bit;

sbit LCD_RS_Direction at TRISC1_bit;
sbit LCD_EN_Direction at TRISC2_bit;
sbit LCD_D4_Direction at TRISD4_bit;
sbit LCD_D5_Direction at TRISD5_bit;
sbit LCD_D6_Direction at TRISD6_bit;
sbit LCD_D7_Direction at TRISD7_bit;


unsigned short read_ds1307(unsigned short address)

{
  unsigned short r_data;
  I2C1_Init(100000);
  I2C1_Start();
  I2C1_Wr(0xD0);
  I2C1_Wr(address);
  I2C1_Repeated_Start();
  I2C1_Wr(0xD1);
  r_data=I2C1_Rd(0);
  I2C1_Stop();
  return(r_data);
}
    text_out(){
    Lcd_Init();
    Lcd_Cmd(_LCD_CLEAR);
    Lcd_Cmd(_LCD_CURSOR_OFF);
    Lcd_Out(1,1, "Seconds:");
           }

void main()
{
while(1){




    read_ds1307(0);
    IntToStr(r_data,output);
    text_out();
    Lcd_Out(1,9,output);
    Delay_ms(1000);


         }
}


Сря Юли 18, 2012 10:28 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 20, 2005 12:02 pm
Мнения: 9119
Местоположение: Разград
Мнение Re: Проблем с MikroC Pro и Proteus
RTFM :)

Всички регистри в DS1307 са в BCD формат. Нормално е да ти излизат странни работи. Позициите на дисплея пък не е задължително да са там където си мислиш. Примерно има 16х1 дисплеи, които реда започва от позиция 0 и до 8-ия символ е 7-ма позиция, 9-ти символ вече се води на вотри ред (хардуерно в дисплея е на позиция 64) - един вид се държи като 8х2. Затова не е зле да прочетеш и документацията на дисплея и да го видиш точно как са разположени символите в паметта му.

едит : освен това е тъпо да чакаш 1 секунда за следващото четене. В ДС-а има регистър който можеш да му настроиш какво да ти вади на SQW изхода - може да се настрои на 1Hz, подаваш го към пин с прекъсване и когато имаш прекъсване да си го четеш. Ама още по-умно е при първоначален старт да си прочиташ ртц-то, и после само да си инкрементваш на всяка секунда някаква променлива пак със прекъсването. Така ще спестиш излишно четене на ртц-то през 1 секунда.


Сря Юли 18, 2012 12:37 pm
Профил ICQ
Ранг: Популярен
Ранг: Популярен

Регистриран на: Пет Юни 25, 2010 3:18 pm
Мнения: 363
Местоположение: Varna
Мнение Re: Проблем с MikroC Pro и Proteus
Не успях да видя къдя глобалната r_data получава върната от read_ds1307() стоиност.


Сря Юли 18, 2012 8:20 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Съб Дек 06, 2008 9:22 am
Мнения: 119
Местоположение: Пловдив
Мнение Re: Проблем с MikroC Pro и Proteus
Да добавя, не разчитай сляпо на Протеус-а, имал съм случай в който код не тръгва като симулация на Протеус, а на платка си бачка идеално, и обратното.


Чет Юли 19, 2012 3:21 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 4 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 1 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни