Příkady z knihy programování v jazyce C - UBRR registr

Zdravím
Skouším se učit programovat s knihy Atmel AVR programování v jazyce C
Popis a práce ve vývojovém prostředí CodeVisionAVR C a tam na stránce 57 je příklad který je tady (bez komentářů) strana 57

#include <90s8515.h>
#include <stdio.h>
#define xtal 4000000L
#define baud 9600
void main(void){
char k;
 UBRR = xtal/16/baud-1;
UCR=0x18;
while (1){
    k=getchar();
    putchar(k);
    }
}

kde dělám chybu? a za druhé ten MCu co je tam popisován tak se už nevyrábí tak to skouším s hlavičkovým souborem <mega16.h> a s tímto mi to vyhazuje ještě že proměnnou UBRR nezná díky.

:arrow_right: administrator: přejmenováno z “Příkady z knihy programování v jazyce C”

nevím jestli je UBRR registr nebo co, ale v knihovně pro atmegy 16 je podobně označen UBRRH a UBRRL. Třeba je to 16b, a proto je takhle rozdělen

V CV nedělám, ale zkus to takto:

UBRRL = (unsigned char)((xtal/16/baud-1) & 0x00FF); UBRRH = (unsigned char)((xtal/16/baud-1) >> 8);

Tak jeden zádrhel je vyřešen ale ještě mi to hlásí chybu k vůli ní vlastně ten dotaz píši která je v té příloze, a ještě něco když už píši tento dotaz mám si nainstalovat AVRstudio protože je tam debuger který asi budu chtít do budoucna použít a se kterým může spolupracovat CV.Potřebuji podrobní popis jak AVRstudio nainstalovat protože tady na tomto fóru měl někdo problémy díky.

já jsem AVR studio instaloval jako poslední a bez problému. Zkus, narazíš na problém a pak se ptej

Co má ten program dělat?
Mám takový pocit, že ten program by šel napsat bez těchto pro mcu šílených funkcí pouze o řádek delší a o několik kB menší. Případně si tu funkci můžeš napsat sám. Je to velice primitivní pokud to má dělat jen loop-back na uartu. U displeje by to bylo složitější, ale na to jsou knihovny.

zkus tam misto knihovny mega16.h includovat io.h, protoze io.h includuje i dalsi knihovny nez jen mega16.h

Si nainstaluj poslende WinAVR a potom poslende AVRstudio.
Obe idu nainstalovat bez problemov. A mas celkom efektivny prekladac C bez akychkolvek obmedzeni implementovany s AVRstudiom a s vyhodou mozes vyuzivat debugovanie napriklad i cez simulator a program mozes krokovat po C-ckovych instrukciach ale i C-ckovy program po ASM instrukciach.

Otazka je ci budes potom este k niecomu potrebovat to CV :slight_smile:
Ale chapem, ze knizka s prikladmi je silna motivacia :slight_smile:

Ako som pochopil, prikad je cisto pre ucenie sa programovania a i keby sa dal naprogamovat inak. Daj vediet, ako si dopadol.

souhlas s martinem. Pokud zacinas Winavr je zdarma, je multiplatformní. Podporuje celou bandu programátorů. Podle mého osobního názoru je i mnohem více webových zdrojů právě na winavr.

Jen pokud más x64 bit windows je trochu problém s usbtiny. Lze ale řešit pomocí virtuální masiny nebo přez testovací mód a klasické drivery.

Přesně to jsem si říkal, když jsem ty jeho obtíže četl. Nechtěl jsem ale zase “být zaujatý proti CV” :smiley:.

Meloun: když budeš psát na winAvr, budeš tu mít větší šanci na úspěch :wink:
Nějaký CV uživatel tu také je, jen nevím jak často.

tak pro začátek není Codevision špatnej :blush:
Já až si ošahám (jestli si ošahám…) CV, tak taky přesednu na WinAVR a budu možná schopný si napsat vlastní funkce. Všechny ty příklady z tý knížky jsou stejně jenom volání funkcí, které dělají všecko za tebe a ty nemáš nejmenší tušení, co právě probíhá v tvém zařízení. A to je špatně…
Implementujou nějakou novou věc a já budu zvyklý z codevisionu, že na to existuje jeden-dva řádky. Ve WinAVR bych zřejmě napsal několik řádků víc, ale zase bych věděl, co to dělá.

Codevision urcite spatny nie je.

Ale od GCC sa lisi tak malicko, ze je otazne, ci ta namaha za ucenie sa dvoch tak blizkych svetov s tak rozdielnymi zapismi toho isteho vobec stoji za to. Nevraviac o obmedzeniach free verzie CV.

Tu nejde o to, ze najprv je uzitocne sa naucit “jednoduchsie” CV aby sa dalo prejst na “zlozitejsie” GCC.

Tu ide o to, ci svoj casopriestor venujes nauceniu sa jednej alebo druhej syntaxii v podobe roznych #define a #include. Ak sa uz raz jedno naucis, nebudes mat dovod a silnu motivaciu ucit sa to druhe.

Ako tu uz bolo spomenute, s GCC (WinAVR) Ti tu skor niekto poradi ako s CV. Tak isto je na webe mnoho desiatok nasobne viac priamo pouzitelnych zdrojakov pre GCC ako pre hocico ine. Navyky s GCC mozes zuzitkovat i pri praci s ARM, Win, Linux, tam vsade je GCC portovane. Linux samotny bol v GCC napisany.

To ale nemusi byt dovod prestat pouzivat CV pre AVR. Ide len o to, aby si si bol toho vedomy, co s CV ziskavas a stracas.

Pokial som pocul/cital, tak okniznicovane a ofunkcionizovane GCC je projekt arduino. To pozostava nie len z HW ale hlavne z free SW. A SW vies plne vyuzit vo svojich vlastnych konstrukciach. Aspon tak si myslim - niekde som cital. Osobne som nikdy o projekt Arduino ani len nezavadil :slight_smile:.

Od zaciatku robim na GCC a nepostrehol som ziaden hendikep ze nemam k dispozii ziadnu kniznicu (samozrejme avr-libc je plne k dispozicii, ved co by som bez standartnych funkcii robil :slight_smile: )ktora by riesila veci cestou o ktoru nemam zaujem.

Ale ked sme pri tych knizniciach, velmi ale fakt velmi pekny projekt je microC alebo tak dajako sa to volalo. Ta firma robi tiez microPascal a microBasic
je to na

mikroe.com/eng/categories/vi … compilers/

naozaj velmi pekne so spustou uzitocnych kniznic - ak niekomu vyhovuje pouzivat cudzie kniznice bez moznosti pracovat i na inych platformach.
Po naistalovani som to velmi pochvalil, ocenil a potom odinstaloval. Ale mohlo by sa to niekomu hodit.

Aby moje vyjadrenia nezneli velmi samolubo, osobne potrebujem robit na AVR, ARM7 a Cortex -M3. Zaroven potrebujem spolupracovat s mnozstvom ludi, ktorym nebudem kupovat kompiler a ktorych nebudem nutit ucit robit s prekladacom na ktory nie su zvyknuti. Preto u mna vitazi GCC. Ale pre domaceho kutila tieto dovody mozu byt uplne irelevantne a prave naopak mnozsto lubivo sa tvariacich kniznic (to ale neznamena, ze nie dobrych a kvalitnych) v ramci nejkaeho projektu (CV, Kiel, IAR, ICC, …) moze byt to prave orechove.

Takze proti gustu ziaden disputat :slight_smile:

P.S. Plne chapem dolezitost a smerodajnost aktualne dostupnej literatury. Sam sa podla toho casto riadim.
Spomenul som si vsak pri tom (nic osobne, len sa mi to tu tak hodi ) na citat z jedneho filmu:“Mam krasnou knizku o Tibetu”.

Schvalne, kto vie z akeho filmu ten citat je? Bol tam niekolko krat spomenuty a bol pre vyznam filmu dost dolezity. Je to uz sice mimo temu, ale budem rad ak sa niekto, kto vie o co sa jedna ozve. :slight_smile:

Este raz sa omluvam za “neuzitie” temy diskusie.

Vrátil bych se k melounovu problému.
Tvoje potíž je v tom, že používáš kód psaný v nějaké prehistorické verzi CV a překládáš ho v nejnovější verzi - bohužel - což mi na CV vadí se musí kód psaný ve starších verzích trochu upravit např. dřív se dalo vícerozměrné pole nadefinovat pole[2,3]; ale nový CV ten zápis vyhodí jako chybu a musí vypadat pole[2][3]; takových je tam víc včetně toho co to hlásí tobě - tedy, že funkci printf nemůžeš použít pro typ 90s8515

Taky kromě headeru musíš změnit typ v Configure project\ C compiller.

Jsem jeden (asi z mála) kdo v CV dělá a rád ti s čímkoliv poradím, ale poslední dobou mám tak málo času, že sem skoro nechodím - tak si říkám, že by asi nebylo až tak od věci protože v CV jsi opravdu na úplném začátku v tvém případě přejít na GCC.

Zdravím
Tak jsem si přečetl vaše rady a mé sebevědomí zase pokleslo zas o nějaký stupínek dolu :blush:.Můj první programovací jazyk byl turbo pascal bohužel ne C postupem času jsem se naučil trochu v delphi to jen co se týče PC.U mikrokontrolérů jsem začal PIC a jelikož AVR něco úplně jiného a hlavně se programuje ve vyšším programovacím jazykem ne jak u PICU asembleru tak skouším se naučit programovat AVR v C a protože nemám jinou možnost jak se to naučit jen tímto způsobem “nemohu si odskočit za kámošem nebo do nějakého kolektivu co jsou podobně v úvozovkách načichlí fandovstvím do programování jako já” z jednoho prostého důvodu jsem invalida a staršího data vydání :smiley: a jak se říká starého psa novým kouskům nenaučíš když ano tak velmi těžko tak s toho důvodu hledám literaturu pokud možno v českém jazyce, tak se ještě ptám co je to GCC ? a kde si to mohu stáhnout díky.

meloun- hodím ti sem pár odkazů, je tam nějakej matroš GNU AVR GCC
robotika.yweb.sk/skola/index.php?path=AVR/
caha.wz.cz/clanky/avr-uvod.php
imakeprojects.com/Projects/avr-tutorial/ - v eng, ale mě to de docela dobře číst

kdyby někdo znal podobné odkazy (CDV i WinAVR), tak nebudu jedinej, kdo je uvítá. Spíš takovéto výtahy jako je právě tato knížka než xset stránkovej referenční manual manuál (klidně i v eng)
jak říká lou, ta knížka je dost zastaralej popis a já jelikož z ní zkouším se učit, tak prostě všecko nevykoumám.

Najprv daj do Googla vyhladat odkaz na download “WinAVR”

Cele si to stiahni a nainstaluj, respektive pri instalacii si nejako rozumne ponastavuj cesty, ale len nechaj tak ako bude.

Balik WINAVR obsahuje prekladac C jazyka oznacovaneho ako GCC portovaneho na procesory AVR. Okrem samotneho prekladaca - to by bolo samo o sebe dost malo - balik obsahuje kniznice a hafo headrov predpripravenych pre vsetky mozne a nemozne AVR procesory. Skratka, tvorcovia Ti usetrili robotu. Sucastou balika je i kniznica avr-libc. Jej popis neskor najdes priamo v AVR studiu.

Ked si spravil toto, potom chod na stranku Atmelu a stiahni si balik AVRstudio. To si tak isto nainstaluj. AVRstudio je zakladne prostredie pre pracu s AVR a obsahuje okrem ASM prekladaca i simulator a kadeco este.

Pri instalacii AVRstudio automaticky zisti, ze na PC je uz WinAVR (teda aj prekladac GCC portovany na AVR) a prislusne cesty vstrebe do seba.

Prejavi sa to tak, ze ked spustis prvy krat AVRstudio, to Ti ponukne vytvorit novy projekt bud v ASM alebo v AVR GCC.

Aj AVR mozes programovat v ASM. Vobec nemusis pouzivat C-cko. S ceckom sa vsak dostanes rychlejsie dalej. Na obsluhu periferii vobec nepotrebujes poznat instrukcie ASM. Vsetko sa da obsiahnut priamo z C-cka (je jedno z akeho, aj z CV :slight_smile: )

Kludne sa pytaj ak na nieco narazis, i na sebemensiu blbost. Ono to za to nestoji presediet dva tri dni nad uplnou debilinou, ked clovek nevie kde co najde. Urcite sem chodi dost ochotnych ludi,ktori sa Ti budu snazit poradit a usmernit Ta.

No a uz len programovat a programovat :slight_smile:

https://forum.mcontrollers.com/t/novinky/578/1

Martin-podle tvé rady jsem zadal do strýčka googla a tam mě to našlo mnoho odkazů ale jelikož nechci si zaprasit PC tak bych konkrétně potřeboval přesný link na tu instalačku nebo zip soubor o kterém jsi si jist že je ten správný nebo ze kterého sis to instaloval ty. díky

sourceforge.net/projects/winavr/ … e/download

Mám to nainstalováno po kliknutí na první položku tak se mi zobrazí to co je na tom druhém obrázku trochu mi vadí okno příkazového řádku a teď jak dál? díky


screen1.JPG