Зарегистрирован: Чт май 15, 2008 07:18:52 Сообщений: 36
Рейтинг сообщения:0
люди подскажите вопрос. Пишу Bascom-e Эмулирую в Протеусе есле ставлю частоту выше 2 Mgh происходит чтото не понятное датчики DS показывают точно не температуру динамическа индикация тоже странно ведёт себя
2omike
дык, это.
Почитайте даташит со словарем или скачайте книжек по авр'кам на русском, раздел про таймеры, среди прочих, пользы будет много больше.
вот на русском документация
http://www.gaw.ru/html.cgi/txt/doc/micros/avr/index.htm там где про архитектуру
Здаровки всем!
Извиняюсь, мож я не в тему немножко попал, но вот вопросик:
Как вывести результаты измерения АЦП на 7-и сегментный индикатор (три разряда, последний показывает десятые)? Не могу сообразить как нормально сделать преобразования для сегментов.Подскажите,плиз!
Использую мегу8 и 1мгц такта
Зарегистрирован: Чт мар 19, 2009 08:58:08 Сообщений: 69
Рейтинг сообщения:0
ya-zp писал(а):
Здаровки всем! Извиняюсь, мож я не в тему немножко попал, но вот вопросик: Как вывести результаты измерения АЦП на 7-и сегментный индикатор (три разряда, последний показывает десятые)? Не могу сообразить как нормально сделать преобразования для сегментов.Подскажите,плиз! Использую мегу8 и 1мгц такта
Немного надо исправить .
Код:
'Индикатор 3x7 с общим катодом ( например от АОНа ) 'PD0-A,PD1-B,PD2-C,PD3-D,PD4-E,PD5-F,PD6-G,PD7-DP 'PB0-1p,PB1-2p,PB2-3p 'катоды разрядов индикатора подключены -NPN транзисторы 'Резистор переменный - 1 корпус ' 10 Kom 2 питание 5V ' 3 (средний ) - вход ADC0
$regfile = "m8def.dat" $crystal = 1000000
Config Portd = Output Config Portb = Output Config Adc = Single , Prescaler = Auto , Reference = Avcc Declare Sub Lednum Declare Sub Adconverter Dim N0 As Long , N1 As Word , N2 As Word , N3 As Word , M As Word Dim Led(10) As Byte
Здаровки всем! Извиняюсь, мож я не в тему немножко попал, но вот вопросик: Как вывести результаты измерения АЦП на 7-и сегментный индикатор (три разряда, последний показывает десятые)? Не могу сообразить как нормально сделать преобразования для сегментов.Подскажите,плиз! Использую мегу8 и 1мгц такта
Ну я бы сделал примерно так:
Код:
$regfile = "m8def.dat" ' мега8 $crystal = 8000000 Config Portb = Output , Portd = Output 'конфигурируем порты на выход Dim I As Byte , X As Byte , Y As Byte , Temp As Integer , Bn(10) As Byte , Cifri(5) As Integer 'задаем всякие переменные и масивы ' Restore Dta ' говорим из какой таблици нужно заносить данные в масив For I = 1 To 10 ' начало цикла Read Bn(i) ' поочериде заносим ячейки из таблици в масив Next ' конец цикла Config Timer0 = Timer , Prescale = 1 ' конфигурируем таймер 0 чтоб потом на него повесить алгоритм отображения цифр On Timer0 Pulse ' назначаем подпрограмму, которая будет запускатся по переполнению 0го таймера Enable Interrupts 'разрешаем прерывания Enable Timer0 'разрешаем таймер0 Config Adc = Single , Prescaler = Auto , Reference = Avcc ' конфигурируем ADC Start Adc ' запускаем ADC Do ' начало основного цикла Temp = Getadc(0) ' к примеру 1021
For I = 1 To 4 ' цикл разбиения числа TEMP на цифры и занесения каждой в таблицу масива Cifri(i) = Temp Mod 10 ' берем последнюю цифру (1) If Cifri(i) = 0 Then ' Cifri(i) = 10 ' Goto T ' End If ' Temp = Temp - Cifri(i) ' вычитаем из TEMP последнюю цифру 1021-1=1020 T: ' Temp = Temp / 10 ' отбрасываем последний ноль 1020/10=120 Next 'возвращаемся к началу цикла и заносим следующюю цифру в масив
Waitms 100 ' задержка
Loop 'конец основного цикла End ' ' Pulse: ' подпрограмма прерываний таймера0 Incr X ' увеличиваем х на единицу, для выбора нужных цифр из таблици Portb = &HFF ' гасим индикатор Portd = Bn(cifri(x)) ' подаем на индикатор цифру из масива Bn с номером cifri(x) Y = X - 1 ' считаем какую конкретно цифру, из 4х нужно сейчас зажечь Reset Portb.y ' зажигаем нужную цифру под номером игрик If X = 4 Then X = 0 ' обнуляем х при достижении его величины 4 Return ' возвращаемся на место откуда прервали программу Dta: ' таблица с данными о цифрах зажигает по порядку : 1234567890 Data &H88 , &HB3 , &HBA , &HD8 , &H7A , &H7B , &HA8 , &HFB , &HFA , &HEB
Задействовать PORT A в TINY2313 комуто доводилось? поделитесь опытом плиз...
Делюсь опытом , для Всех ... А не просто сказать - получилось и .. все
1. В ATtiny2313 порты PORT A0 и PORT A1 становятся доступными , если применять внутренний тактовый генератор.
2. PORT A2 становится доступным , если запрограммировать фьюз RESET DISABLE (ахтунг !!! .. в режиме ISP микроконтроллер перестанет шиться , но можно все вернуть с помощью параллельного программатора)
3. PORT A2 ("бывший" reset) ... не является электрически-полноценным портом ... При логической единице , уровень составит 2..3 В . Решение простое - подтягиваем внешним резистором 4.7 кОм к 5 В.
Без проблем ... На работе программатор "Тритон" . Снимаем галку на RESET DISABLE (или просто меняем на противоположное) . Пишем фьюзы ... Все ... Работаем дальше с МК , с последовательным программатором
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения