|
Виж темите без отговор | Виж активните теми
Дата и час: Вто Юли 28, 2026 7:43 am
|
Страница 1 от 1
|
[ 14 мнения ] |
|
UASRT rx interrupt проблем, ATmega8, asm
| Автор |
Съобщение |
|
showMANiak
Ранг: Минаващ
Регистриран на: Сря Сеп 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 (не мога да се сетя как се превеждаше на български  ) Интересното е ,че ако я пренапиша без интеръпти ,демек да проверява RXC флага ,си бачка съвсем редовно програмката. 100 пъти пренаписвах,четох за 3465 път pdf-a на мегата,пак пренаписвах и не виждам нищо да пропускам и вече се изчерпах откъм предположения Помощ? 
Последна промяна showMANiak на Нед Сеп 30, 2012 10:38 pm, променена общо 1 път
|
| Нед Сеп 30, 2012 9:35 am |
|
 |
|
Cino
Ранг: Новодошъл
Регистриран на: Чет Окт 02, 2008 10:24 pm Мнения: 105
|
 Re: Къде бъркам с тоя проклет UART?
тази стойност 0x25 за UBBRL, (UBBRH след ресет е 0) на 2400, какъв такт трябва да ползваш. Поне не я виждам в таблиците на даташиита.
|
| Нед Сеп 30, 2012 10:57 am |
|
 |
|
showMANiak
Ранг: Минаващ
Регистриран на: Сря Сеп 16, 2009 7:30 pm Мнения: 28
|
 Re: Къде бъркам с тоя проклет UART?
Вътрешния осцилатор на мегата-1Мхц
|
| Нед Сеп 30, 2012 7:05 pm |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
 Re: Къде бъркам с тоя проклет UART?
Мегата няма прецизен RC генератор който можеш да ползваш за UART. Сложи си външен кварц.
|
| Нед Сеп 30, 2012 7:15 pm |
|
 |
|
tgi
Ранг: Форумен бог
Регистриран на: Нед Юни 10, 2007 2:22 pm Мнения: 6492 Местоположение: София
|
 Re: Къде бъркам с тоя проклет UART?
Е нали го е докарал да работи без прекъсвания, къде го пращате при кварца. То не че е зле да елиминира това неизвестно де ама изглежда му е ясно кое как е там.
_________________------------------- www.tgi-sci.com------------------- http://www.flickr.com/photos/didi_tgi/
|
| Нед Сеп 30, 2012 7:24 pm |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
 Re: Къде бъркам с тоя проклет UART?
Колко е работило не е ясно. Тоя 1 MHz е много неточен. А ако пишеше на C можеше и с сорс да му помогна ама като го мързи да учи ще се мъчи.
|
| Нед Сеп 30, 2012 7:28 pm |
|
 |
|
Cino
Ранг: Новодошъл
Регистриран на: Чет Окт 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 |
|
 |
|
showMANiak
Ранг: Минаващ
Регистриран на: Сря Сеп 16, 2009 7:30 pm Мнения: 28
|
 Re: UASRT rx interrupt проблем, ATmega8, asm
При положение ,че работи без интеръпти,не съм много сигурен,че проблема е точно в осцилатора Киров,по въпроса със Си-то-не мерси.Асемблера ми се струва някак си по удобен специално за микроконтролерите.Все пак си е "натуралния" им език ,ама всеки си има вкус А и да-ако ме мързеше щях да бягам от асемблера,а не да се мъча да го уча Cino,по твоите въпроси да кажа,че кода е набързо надраскан с цел просто да проверя дали се случват нещата както трябва.Не претендирам за читаемост,а някои работи за човек,който се занимава с такива неща според мен ,нямат нужда от пояснение и се разбират от кода -например процесора.Че съм пропуснал да споделя някои други важни неща-факт  .Както и да е ,да не отмествам темата.Така или иначе ,като (ако) разбера къде ми е грешката ще си спретна кода,пък и мегата няма да остане на 1Мхц вътрешен.Иначе компилирам със студиото,програматора е измишльотина-на принтерския порт с 4 резистора,но за неотговорни дейности си върши работата.Пека с понито. П.П-Пробвах и с 25 десетично за UBRRL-пак същото.Утре ще проверя дали дава frame error при пристигането
|
| Нед Сеп 30, 2012 11:01 pm |
|
 |
|
tgi
Ранг: Форумен бог
Регистриран на: Нед Юни 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 |
|
 |
|
showMANiak
Ранг: Минаващ
Регистриран на: Сря Сеп 16, 2009 7:30 pm Мнения: 28
|
 Re: UASRT rx interrupt проблем, ATmega8, asm
Не знам дали съм в грешка,ама май проблема ще се окаже в компилатора на студиото  .Одеве свалих от един сайт ( http://www.mikrocontroller.net/articles ... rial:_UART ) готов сорс ,като само промених да изкарва резултата на порт Б (т.е закачих кварц 4 Мхц на мегата) и пак същото поведение При положение,че и на 4 Мхц със да кажем по-сигурен от моя код не бачка,остава да е проблема в компилатора 
|
| Пон Окт 01, 2012 9:54 pm |
|
 |
|
Dimitar
Ранг: Форумен бог
Регистриран на: Пет Ное 12, 2004 3:38 pm Мнения: 9103 Местоположение: Chicago, IL
|
 Re: UASRT rx interrupt проблем, ATmega8, asm
Моя опит сочи, че обикновено проблема е в предмониторното устройство  . Иначе съм чувал също "програмата съм сигурен, че ми е вярна, просто процесора не интерпретира правилно инструкциите"  .
|
| Вто Окт 02, 2012 12:30 am |
|
 |
|
tgi
Ранг: Форумен бог
Регистриран на: Нед Юни 10, 2007 2:22 pm Мнения: 6492 Местоположение: София
|
 Re: UASRT rx interrupt проблем, ATmega8, asm
За да може човек да каже, че даден компилатор (бе това не беше ли някакъв асемблер?) греши, трябва да го хване точно къде и в какво и да го демострира. Всичко друго са празни приказки. Ако не може да го хване значи не знае достатъчно за да разсъждава по въпроса  . Хващал съм грешки, най-много на моите - то аз и от близо 20 години само с тях работя - и мога да кажа, че е много малко вероятно по принцип, в случая не мисля, че въобще има някаква значима вероятност да е така.
_________________------------------- www.tgi-sci.com------------------- http://www.flickr.com/photos/didi_tgi/
|
| Вто Окт 02, 2012 2:00 am |
|
 |
|
Ники
Ранг: Почетен член
Регистриран на: Съб Окт 30, 2004 11:19 pm Мнения: 609
|
 Re: UASRT rx interrupt проблем, ATmega8, asm
Компилаторите на асемблер са близки до безгрешността 
|
| Вто Окт 02, 2012 2:02 am |
|
 |
|
showMANiak
Ранг: Минаващ
Регистриран на: Сря Сеп 16, 2009 7:30 pm Мнения: 28
|
 Re: UASRT rx interrupt проблем, ATmega8, asm
Новобрански надежди значи  .Довечера пак ще си блъскам главата след работа...
|
| Вто Окт 02, 2012 8:10 am |
|
|
|
Страница 1 от 1
|
[ 14 мнения ] |
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 3 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|