Перейти к содержанию
    

dim_OK

Участник*
  • Постов

    11
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о dim_OK

  • День рождения 07.11.1917

Контакты

  • Сайт
    Array

Информация

  • Город
    Array
  1. AVR и ПК

    Спасибо огромное, работает. Но что же получается усарт работает не от кварца, а от внутреннего генератора. Я то думал наооборот, и расчитывал делители для 12 МГц. И теперь если я захочу поменять скорость передачи\приёма то надо будет расчитывать делитель для 1 МГц а не для 12?
  2. AVR и ПК

    Спасибо полезная инфа, в книжках про такой кварц ни чего не сказано.
  3. AVR и ПК

    Вам надо просто написать здесь, какой у вас контроллер и кварц на нем, а я вам дам листинг готового примера (как я приводил выше, но полностью готовый), вы его откомпилируете, зашьете в контроллер и увидите работоспособность железа (или не увидите). А дальше делайте с ним, что хотите. Спасибо огромное. Кварц на 12МГц на контроллере ATMega8535.
  4. AVR и ПК

    Ага, а что значит сделать проверку. Вот этого честно скажу я не понимаю. Что надо сделать с принятой инфой конкретно? Я ведь пишу прогу без всяких протоколов. Делаю это в AVRStudio и так как написано в последнем примере вижу первый раз. Не могли бы вы прокоментировать его.
  5. AVR и ПК

    Да придётся Си изучать ибо я в нём не силён. Ну а я сделал как писалось в последнем сообщении clr zero out UBRRH,zero ldi r16,6 out UBRRL, r16 ldi r16, (1<<URSEL)|(0<<USBS)|(3<<UCSZ0);Set frame format: 8data, 1stop bit out UCSRC,r16 ldi r16, (1<<RXEN)|(1<<TXEN) ;Enable Receiver and Transmitter out UCSRB,r16 Но чё то не очень заработало, т. е. я ToolKit'ом отправляю, МК принимает но посылает обратно всё равно нули. Хотя скорости теперь в МК и ToolKit совпадают 115200.
  6. AVR и ПК

    Вот она! Причём если задан правильный делитель, т. е. скорости в ToolKit и МК заданы одинаковые то ToolKit отправляет и ничего не принемает. Если же установить делитель 1 и скорость 1200 в ToolKit, то ToolKit отправляет определённое число, а принимает ноль. При делителе 51 скорость равна 4800, для кварца на 4МГц. ;ИНИЦИАЛИЗАЦИЯ ldi r16,51 out UBRRH, r16 ldi r16, (1<<URSEL)|(0<<USBS)|(3<<UCSZ0);Set frame format: 8data, 1stop bit out UCSRC,r16 ldi r16, (1<<RXEN)|(1<<TXEN) ;Enable Receiver and Transmitter out UCSRB,r16 ;************************* LOOP: rcall WAIT_small ;это sbi portb,pb3 ;типа rcall WAIT_small ;светодиод cbi portb,pb3 ;моргает sbi UCSRA,TXC rec: sbis UCSRA,RXC rjmp rec rcall RECIVE rcall TRANSMIT sbic UCSRA,TXC rjmp IND1 rjmp LOOP IND1: ldi r26,cod_2 out porta,r26 sbi portb,pb0 sbi portb,pb1 rjmp LOOP ;**************** RECIVE: clr r18 in r18,UDR sbic UCSRA,RXC rjmp RECIVE ret ;*************** TRANSMIT: out UDR,r18 ret ;***************
  7. AVR и ПК

    состыкавал плату с МК и MAX232 с ПК по COM-порту написал прогу на ассемблере. Отправляю с компа утилитой COMPortToolKit определённое число, МК его принимает и тут же отправляет обратно. Этой же утилитой можно смотреть что пришло в порт. А приходит ноль, причём независимо от того какое число отправлял. Прогу писал без всяких протоколов. Подскажите от чего такое может быть и в каком направлении надо думать.
  8. Вот кусочек для МК: ********************** LOOP: clr r18; rcall RECIVE cbi UCSRB,pb4 ;Disable Receiver and Transmitter out porta,r18 ;это sbi portb,pb0 ;семисеоментник sbi portb,pb1 ; rjmp LOOP RECIVE: ldi r16,0x12 out UBRRH, r16 ldi r16, (1<<URSEL)|(0<<USBS)|(2<<UCSZ0) ;Set frame format: 7data, 1stop bit out UCSRC,r16 ldi r16, (1<<RXEN) ;Enable Receiver and Transmitter out UCSRB,r16 rec: sbis UCSRA,RXC ;ждать загрузки данных в буфер приёмника rjmp rec in r18,UDR ret ************** Раз протокола нет, то вроде бы больше ничего не нужно, но наверное я чего-то не понимаю. Помогите плиз!!!
  9. Так ведь я так иделаю: procedure TForm1.Button1Click(Sender: TObject); begin if not VaComm1.Active then VaComm1.Open; sCMD:='0010010'; Edit1.Text :=sCMD; VaComm1.WriteText(sCMD); end; В МК выталктваю на семисегментник, по идее на должна гореть "5", а горит ноль без сегмента F(т.е. слева вертикальный верхний).
  10. Привет всем А кто писал программу стыковки AVR с ПК, причём для AVR на асм-ре, а для ПК на Делфи? В книжке читаю в примере "отправляем в порт строку 5А 21 00 00 00 00 7А дальше коментируется 5А - стартовый байт" не понимаю, вот этот стартовый байт всегда должен быть 5А или нет, может это конкретный пример (для конкретной проги)? Вот часть кода для проги на Delphi: begin if not VaComm1.Active then VaComm1.Open; sCMD:='5A'+Format(' %2.x',[cmRS]); sum:=$5A+$21; sCMD:=sCMD+' 00 00'; for J:=1 to 128 do begin sum:= sum+I; sCMD:= sCMD+Format(' %.2x',[J]); end; sCMD:= sCMD+A+Format(' %.2x',[12]); sum:= sum+$12; sCMD:=sCMD+Format(' %.2x',[Hi(sum)])+Format(' %.2x',[Lo(sum)]); Edit1.Text :=sCMD; VaComm1.WriteText(sCMD); end; end. Строковая переменная sCMD и есть то что мы передаём на контророллер. Она формируется из стартового байта(5А) и байта команды(cmRS=$21). Непонятно зачем добавляются вот это '00 00'. То что цикл забивает 128 байт цифрами вроде понял, но итересует как вместо цифр забить конкретные данные. Да и вообще как изменить длину слова данных.
×
×
  • Создать...