BASCOM AVR в вопросах и ответах
Re: BASCOM AVR в вопросах и ответах
Да нет не в этом дело. Буду дальше материться.
Re: BASCOM AVR в вопросах и ответах
Всё вроде получилось, по новой скопипастил в окно программы код указанный ниже, скомпилировал, и сразу прошил в контроллер. LCD работает текст отображает.
Может проблема была в том что я с полученными на своём ноутбуке файлами пытался работать.
Одним словом прошу прощения за беспокойство, за помощь спасибо.
$regfile = "m8def.dat" 'выбранный тип микроконтроллера
$crystal = 1000000 'частота работы 1 МГц
Config Lcd = 16 * 2 'указываем какой у нас дисплей и конфигурируем ножки для подключения
Config Lcdpin=Pin,Db4=Portb.3, Db5=Portb.2, Db6=Portb.1, Db7=Portb.0,E=Portb.4,Rs=Portb.5
Cursor Off 'выключим отображение курсора
Cls 'очистим дисплей
Lcd "LCD 16*2 HD44780" 'выводим текст в первой строке
Locate 2 , 4 'переводим курсор на вторую строку, четвёртое знакоместо
Lcd "AVRproject.ru" 'выводим текст
End
Может проблема была в том что я с полученными на своём ноутбуке файлами пытался работать.
Одним словом прошу прощения за беспокойство, за помощь спасибо.
$regfile = "m8def.dat" 'выбранный тип микроконтроллера
$crystal = 1000000 'частота работы 1 МГц
Config Lcd = 16 * 2 'указываем какой у нас дисплей и конфигурируем ножки для подключения
Config Lcdpin=Pin,Db4=Portb.3, Db5=Portb.2, Db6=Portb.1, Db7=Portb.0,E=Portb.4,Rs=Portb.5
Cursor Off 'выключим отображение курсора
Cls 'очистим дисплей
Lcd "LCD 16*2 HD44780" 'выводим текст в первой строке
Locate 2 , 4 'переводим курсор на вторую строку, четвёртое знакоместо
Lcd "AVRproject.ru" 'выводим текст
End
Re: BASCOM AVR в вопросах и ответах
Премногоуважаемые
!
Помогите разобраться, а то от напряжения уже линять начал.
Потихоньку добиваю вот этот проект - http://roboforum.ru/forum90/topic14537. ... 9726ca60f5 , памяти, естественно, уже нет. Т.к. EEPROM я не использую, возникла идея тексты сообщений из программной памяти свалить туда. Код вроде как получился рабочий, в симуляторе всё работает без проблем. А на железе оно не работает, выводит или мусор, или в последней версии ничего из EEPROM не выводит (выводятся только строки-разделители). Проверка содержимого EEPROM в программаторе проходит.
Имеющая отношение к делу часть кода:
!Помогите разобраться, а то от напряжения уже линять начал.
Потихоньку добиваю вот этот проект - http://roboforum.ru/forum90/topic14537. ... 9726ca60f5 , памяти, естественно, уже нет. Т.к. EEPROM я не использую, возникла идея тексты сообщений из программной памяти свалить туда. Код вроде как получился рабочий, в симуляторе всё работает без проблем. А на железе оно не работает, выводит или мусор, или в последней версии ничего из EEPROM не выводит (выводятся только строки-разделители). Проверка содержимого EEPROM в программаторе проходит.
Имеющая отношение к делу часть кода:
Код: Выделить всё
$regfile = "m8DEF.dat"
$crystal = 1000000
$baud = 2400
' $sim
Dim My_print_str As String * 15
Dim My_eeprom_addr As Word
Dim My_eeprom_data As Byte
$eeprom
Help_str01:
Data " Commands:"
Data " ?-Help"
Data " s-Status"
Data " w-Power On/Off \ only if"
Data " c-Clean On/Off / charger unplug"
Data 255
Estr_standby:
Data "STANDBY"
Estr_power_on:
Data "POWER ON"
Estr_cleaning:
Data "CLEANING"
Estr_charging:
Data "CHARGING-"
Estr_active:
Data "ACTIVE"
$data
Gosub Help_print 'вывод в СОМ-порт помощи
End
'---------- вывода в порт помощи по командам
Help_print:
My_eeprom_data = 0 : Do : Print "=" ; : Incr My_eeprom_data : Loop Until My_eeprom_data = 39 'рисуем разделитель
My_eeprom_data = 0
My_eeprom_addr = 0 'переменную установили на 0-й адрес EEPROM
Do 'в цикле читаем EEPROM побайтно и выводим символы в Serial
If My_eeprom_data <> 0 Then 'если считанный байт<>0,то выводим символ в Serial
Print Chr(my_eeprom_data) ;
' Print My_eeprom_data ;
Else 'если считанный байт=0,то перевод строки
Print
End If
Readeeprom My_eeprom_data , My_eeprom_addr 'читаем очередной байт из EEPROM
Incr My_eeprom_addr 'увеличили адрес на 1
Loop Until My_eeprom_data = 255 'Окончание цикла, если считанный байт=255 - блок закончился
My_eeprom_data = 0 : Do : Print "=" ; : Incr My_eeprom_data : Loop Until My_eeprom_data = 39 'рисуем разделитель
Print
'теперь выводим в Serial строки, считанные из EEPROM, каждая по своему адресу
Readeeprom My_print_str , Estr_standby : Print My_print_str
Readeeprom My_print_str , Estr_power_on : Print My_print_str
Readeeprom My_print_str , Estr_cleaning : Print My_print_str
Readeeprom My_print_str , Estr_charging : Print My_print_str ;
Readeeprom My_print_str , Estr_active : Print My_print_str
Return
Последний раз редактировалось Serge_ISA Чт ноя 06, 2014 11:22:52, всего редактировалось 2 раза.
Re: BASCOM AVR в вопросах и ответах
Serge_ISA писал(а):Dim My_print_str As String * 15
Data " w-Power On/Off \ only if"
Data " c-Clean On/Off / charger unplug"
Если в ограниченную 15-ю символами строку попытаться затолкать больше результат может быть очень интересным.
Конкретнее - как поведет себя компилятор. Если он не ругается, то ему наплевать на это.
Стало быть будет творить что хочет. Имеется ввиду компилятор. Ну и результат на его усмотрение.
Re: BASCOM AVR в вопросах и ответах
vem566 писал(а):Если в ограниченную 15-ю символами строку попытаться затолкать больше результат может быть очень интересным.
Идея интересная, но нет. 15-символьная переменная используется только для чтения не более 15 символов. Та часть EEPROM-данных, на которую вы указали, в эту переменную не читается.
И, кстати, ничего криминального не произойдет - будет считано 15 символов, лежащих по адресу, содержащемуся в ссылке.
Ещё идеи, пожалуйста.
Re: BASCOM AVR в вопросах и ответах
Осталось только считать eеprom из прошитого МК и посмотреть, что там реально есть.
Re: BASCOM AVR в вопросах и ответах
Всё, разобрался, работает!
В принципе вы были правы - в EEPROM не писалось то, что надо. А вот причина, по которой не писалось, была более интересной.
Оказалось, что программатор AVRDude v 1.116 почему-то считает файлы .epp, создаваемые Bascom-ом 2.0.7.5, некорректными и, соответственно, не пишет их в EEPROM или пишет кусками. А т.к. я пользуюсь "дудкой" через GUI USBASP, который вне зависимости от ошибки рисует благостный прогресс-бар и при записи, и при проверке, то на ошибки внимания и не обратил. После переконвертации файла EEPROM из .epp в .hex всё прошилось и заработало.
Всем спасибо и не наступить на те-же грабли.
vem566 писал(а):Осталось только считать eеprom из прошитого МК и посмотреть, что там реально есть.
В принципе вы были правы - в EEPROM не писалось то, что надо. А вот причина, по которой не писалось, была более интересной.
Оказалось, что программатор AVRDude v 1.116 почему-то считает файлы .epp, создаваемые Bascom-ом 2.0.7.5, некорректными и, соответственно, не пишет их в EEPROM или пишет кусками. А т.к. я пользуюсь "дудкой" через GUI USBASP, который вне зависимости от ошибки рисует благостный прогресс-бар и при записи, и при проверке, то на ошибки внимания и не обратил. После переконвертации файла EEPROM из .epp в .hex всё прошилось и заработало.
Всем спасибо и не наступить на те-же грабли.

Re: BASCOM AVR в вопросах и ответах
Доброго всем!
помогите запустить часы на ATMega48, тактирование timer2 от внешнего кварца 32768.
код:
$regfile = "m48pdef.dat"
$crystal = 8000000
$hwstack = 48
$swstack = 32
$framesize = 24
Config Portb = Output
Config Portc = Output
Config Portd = Output
Config Pinb.6 = Input
Config Pinb.7 = Input
Config Pinc.3 = Input
Config Timer2 = Timer 'готовим timer2 для работы с 32768 кварцем, частота прерывания = 32768/256 = 128
On Timer2 Calc_secs
Assr = &B00100000 'работа с внешним кварцем 32к
Timsk2 = &B00000001 'прерывание по переполнению
Tccr2b = &B00000001 'делитель на 1
Config Timer0 = Pwm , Prescale = 1 , Compare B Pwm = Clear Up , Clear Timer = 1 'запуск шим
Pwm0b = 20
Dim Timer_value As Byte
Dim Secs As Byte
Dim Mins As Byte
Dim Hours As Byte
Anod_10_4asov Alias Portb.3
Anod_1_4asov Alias Portb.4
Anod_10_min Alias Portd.2
Anod_1_min Alias Portc.1
Katod0 Alias Portc.4
Katod1 Alias Portc.5
Katod2 Alias Portd.0
Katod3 Alias Portd.1
Katod4 Alias Portb.2
Katod5 Alias Portd.6
Katod6 Alias Portb.5
Katod7 Alias Portb.0
Katod8 Alias Portc.2
Katod9 Alias Portc.0
To4ka Alias Portb.1
Enable Timer2
Enable Interrupts
Start Timer2
Enable Timer0
'Start Timer0
Anod_1_4asov = 1
To4ka = 1 'проверка работы шима есть или нет
Do
loop
Calc_secs: 'подпрограмма прерывания timer2
If To4ka = 1 Then To4ka = 0 Else To4ka = 1
Waitms 100
Return
в протеусе работает отлично, точка мигает, а в железе - нет. Кондеры 22пФ висят на землю, кварц тоже лежит на земле (пробовал другой), ножки короткие, CKSEL0=0, SUT1..0=01 (Fast rising power). Подскажите, куда копать?
помогите запустить часы на ATMega48, тактирование timer2 от внешнего кварца 32768.
код:
$regfile = "m48pdef.dat"
$crystal = 8000000
$hwstack = 48
$swstack = 32
$framesize = 24
Config Portb = Output
Config Portc = Output
Config Portd = Output
Config Pinb.6 = Input
Config Pinb.7 = Input
Config Pinc.3 = Input
Config Timer2 = Timer 'готовим timer2 для работы с 32768 кварцем, частота прерывания = 32768/256 = 128
On Timer2 Calc_secs
Assr = &B00100000 'работа с внешним кварцем 32к
Timsk2 = &B00000001 'прерывание по переполнению
Tccr2b = &B00000001 'делитель на 1
Config Timer0 = Pwm , Prescale = 1 , Compare B Pwm = Clear Up , Clear Timer = 1 'запуск шим
Pwm0b = 20
Dim Timer_value As Byte
Dim Secs As Byte
Dim Mins As Byte
Dim Hours As Byte
Anod_10_4asov Alias Portb.3
Anod_1_4asov Alias Portb.4
Anod_10_min Alias Portd.2
Anod_1_min Alias Portc.1
Katod0 Alias Portc.4
Katod1 Alias Portc.5
Katod2 Alias Portd.0
Katod3 Alias Portd.1
Katod4 Alias Portb.2
Katod5 Alias Portd.6
Katod6 Alias Portb.5
Katod7 Alias Portb.0
Katod8 Alias Portc.2
Katod9 Alias Portc.0
To4ka Alias Portb.1
Enable Timer2
Enable Interrupts
Start Timer2
Enable Timer0
'Start Timer0
Anod_1_4asov = 1
To4ka = 1 'проверка работы шима есть или нет
Do
loop
Calc_secs: 'подпрограмма прерывания timer2
If To4ka = 1 Then To4ka = 0 Else To4ka = 1
Waitms 100
Return
в протеусе работает отлично, точка мигает, а в железе - нет. Кондеры 22пФ висят на землю, кварц тоже лежит на земле (пробовал другой), ножки короткие, CKSEL0=0, SUT1..0=01 (Fast rising power). Подскажите, куда копать?
Последний раз редактировалось Shtepsel Ср ноя 12, 2014 10:23:30, всего редактировалось 2 раза.
Хорошему коту и в декабре март.
Re: BASCOM AVR в вопросах и ответах
А где указание, что Portb.1 это выход?
Re: BASCOM AVR в вопросах и ответах
привел полный листинг, сорри, есть такое:
Config Portb = Output
(поправил)
еще у меня ШИМ на timer0, потом нужно будет разбираться с приоритетами прерываний, чтобы время четко шло.
а вы натолкнули на мысль: кварц висит на PB6 PB7, их надо указать как input?
up:
все равно подпрограмма не работает и не мигает (в железе)
в протеусе убрал внешний генератор на 32к, а оно все равно мигает
Config Portb = Output
(поправил)
еще у меня ШИМ на timer0, потом нужно будет разбираться с приоритетами прерываний, чтобы время четко шло.
а вы натолкнули на мысль: кварц висит на PB6 PB7, их надо указать как input?
up:
все равно подпрограмма не работает и не мигает (в железе)
в протеусе убрал внешний генератор на 32к, а оно все равно мигает
Последний раз редактировалось Shtepsel Ср ноя 12, 2014 12:20:31, всего редактировалось 2 раза.
Хорошему коту и в декабре март.
Re: BASCOM AVR в вопросах и ответах
Вот тут http://easyelectronics.ru/avr-uchebnyj- ... jmera.html как раз все описано. Правда на С, но нужен же смысл.
Re: BASCOM AVR в вопросах и ответах
видел ту статью и много других на Си. Через регистры ничего не работает. Похоже, что это глюк баскома.
заработало вот так:
Disable Interrupts
Disable Timer2
Config Timer2 = Timer , Async = On , Prescale = 128
Enable Timer2
Enable Interrupts
Start Timer2
мигает раз в секунду и шим работает.
Если timer0 стоит как PWM, то не будет ли он мешать работе прерываний?
заработало вот так:
Disable Interrupts
Disable Timer2
Config Timer2 = Timer , Async = On , Prescale = 128
Enable Timer2
Enable Interrupts
Start Timer2
мигает раз в секунду и шим работает.
Если timer0 стоит как PWM, то не будет ли он мешать работе прерываний?
Хорошему коту и в декабре март.
Re: BASCOM AVR в вопросах и ответах
У меня не мешает.
-
sasha_1973
- Родился
- Сообщения: 9
- Зарегистрирован: Ср дек 12, 2012 23:51:21
Re: BASCOM AVR в вопросах и ответах
Shtepsel писал(а):Доброго всем!
помогите запустить часы на ATMega48, тактирование timer2 от внешнего кварца 32768.
Если нужны аппаратные секундные импульсы на выводе OC2:
добавьте в исходнике, в конце этой строки "Config Timer2 = Timer , Async = On , Prescale = 128"
вот это ", Compare = Toggle"
Исходник (Bascom 2.0.7.1)
Спойлер
Исходник (Bascom 2.0.7.1)Код: Выделить всё
'---------- Настройка контроллера ----------
$map ' Получаем карту распределения памяти компилятором Bascom
$regfile = "m8def.dat" ' Используемый контроллер
$crystal = 1000000 ' 2000000 ' 4000000 ' 8000000
$framesize = 32
$hwstack = 40
$swstack = 16
'---------- Настройка USART ----------
$baud = 4800 '1200 '2400 '4800 '9600 '19200 '38400 '57600 '115000
Ucsra.1 = 1 ' Двойная скорость работы USART, скорость трансляции = $baud * 2
'--- Настройка прерывания TIMER2, для работы часов (раскомментировать нужное)
' Config Timer2 = Timer , Async = On , Prescale = 64 ' Делитель 32768 / 64 / 256 = 0,5 сек (прерывание TIMER2 = 2 раза в секунду)
' Const Количество_срабатываний_timer2 = 2
'----------
Config Timer2 = Timer , Async = On , Prescale = 128 ' Делитель 32768 / 128 / 256 = 1 сек (прерывание TIMER2 = 1 раз в секунду)
Const Количество_срабатываний_timer2 = 1 ' Значение константы используется в подпрограмме "Обработка_прерывания_timer2"
' Ссылка на подпрограмму обработчика прерывания TIMER2, для работы часов
On Timer2 Обработка_прерывания_timer2 Nosave ' Ссылка на подпрограмму обработчика прерывания TIMER2
'---------- Настройка пониженного энергопотребления МК ----------
Assr.3 = 1 : Waitms 100 ' Включить НЧ-генератор AS2 и подождать стабилизации амплитуды генератора
' При включении бита AS2 (3) в регистре ASSR (ASSR.3), становится возможным применение режима
' "Powersave" - разновидность спящего режима. Пробуждение МК от TIMER2
' Mcucr = &B10000000 ' Разрешаем режим пониженного энергопотребления Power Idle
Mcucr = &B10110000 ' Разрешаем режим пониженного энергопотребления Power Save
'---------- Используемые переменные ----------
Dim Часы As Byte
Dim Минуты As Byte
Dim Секунды As Byte
Dim Время_работы_часы As Byte
Dim Время_работы_минуты As Byte
Dim Время_работы_секунды As Byte
Dim Флаг_работа_окончена As Byte
Dim Осталось_работать_часы As Byte
Dim Осталось_работать_минуты As Byte
Dim Осталось_работать_секунды As Byte
Dim Счетчик_прерываний_timer2 As Byte
Dim Флаг_обновить_данные_времени As Byte
Dim Флаг_данные_для_передачи_usart As Byte
'---------- Предварительные настройки ----------
Часы = 20
Минуты = 50
Секунды = 0
Осталось_работать_часы = 1
Осталось_работать_минуты = 0
Осталось_работать_секунды = 0
'---------- Передайм настройки времени в USART ----------
Print "Настройки времени"
Print Часы ; ":" ; Минуты ; ":" ; Секунды : Print
Wait 1
'---------- Разрешаем работу необходимых прерываний ----------
Enable Timer2
'---------- Разрешаем работу всех включенных прерываний ----------
Enable Interrupts
'=========================
' Г Л А В Н Ы Й Ц И К Л
'=========================
Главный_цикл:
If Флаг_обновить_данные_времени = 1 Then
Gosub Расчет_времени_работы
Gosub Обновить_данные_времени
Gosub Расчет_осталось_работать
Флаг_обновить_данные_времени = 0
Флаг_данные_для_передачи_usart = 1
End If
If Флаг_данные_для_передачи_usart = 1 Then
Gosub Передача_uart
Флаг_данные_для_передачи_usart = 0
End If
'----------
Спящий_режим:
sleep ' или так Power Powersave
Goto Главный_цикл
End
'=========================
' И С П О Л Ь З У Е М Ы Е П О Д П Р О Г Р А М М Ы
'=========================
'=========================
' Подпрограмма обработки прерывания TIMER2, происходит 1 или 2 раза в секунду, в зависимости от настроек TIMER2
'=========================
Обработка_прерывания_timer2:
'----------
'---- Сохраняем регистры, которые используем в обработке прерывания
!Push R31 ' Сохраняем регистры, которые используем в обработке прерывания
!In R31 , Sreg
!Push R31
'---------- Считаем количество прерываний TIMER2 ----------
!Lds R31 , {счетчик_прерываний_timer2} ' Считываем значение переменной "Счетчик_прерываний_timer2" в регистр "R31", для последующих операций
!Inc R31 ' Увеличиваем значение переменной в регистре "R31"
!sts {счетчик_прерываний_timer2} , R31 ' Пишем значение из регистра "R31" в переменную "Счетчик_прерываний_timer2"
'----------
!Andi R31 , количество_срабатываний_timer2 ' Сравниваем полученное значение с значением "Const количество_срабатываний_timer2"
'----------
!Breq Выход_прерывание_timer2 ' Если полученное значение меньше значениея "Const количество_срабатываний_timer2", уходим на метку "Выход_прерывание_timer2" -- иначе
!clr R31 ' Если полученное значение равно значениию "Const количество_срабатываний_timer2", пишем "0" в регистр "R31
!sts {счетчик_прерываний_timer2} , R31 ' Заносим значение из регистра "R31" в переменную "Счетчик_прерываний_timer2" и переходим к подпрограмме расчета времени
'-------- Подпрограммы обрабатываемые по 2 срабатыванию TIMER2 ----------
!ldi R31 , 1
!sts {Флаг_обновить_данные_времени} , R31 ' Поднимаем флажок, что надо обновить время
'---------- Восстанавливаем ранее сохраненные регистры ----------
Выход_прерывание_timer2:
!Pop R31
!Out Sreg , R31 ' Восстанавливаем регистры
!Pop R31
'----------
Return
'=========================
'=========================
'---------- Подпрограмма расчета времени: часов, минут и секунд ---------
'=========================
Обновить_данные_времени:
'----------
Incr Секунды ' Плюс секунда
If Секунды > 59 Then ' При необходимости
Секунды = 0 : Goto Обновить_минуты ' корректируем счетчик секунд и обновляем счетчик минут
End If
Goto Выход_обновить_данные_времени
'----------
Обновить_минуты:
'----------
Incr Минуты ' Плюс минута
If Минуты > 59 Then ' При необходимости
Минуты = 0 : Goto Обновить_часы ' корректируем счетчик минут и обновляем счетчик часов
End If
Goto Выход_обновить_данные_времени
'----------
Обновить_часы:
'----------
Incr Часы ' Плюс час
If Часы > 23 Then ' При необходимости
Часы = 0 ' корректируем счетчик часов
End If
'----------
Выход_обновить_данные_времени:
'----------
Return
'=========================
'=========================
Расчет_времени_работы:
'----------
nop
Incr Время_работы_секунды ' Плюс секунда
If Время_работы_секунды > 59 Then ' При необходимости
Время_работы_секунды = 0 : Goto Обновить_время_работы_минуты ' корректируем счетчик секунд и обновляем счетчик минут
End If
Goto Выход_расчет_времени_работы
'----------
Обновить_время_работы_минуты:
'----------
Incr Время_работы_минуты ' Плюс минута
If Время_работы_минуты > 59 Then ' При необходимости
Время_работы_минуты = 0 : Goto Обновить_время_работы_часы ' корректируем счетчик минут и обновляем счетчик часов
End If
Goto Выход_расчет_времени_работы
'----------
Обновить_время_работы_часы:
'----------
Incr Время_работы_часы ' Плюс час
If Время_работы_часы > 23 Then ' При необходимости
Время_работы_часы = 0 ' корректируем счетчик часов
End If
Выход_расчет_времени_работы:
nop
'----------
Return
'=========================
'=========================
Расчет_осталось_работать:
'----------
nop
If Осталось_работать_секунды = 0 Then ' При необходимости
Осталось_работать_секунды = 59 : Goto Обновить_осталось_работать_мин ' корректируем счетчик секунд и обновляем счетчик минут
End If
Decr Осталось_работать_секунды ' Минус секунда
Goto Выход_расчет_осталось_работать
'----------
Обновить_осталось_работать_мин:
'----------
If Осталось_работать_минуты = 0 Then ' При необходимости
Осталось_работать_минуты = 59 : Goto Обновить_осталось_работать_часы ' корректируем счетчик минут и обновляем счетчик часов
End If
Decr Осталось_работать_минуты ' Минус минута
Goto Расчет_осталось_работать
'----------
Обновить_осталось_работать_часы:
'----------
If Осталось_работать_часы = 0 And Осталось_работать_минуты = 0 And Осталось_работать_секунды = 0 Then ' При необходимости
Флаг_работа_окончена = 1
' Осталось_работать_часы = 0 ' корректируем счетчик часов
End If
Decr Осталось_работать_часы ' Минус час
Выход_расчет_осталось_работать:
nop
'----------
Return
'=========================
'=========================
'--- Подпрограмма обработки вывода на компьютер (аппаратный USART)
'=========================
Передача_uart:
'----------
Print
Print "Время работы - " ;
Print Время_работы_часы ; ":" ;
If Время_работы_минуты < 10 Then Print "0" ;
Print Время_работы_минуты ; ":";
If Время_работы_секунды < 10 Then Print "0" ;
Print Время_работы_секунды
Print "Текущее время - " ;
Print Часы ; ":" ;
If Минуты < 10 Then Print "0" ;
Print Минуты ; ":";
If Секунды < 10 Then Print "0" ;
Print Секунды
Print "Осталось работать - " ; Осталось_работать_часы ; ":" ; Осталось_работать_минуты ; ":" ; Осталось_работать_секунды
Print
'----------
Return
'=========================
Последний раз редактировалось sasha_1973 Вс ноя 30, 2014 11:06:20, всего редактировалось 3 раза.
-
sasha_1973
- Родился
- Сообщения: 9
- Зарегистрирован: Ср дек 12, 2012 23:51:21
Re: BASCOM AVR в вопросах и ответах
Вопрос к модераторам:
В чём причина отклонения других сообщений?
Ссылка на архив?
Ссылка на родственный форум?
В чём причина отклонения других сообщений?
Ссылка на архив?
Ссылка на родственный форум?
- ev3658
- Слесарь-программист
- Сообщения: 341
- Зарегистрирован: Вт сен 11, 2012 23:08:28
- Откуда: город Кстово Нижегородская обл.
Re: BASCOM AVR в вопросах и ответах
Не могу найти данные по 5му параметру:
Вот это понятно:
Но столкнулся с куском кода, разобарться не могу, что за восьмёрка в конце?
Код: Выделить всё
Shiftout Ddata , Dclock , Lcd_dout , 0 , [u]8[/u]Вот это понятно:
Код: Выделить всё
SHIFTOUT Datapin , Clockpin , var , optionНо столкнулся с куском кода, разобарться не могу, что за восьмёрка в конце?
Код: Выделить всё
Lcd_cout.7 = 1 'Sync
Lcd_cout.6 = 1 'Sync
Lcd_cout.5 = 1 'Sync
Lcd_cout.4 = 1 'Sync
Lcd_cout.3 = 1 'Sync
Lcd_cout.2 = 0 'R/W
Lcd_cout.0 = 0 'leer
Shiftout Ddata , Dclock , Lcd_cout , 0 , 8-
sasha_1973
- Родился
- Сообщения: 9
- Зарегистрирован: Ср дек 12, 2012 23:51:21
Re: BASCOM AVR в вопросах и ответах
ev3658 писал(а):Но столкнулся с куском кода, разобарться не могу, что за восьмёрка в конце?
SHIFTOUT pin , pclock , var , option [, bits , delay ]
Pin - The port pin which serves as a data output.
Pclock - The port pin which generates the clock.
Var - The variable that is shifted out.
Option - Option can be :
0 – MSB shifted out first when clock goes low
1 – MSB shifted out first when clock goes high
2 – LSB shifted out first when clock goes low
3 – LSB shifted out first when clock goes high
Bits - Optional number of bits to shift out.
Delay - Optional delay in uS. When you specify the delay, the number of bits must also be specified. When the default must be used you can also use NULL for the number of bits.
- kip96
- Держит паяльник хвостом
- Сообщения: 965
- Зарегистрирован: Ср авг 26, 2009 08:24:50
- Откуда: 1300км от Пупа
Re: BASCOM AVR в вопросах и ответах
ev3658 писал(а):Но столкнулся с куском кода, разобарться не могу, что за восьмёрка в конце?
Просто иногда нужно помедленее загружать. Как то мучал индикатор на HT1621, так ни как не мог победить. Когда взял другой контроллер с заводскими фьюзами(1Мгц), всё заработало. А планировалось от 16МГц. Так тут вот и помогла эта "восьмёрка"
Все делают ошибки, только мудрецы - новые, а дураки - старые.
Re: BASCOM AVR в вопросах и ответах
Коллеги, кто разбирается в вопросе и имеет свободное время?
Хотелось бы позадавать глупых вопросов, по скайпу допустим
Хотелось бы позадавать глупых вопросов, по скайпу допустим
Re: BASCOM AVR в вопросах и ответах
Для начала можно в личку.