Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Komunikacja UART na Atmega 8 błąd kompilacji [C]

Mariusz.94 21 Mar 2014 13:10 1821 21
  • #1 21 Mar 2014 13:10
    Mariusz.94
    Poziom 8  

    Posiadam książkę "język C dla mikrokontrolerów AVR od podstaw do awansowanych aplikacji" i w niej jest przykładowy program komunikacji "echo". Gdy go już przepisałem to przy kompilacji jest bardzo dużo błędów obstawiam że jakiejś biblioteki nie wczytuje ale nie widzę błędów a wy??

    Kod: text
    Zaloguj się, aby zobaczyć kod

    Dla jasności już szukałem rozwiązania w necie ale nie mogłem znaleźć.
    To błędy:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    0 21
  • #2 21 Mar 2014 14:02
    voytaschec
    Poziom 24  

    Masz wybrany procesor ATmega8, a tam jest tylko jeden uart. Czy przykład jest dla ATmega8 czy może dla 128? Nazwy rejestrów, gdzie są zgłoszone błędy mają w nazwie "1". Jeśli chcesz to skompilować dla ATmega8 to usuń te "jedynki", ale dodatkowo trzeba się przyjrzeć tym rejestrom czy nie ma między nimi różnic.
    Jeśli funkcja jest typu void to przy jej deklaracji lepiej jest to wyraźnie napisać, nie będziesz miał ostrzeżenia "function declaration isn't a prototype".

    0
  • #3 21 Mar 2014 15:49
    Mariusz.94
    Poziom 8  

    Zmniejszyłem ilość błędów i nie wiem co zrobić z resztą:
    http://screenshooter.net/6254402/biyuder
    chodzi tu napewno o odwołanie do

    Kod: text
    Zaloguj się, aby zobaczyć kod

    no i wysłanie tego do atmegi takie zostały jedynie błędy kto wie co z nimi zrobić??

    0
  • #4 21 Mar 2014 16:10
    voytaschec
    Poziom 24  

    W pierwszej lini musisz podać baudrate, np. 9600:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    W drugiem musisz podać jaki znak chcesz wysłać, np. odebrany z Rx tak jak miałeś poprzednio:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    0
  • #5 21 Mar 2014 16:40
    Mariusz.94
    Poziom 8  

    Ale właśnie o to chodzi, że tego kodu nie wyczytuje jako funkcji; zobacz sobie na kolor - on tego nie zaakceptował jako działanie, tylko jak zwykły napis i dlatego nie chce tego skompilować. Tak jak kolega wcześniej wspomniał, ja pracuję na atmega 8

    Dodano po 3 [minuty]:

    Kod: text
    Zaloguj się, aby zobaczyć kod

    Kod: text
    Zaloguj się, aby zobaczyć kod

    Aktualny kod z aktualnymi błędami.
    On po prostu nie rozpoznaje funkcji: USART_Init i send_USART

    0
  • #6 21 Mar 2014 16:43
    mi14chal
    Poziom 28  

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Co to ma być? Przeczytaj podstawy języka C jak się przekazuje parametry do funkcji...

    0
  • #7 21 Mar 2014 17:22
    Mariusz.94
    Poziom 8  

    Coś zmieniłem i obecnie został mi tylko błąd z tym send_UART
    http://screenshooter.net/6254402/shguruk

    Dodano po 1 [minuty]:

    Zacznijmy od tego że jestem zielony i pierwszy raz mam z tym do czynienia a większośc tego co zrobiłem do tej pory było oparte o tą książkę i o dane katalogowe atmegi 8

    Dodano po 35 [minuty]:

    Dobra poradziłem sobie wysyłam kod gdyby ktoś miał podobny problem:

    Kod: c
    Zaloguj się, aby zobaczyć kod



    Kolejnym problemem okazał się hyper terminal którego nie ma na systemie windows 7 więc pobieram go z internetu Hyper terminal prywate ediition. I dalej już się totalnie gubię.
    Jak to ustawić???[/syntax][/table]

    0
  • #8 21 Mar 2014 17:51
    mi14chal
    Poziom 28  

    Nie wiem jak Hyper, ale ja korzystam z Putty jeśli chodzi o komunikację UART i jest prosty w obsłudze.

    0
  • #9 21 Mar 2014 18:06
    Mariusz.94
    Poziom 8  

    O rany ile funkcji w tym putty :p mógłbyś powiedzieć po kroku co i jak??

    0
  • #10 21 Mar 2014 18:21
    tadzik85
    Poziom 38  

    I jeszcze ten define i include w ciele funkcji. Katastrofa...

    0
  • #11 21 Mar 2014 19:32
    Mariusz.94
    Poziom 8  

    Ale o co ci chodzi napisz jasniej.

    0
  • #12 21 Mar 2014 19:40
    mi14chal
    Poziom 28  

    No w putty wybierasz serial wpisujesz numer portu i prędkość. A co do define i include w funkcji to tak się nie robi.

    0
  • #13 21 Mar 2014 19:43
    Mariusz.94
    Poziom 8  

    Ale taka struktura była w książce. to jak ma byc poprawny kod. Ten bedzie w ogóle działał?? Napisałeś strasznie ogólnie o tym putty, skąd mam wiedzieć jaki serial, co za serial i tym podobne.

    0
  • #15 21 Mar 2014 20:59
    Mariusz.94
    Poziom 8  

    tyle to sam zrobiłem i po wciśnięciu open. musze coś nadac żeby odebrać aja tam nie moge nadawać. i tu problem

    0
  • #16 21 Mar 2014 21:03
    mi14chal
    Poziom 28  

    Co rozumiesz przez że nie możesz nadawać?

    0
  • #17 21 Mar 2014 21:09
    Mariusz.94
    Poziom 8  

    Program echo polega na tym że ja wcisnę na klawiaturze jakiś klawisz a procek ma to zwrócić tylko najpierw murze mu to wysłać

    0
  • #18 21 Mar 2014 23:51
    mi14chal
    Poziom 28  

    Mariusz.94 napisał:
    Program echo polega na tym że ja wcisnę na klawiaturze jakiś klawisz a procek ma to zwrócić tylko najpierw murze mu to wysłać


    Może zacznij od początku pokaż kod, pokaż schemat, podaj konfigurację programu putty, daj komentarze do kodu.

    0
  • #19 22 Mar 2014 11:34
    Mariusz.94
    Poziom 8  

    To program który musiałem przerobić:
    Komunikacja UART na Atmega 8 błąd kompilacji [C]
    To program który zrobiłem na bazie danych katalogowych atmega 8:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    Wszystko się ładnie kompiluje.
    A podpięcie do portu RS232 jest standardowo przez układ scalony Max232.
    Konfiguracja putty:

    Źle dodane obrazki usunąłem. Mirek Z.

    0
  • #20 22 Mar 2014 12:29
    mi14chal
    Poziom 28  

    Skoro w komentarzu masz:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    To czemu w putty ustawiasz 1 bit stopu?

    0
  • #21 22 Mar 2014 15:59
    Mariusz.94
    Poziom 8  

    Ustawiałem na 2 i to samo było

    0