Отговори на тема  [ 14 мнения ] 
UASRT rx interrupt проблем, ATmega8, asm 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Сря Сеп 16, 2009 7:30 pm
Мнения: 28
Мнение UASRT rx interrupt проблем, ATmega8, asm
Здраво на всички.Скъса ми нервите тоя UART.Ето какво измъдрих:
Код:
.include "m8def.inc"
.org 0
rjmp Main
.org 0x00B
rjmp Receive
.org 0x40
Main:
ldi r16,high(ramend)
out sph,r16
ldi r16,low(ramend)
out spl,r16
ldi r16,(1<<RXCIE)|(1<<RXEN)
out UCSRB,r16
ldi r16,(1<<URSEL)|(1<<UCSZ0)|(1<<UCSZ1)
out UCSRC,r16
ldi r16,0x25
out UBRRL,r16
ldi r16,$FF
out ddrb,r16
ldi r16,0
out portb,r16
sei
here:rjmp here
Receive:
in r16,udr
out portb,r16
reti

Проблема е ,че в общи линии нереални стойности излизат на порта,а не това което пращам от компа.Примерно ,ако изпратя 128 десетично,ми излиза на порта 255 или пък ако изпратя 'А' ми излиза някакъв съвсем друг символ.
За проба във функцията на интеръпта направих ,така че нулевия пин на порт Б да си сменя състоянието при пристигане на данни и там всичко си е ток ,демек сменя си на всяко пристигане на данни състояниeто ,т.е проблема не е в самия код за обработка на интеръпта а някъде другаде...може би.
Настройките са си ок и от двете страни - 2400 бита/сек,8 бита,1 стоп бит,без parity (не мога да се сетя как се превеждаше на български :oops: )
Интересното е ,че ако я пренапиша без интеръпти ,демек да проверява RXC флага ,си бачка съвсем редовно програмката.
100 пъти пренаписвах,четох за 3465 път pdf-a на мегата,пак пренаписвах и не виждам нищо да пропускам и вече се изчерпах откъм предположения :x
Помощ? :)


Последна промяна showMANiak на Нед Сеп 30, 2012 10:38 pm, променена общо 1 път



Нед Сеп 30, 2012 9:35 am
Профил
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Чет Окт 02, 2008 10:24 pm
Мнения: 105
Мнение Re: Къде бъркам с тоя проклет UART?
тази стойност 0x25 за UBBRL, (UBBRH след ресет е 0)
на 2400, какъв такт трябва да ползваш.
Поне не я виждам в таблиците на даташиита.


Нед Сеп 30, 2012 10:57 am
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Сря Сеп 16, 2009 7:30 pm
Мнения: 28
Мнение Re: Къде бъркам с тоя проклет UART?
Вътрешния осцилатор на мегата-1Мхц


Нед Сеп 30, 2012 7:05 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение Re: Къде бъркам с тоя проклет UART?
Мегата няма прецизен RC генератор който можеш да ползваш за UART. Сложи си външен кварц.


Нед Сеп 30, 2012 7:15 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юни 10, 2007 2:22 pm
Мнения: 6492
Местоположение: София
Мнение Re: Къде бъркам с тоя проклет UART?
Е нали го е докарал да работи без прекъсвания, къде го пращате при
кварца. То не че е зле да елиминира това неизвестно де ама изглежда му
е ясно кое как е там.

_________________
-------------------
www.tgi-sci.com
-------------------
http://www.flickr.com/photos/didi_tgi/


Нед Сеп 30, 2012 7:24 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение Re: Къде бъркам с тоя проклет UART?
Колко е работило не е ясно. Тоя 1 MHz е много неточен.
А ако пишеше на C можеше и с сорс да му помогна ама като го мързи да учи ще се мъчи.


Нед Сеп 30, 2012 7:28 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Чет Окт 02, 2008 10:24 pm
Мнения: 105
Мнение Re: Къде бъркам с тоя проклет UART?
ами пратих го на кварца,
защото стойността за 2400 на 1MHz вътрешен осцилатор
е 25dec , а не 25hex,
явно 3465 пъти четене не са му стигнали,

А я е докарал да работи, като гледа че на всeки приет символ
му идва прекъсването, без да проврява фрейм еррора. което при тази настройка
на бод рейта , съм сигурен че идва точно символ с фрейм еррор.

Иначе колко по лесно за всички щеше да е ако темата се каваше примерно:
"UASRT rx interrupt проблем, ATmega8, asm"

Нито е писал кой е контролера, ( добре че има инклуднат хедър )
нито е казал че е на вътрешен осцилатор ( добре че чака порт B, та там не е включил външния ),
нито е казал с какво асемблира, AVR Studio ли, команден ред и нотпад ли ползва.
нито е написал четимо 20 реда код, да се чуди човек кое са векторите на прекъсванията,
къде започва мейна, къде е събрутина на rx прекъсването.
Нито е казал с кой незнаен клонинг на програматор работи, който също е на порт Б , и не се
знае как отпуска линиите.
За фюзовете също няма нищо споменато, да се чудим на колко MHz го кара този контролер

Също и неточността на вътрешния осцилатор спомената от Киров,


Нед Сеп 30, 2012 7:42 pm
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Сря Сеп 16, 2009 7:30 pm
Мнения: 28
Мнение Re: UASRT rx interrupt проблем, ATmega8, asm
При положение ,че работи без интеръпти,не съм много сигурен,че проблема е точно в осцилатора :?
Киров,по въпроса със Си-то-не мерси.Асемблера ми се струва някак си по удобен специално за микроконтролерите.Все пак си е "натуралния" им език ,ама всеки си има вкус :wink:
А и да-ако ме мързеше щях да бягам от асемблера,а не да се мъча да го уча :idea:
Cino,по твоите въпроси да кажа,че кода е набързо надраскан с цел просто да проверя дали се случват нещата както трябва.Не претендирам за читаемост,а някои работи за човек,който се занимава с такива неща според мен ,нямат нужда от пояснение и се разбират от кода -например процесора.Че съм пропуснал да споделя някои други важни неща-факт :oops: .Както и да е ,да не отмествам темата.Така или иначе ,като (ако) разбера къде ми е грешката ще си спретна кода,пък и мегата няма да остане на 1Мхц вътрешен.Иначе компилирам със студиото,програматора е измишльотина-на принтерския порт с 4 резистора,но за неотговорни дейности си върши работата.Пека с понито.
П.П-Пробвах и с 25 десетично за UBRRL-пак същото.Утре ще проверя дали дава frame error при пристигането


Нед Сеп 30, 2012 11:01 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юни 10, 2007 2:22 pm
Мнения: 6492
Местоположение: София
Мнение Re: UASRT rx interrupt проблем, ATmega8, asm
За писане на асемблер няма да сбъркаш ако свикнеш да пишеш коментар на всеки ред,
на английски. Без това си обречен, то всъщност е и едно от основните предимства
на програмирането на асемблер.
Баш на тоя процесор асемблерът му е доста крив и неудобен - все пак е за дребна архитектура - но
това не пречи, създадените навици се пренасят съвсем лесно на какъвто и да е език нататък.

Това, че на делителя му е все едно каква стойност слагаш (това 25/37) говори обаче, че има нещо тотално криво
и навярно са прави тия, дето те пращат при осцилатора (едва ли е единственият проблем ама
трябва да е проблем ако е едно и също и при 25 и при 37, ако съм разбрал правилно).

_________________
-------------------
www.tgi-sci.com
-------------------
http://www.flickr.com/photos/didi_tgi/


Нед Сеп 30, 2012 11:47 pm
Профил WWW
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Сря Сеп 16, 2009 7:30 pm
Мнения: 28
Мнение Re: UASRT rx interrupt проблем, ATmega8, asm
Не знам дали съм в грешка,ама май проблема ще се окаже в компилатора на студиото :o .Одеве свалих от един сайт (http://www.mikrocontroller.net/articles ... rial:_UART ) готов сорс ,като само промених да изкарва резултата на порт Б (т.е закачих кварц 4 Мхц на мегата) и пак същото поведение 8O
При положение,че и на 4 Мхц със да кажем по-сигурен от моя код не бачка,остава да е проблема в компилатора :?:


Пон Окт 01, 2012 9:54 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 12, 2004 3:38 pm
Мнения: 9103
Местоположение: Chicago, IL
Мнение Re: UASRT rx interrupt проблем, ATmega8, asm
Цитат:
остава да е проблема в компилатора

Моя опит сочи, че обикновено проблема е в предмониторното устройство :) .
Иначе съм чувал също "програмата съм сигурен, че ми е вярна, просто процесора не интерпретира правилно инструкциите" :D .


Вто Окт 02, 2012 12:30 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юни 10, 2007 2:22 pm
Мнения: 6492
Местоположение: София
Мнение Re: UASRT rx interrupt проблем, ATmega8, asm
За да може човек да каже, че даден компилатор (бе това не беше ли някакъв асемблер?) греши,
трябва да го хване точно къде и в какво и да го демострира. Всичко друго са празни приказки.
Ако не може да го хване значи не знае достатъчно за да разсъждава по въпроса :D .
Хващал съм грешки, най-много на моите - то аз и от близо 20 години само с тях работя - и мога
да кажа, че е много малко вероятно по принцип, в случая не мисля, че въобще има някаква
значима вероятност да е така.

_________________
-------------------
www.tgi-sci.com
-------------------
http://www.flickr.com/photos/didi_tgi/


Вто Окт 02, 2012 2:00 am
Профил WWW
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Окт 30, 2004 11:19 pm
Мнения: 609
Мнение Re: UASRT rx interrupt проблем, ATmega8, asm
Компилаторите на асемблер са близки до безгрешността :)


Вто Окт 02, 2012 2:02 am
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Сря Сеп 16, 2009 7:30 pm
Мнения: 28
Мнение Re: UASRT rx interrupt проблем, ATmega8, asm
Новобрански надежди значи :(.Довечера пак ще си блъскам главата след работа...


Вто Окт 02, 2012 8:10 am
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 14 мнения ] 

Кой е на линия

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


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

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