Jump to content

    

Нужен учитель

Я об изучении Си пишу. Компилировать проекты на асме в CV просто так не получится ...

Здравствуйте, вы как я понял программист на С )) очевидно. Посоветуйте книгу по Сиавр, или лучше список литературы для полного освоения этого языка, а то я с ассемблером совсем запутался, все дают примеры и советы по си, а на си, если это можно назвать программированием, я только для ардуино могу писать. буду признателен, заранее спасибо!

Share this post


Link to post
Share on other sites
Здравствуйте, вы как я понял программист на С )) очевидно. Посоветуйте книгу по Сиавр, или лучше список литературы для полного освоения этого языка, а то я с ассемблером совсем запутался, все дают примеры и советы по си, а на си, если это можно назвать программированием, я только для ардуино могу писать. буду признателен, заранее спасибо!

Я электронщик, пишущий в том числе и на Си. Так вы знаете Си или не знаете ? Если знаете, то вот тут есть книжка Шпака "Программирование на языке С для AVR и PIC микроконтроллеров", хотя я ей при самообучении не пользовался:

http://lord-n.narod.ru/walla.html

 

А если не знаете, то начать советую с замечательной книжки Крупника "Изучаем Си". Она написана для школьников, не понять просто невозможно. Именно с нее я начинал.

Да, качаете CodeVision, генерируете простейший проект для вашего МК (начать вполне можно с мигания лампочкой или с приема/передачи через UART по прерываниям (только не пытайтесь использовать библиотечную 'printf', иначе от вас ускользнет сам механизм работы UART)), и подробно его разбираете. Это не сложно, совсем. Но прежде вам придется прочесть соотв. разделы даташита на ваш МК.

Удачи. Будут вопросы - пишите

Share this post


Link to post
Share on other sites
Я электронщик, пишущий в том числе и на Си. Так вы знаете Си или не знаете ? Если знаете, то вот тут есть книжка Шпака "Программирование на языке С для AVR и PIC микроконтроллеров", хотя я ей при самообучении не пользовался:

http://lord-n.narod.ru/walla.html

 

А если не знаете, то начать советую с замечательной книжки Крупника "Изучаем Си". Она написана для школьников, не понять просто невозможно. Именно с нее я начинал.

Да, качаете CodeVision, генерируете простейший проект для вашего МК (начать вполне можно с мигания лампочкой или с приема/передачи через UART по прерываниям (только не пытайтесь использовать библиотечную 'printf', иначе от вас ускользнет сам механизм работы UART)), и подробно его разбираете. Это не сложно, совсем. Но прежде вам придется прочесть соотв. разделы даташита на ваш МК.

Удачи. Будут вопросы - пишите

Спасибо Вам, за советы. Ну в "си" я не могу сказать что разбираюсь, думаю со стороны виднее, но на ардуиновсой IDE могу спокойно писать все что нужно, так себе свой дом сделал ну если не "умным" то "грамотным" именно на базе этих платформ, ну и естественно всякие свои фантазии могу на этом IDE реализовывать. Просто не знаю на много ли он от реального "си" отличается или как? Но на всякий случай начну с нуля. Еще раз спасибо!

Share this post


Link to post
Share on other sites

Доброго времени суток уважаемые программисты и электронщики ) вот у меня атмега 8 и такой код (см. ниже) все компилируется как надо, заливаю на мегу8 и подключаю к блютузу (hc-05), но почему то не работает с блютузом.. может фьюзы как то не так настроил? Объясните если кто может. Заранее спасибо!

 

.include <m8def.inc>

 

.def Temp=R16

.def Temp1=R17

.def Temp2=R18

.def Temp3=R19

.def Temp4=R20

 

 

.equ XTAL = 1000000

.equ baudrate = 9600

.equ bauddivider = XTAL/(16*baudrate)-1

 

.cseg

.org 0

 

ldi Temp,0b11111111

out DDRB,Temp

 

ldi Temp,High(RAMEND)

out SPH,Temp

 

ldi Temp,Low(RAMEND)

out SPL,Temp

 

rcall USART_Init

 

Begin:

 

rcall USART_Receive

 

cpi Temp, 'A'

brne CaseB

ldi Temp2, 0b00000001

rjmp Light

 

CaseB:

cpi Temp, 'B'

brne CaseC

ldi Temp2, 0b00000010

rjmp Light

 

CaseC:

 

cpi Temp, 'C'

brne CaseD

ldi Temp2, 0b00000100

rjmp Light

 

CaseD:

 

cpi Temp, 'D'

brne Begin

ldi Temp2, 0b00001000

 

Light:

out PortB,Temp2

 

rjmp Begin

 

 

 

USART_Receive:

 

sbis UCSRA, RXC

rjmp USART_Receive

 

in Temp, UDR

ret

 

USART_Init:

 

LDI R16, low(bauddivider)

OUT UBRRL,R16

LDI R16, high(bauddivider)

OUT UBRRH,R16

 

ldi r16, (1<<RXEN)|(1<<TXEN)

out UCSRB,r16

ldi r16, (1<<URSEL)|(1<<USBS)|(3<<UCSZ0)

out UCSRC,r16

ret

Edited by David_Ali

Share this post


Link to post
Share on other sites
Объясние если кто может.

Сначала нужно научиться обмениваться данными по UART с обычным компьютером, на котором запущена терминалка, например, тот же TeraTerm или HyperTerminal из состава Windows. И только потом браться за более сложные вещи ...

 

Share this post


Link to post
Share on other sites
Сначала нужно научиться обмениваться данными по UART с обычным компьютером, на котором запущена терминалка, например, тот же TeraTerm или HyperTerminal из состава Windows. И только потом браться за более сложные вещи ...

Там передача данных по RX TX, какая разница передавать их на терминал или туда? и как настроить МК? может объясните если знаете? )) мне это больше поможет.

P.S. спасибо что отозвались.

Share this post


Link to post
Share on other sites
Там передача данных по RX TX, какая разница передавать их на терминал или туда? и как настроить МК? может объясните если знаете? )) мне это больше поможет.

P.S. спасибо что отозвались.

Разница огромная, особенно если есть осциллограф. От машины можно передавать что угодно и когда угодно, и видеть в окне терминалки, что она принимает извне.

Как настроить МК ? Простите, а я советы для кого пишу ?????

1. Документацию на МК читали ? Нет ? Ну так и говорить дальше не о чем.

2. В Codevision шаблон проекта с UART генерировали ? Тоже нет ? Тем более говорить не о чем.

 

Вот шаблон. Разберитесь, как он сделан, после этого, думаю, почти все вопросы отпадут:

http://zalil.ru/34349812

Share this post


Link to post
Share on other sites
Разница огромная, особенно если есть осциллограф. От машины можно передавать что угодно и когда угодно, и видеть в окне терминалки, что она принимает извне.

Как настроить МК ? Простите, а я советы для кого пишу ?????

1. Документацию на МК читали ? Нет ? Ну так и говорить дальше не о чем.

2. В Codevision шаблон проекта с UART генерировали ? Тоже нет ? Тем более говорить не о чем.

 

Вот шаблон. Разберитесь, как он сделан, после этого, думаю, почти все вопросы отпадут:

http://zalil.ru/34349812

Спасибо, скачал разбираю, а вот на CodeVision не пишу.. просто через консоль удобнее, мне по крайней мере. на счет документации, конечно же читал!! А советы вы пишите для меня )) за что вам спасибо!

Share this post


Link to post
Share on other sites
Спасибо, скачал разбираю, а вот на CodeVision не пишу.. просто через консоль удобнее, мне по крайней мере. на счет документации, конечно же читал!! А советы вы пишите для меня )) за что вам спасибо!

В шаблоне советую разобраться, на чем бы вы ни писали

 

Share this post


Link to post
Share on other sites

если позволите, вставлю свои 5 копеек по поводу "мне в консоли удобнее". сейчас даже крутые программисты в линухе (те, которые командную строку из 300 символов вручную набрать принимают за личное оскорбление, т.к. нормой для них является 500) используют в работе продвинутые редакторы программ. поэтому я бы советовал писать программы все-таки в IDE, пользуясь при этом всеми ее возможностями, среди которых могут быть средства, подсказывающие верные решения, предупреждающие об ошибках и т.п.

 

первоначально все считали, что ездить на карете удобнее, чем на автомобиле, но по мере привыкания к комфорту мнения поменялись :)

Share this post


Link to post
Share on other sites
если позволите, вставлю свои 5 копеек по поводу "мне в консоли удобнее". сейчас даже крутые программисты в линухе (те, которые командную строку из 300 символов вручную набрать принимают за личное оскорбление, т.к. нормой для них является 500) используют в работе продвинутые редакторы программ. поэтому я бы советовал писать программы все-таки в IDE, пользуясь при этом всеми ее возможностями, среди которых могут быть средства, подсказывающие верные решения, предупреждающие об ошибках и т.п.

 

первоначально все считали, что ездить на карете удобнее, чем на автомобиле, но по мере привыкания к комфорту мнения поменялись :)

я пишу на JAVA.. и мне в консоли удобнее.. а на счет 500 строчек.. то скажу бывало и больше, просто для МК я не писал, другой профиль.. если хотите добавить свои "5 копеек" добавляйте по теме, может подскажете что то о предыдущем посте на счет блютуза? а то у меня мнение что тут не форум разработчиков электроники, а форум философов открывщих новое течение.. ))

P.S. Ни в коем случае не хотел никого обидеть! Извольте не воевать со мной, а лучше посоветуйте учителя! ...... как же тяжело получить простой ответ )))

Edited by David_Ali

Share this post


Link to post
Share on other sites
Доброго времени суток уважаемые программисты и электронщики ) вот у меня атмега 8 и такой код (см. ниже) все компилируется как надо, заливаю на мегу8 и подключаю к блютузу (hc-05), но почему то не работает с блютузом.. может фьюзы как то не так настроил? Объясните если кто может. Заранее спасибо!

 

Первая ошибка, которая сразу бросается в глаза: при системной частоте в 1МГц и скорости передачи данных через USART 9600 бод будет довольно большой процент ошибок при приеме/передаче (159 стр. даташита). Попробуйте повысить системную частоту до 8 Мгц, например, и настроить приемопередатчик USART как это рекомендованно на стр. 161.

Edited by artkam

Share this post


Link to post
Share on other sites
как же тяжело получить простой ответ )))

Не "получить", а "забрать". Вам пришла посылка и лежит на почте, вам звонят и говорят об этом, а вы почему-то ее не забираете. Если бы вы разобрались с тем, как работает предоставленный мной заведомо исправный код, не пришлось бы вам жаловаться на отсутствие ответов ...

 

Share this post


Link to post
Share on other sites
если хотите добавить свои "5 копеек" добавляйте по теме, может подскажете что то о предыдущем посте на счет блютуза?
извините, но вы напоминаете больного, который жалуется на головную боль, врач ему говорит, что надо бросить пить, а он возмущается: "болит-то голова, а не живот!".

 

если бы вы пользовались IDE, хотя бы и CodeVision, то наверняка эта оболочка сразу подсказала бы вам, что тактовая частота у вас неверно задана для выбранной скорости UART. и наверняка даже предложила бы "мастера", который помог бы вам верно произвести настройку периферии и т.п. поэтому я бы советовал прислушиваться к философии, т.к. это "мать всех наук" :)

 

 

ни один учитель не станет учить ученика, который будет указывать учителю, как его учить :) во загнул!

 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this