mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik baud einstellung beim httpserv projekt


Autor: baur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
suche jemanden der mir bei meinen problem etwas auf die sprünge helfen 
könnte.
derjenige sollte sich im httpserv projekt etwas auskennen.
dort ist eine baud von 115200 eingestellt und ich sollte sie halbieren
das geht über u2x, den auf 0 setzten. dfas ist mir klar nur ich lese 
mich durch sämtliche dokus durch und finde den übergang zu meinem 
projekt nicht.
es ist egal wo und wie ich die werte verändere sie haben keine 
auswirkung oder sie werden nicht ausgeführt. ich bräuchte da eventuel 
eine erklärung warum nicht oder wo ich da am besten ansetzte.

keine anleitung wie es gemacht wird nur eine hilfestellung!!

dbaur

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welcher µC? Wie sieht der Sourcecode an dieser Stelle aus? Welche 
Taktrate benutzt dein µC?

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe mir jetzt die Sourcen von Arthernet angesehen.

Die Einstellung der Baudrate ist über die Bibliotheksfunktion _ioctl() 
gekapselt und die direkte Manipulation der UART-Register bringt dir 
nichts.

httpserv.c (bzw. Originalversion httpserv.c__)
int main(void)
{
    // Definieren der Wunschbaudrate
    u_long baud = 57600; // bzw. 115200; in httpserv.c__
    u_char i;

    /*
     * Initialize the uart device.
     */
#if defined(__AVR__) || defined(WOLF)
    NutRegisterDevice(&devDebug0, 0, 0);
    freopen("uart0", "w", stdout);
#else
    NutRegisterDevice(&devDebug2, 0, 0);
    freopen("sci2dbg", "w", stdout);
#endif

    // Setzen der Wunschbaudrate
    _ioctl(_fileno(stdout), UART_SETSPEED, &baud); 
    ...

D.h. in der modifizierten Source ist die Baudrate bereits auf 57600 
halbiert. Du brauchst die Source bloss noch so zu übernehmen.

Allerdings musst du im Hinterkopf haben, dass aus dem angegebenen 
Wunschwert und der Taktrate die Werte für die Baudratenregister der UART 
berechnet werden.

Je nach Taktrate deines µC können dabei Werte herauskommen die einen 
mehr oder minder grossen Baudratenfehler besitzen.

Es kann sich lohnen einen Quarz mit "krummen" Frequenzen zu benutzen, 
bei dem Baudraten mit möglichst geringem Fehler möglich sind - einen 
sog. Baudratenquarz.

Welche Kombinationen von Baudrate/Taktrate gut geeignet sind, steht 
typischerweise im µC Datenblatt/Manual z.B. in den Tabellen "Examples of 
Baudrate Setting"

Autor: Timo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rein Interesse halber: Du machst den ganzen Kram ja für eine 
Abschlussarbeit, oder? Wofür denn? Schule, Ausbildung, Studium?

Autor: baur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok danke stefan
werde das mal übernehmen

Autor: baur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
re timo

ja das ist mein abschlussprojekt meiner weiterbildung als 
elektrotechniker


dbaur

Autor: baur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
RE: stefan

hab das übernommen:

nur beim builden mekert er mir:

!E F:\nut\app\httpd\httpserv.c(326): undeclared identifier `devDebug2'
!E F:\nut\app\httpd\httpserv.c(326): type error in argument 1 to 
`NutRegisterDevice'; found `pointer to int' expected `pointer to struct 
_NUTDEVICE'
F:\icc\bin\imakew.exe: Error code 1
Done: there are error(s). Exit code: 1


kann ich aus dem 'devdebug2' auch 'devdebug1' machen?

Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>kann ich aus dem 'devdebug2' auch 'devdebug1' machen?

Verstehst du eigentlich, was du da tust?

Wenn ich mir deine anderen Threads ansehe, dachte ich bisher eigentlich 
du bist ~12 Jahre alt, die Prüfung zum Techniker überrascht mich dann 
doch etwas.

Autor: baur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
deshalb frage ich ja nach

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du hast vermutlich (sehe deine Sourcezeile um 326 nicht) nicht die 
richtigen Defines gesetzt.

Der devdebug2 Fall ist in meiner Source aktiv, wenn _AVR_ und WOLF 
nicht definiert sind.
int main(void)
{
    u_long baud = 57600;
    u_char i;

  /* init LED */
  DDRB |= (1<<PB5);
  PORTB &= ~(1<<PB5); /* "visual alive" */

    /*
     * Initialize the uart device.
     */
#if defined(__AVR__) || defined(WOLF)
    NutRegisterDevice(&devDebug0, 0, 0);
    freopen("uart0", "w", stdout);
#else
    NutRegisterDevice(&devDebug2, 0, 0); // LINE 559
    freopen("sci2dbg", "w", stdout);
#endif
    _ioctl(_fileno(stdout), UART_SETSPEED, &baud);
    NutSleep(200);
    printf("\n\nNut/OS %s HTTP Daemon...", NutVersionString());

devdebug2 wäre für ein UART2, ich kenne jedoch nur AVR mit UART0 und 
max. UART1.

Du kannst sicher devdebug2 oder devdebug0 in devdebug1 ändern. Dann 
würde stdout auf UART1 kommen. Setzt voraus, dass dein AVR UART1 hat.

Ich würde aber zuerst dem Problem nachgehen, wieso in deiner 
Entwicklungsumgebung der Sourceteil übersetzt wird, der nicht für AVR 
angepasst ist.

Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja okay, nachfragen ist natürlich immer nicht schlecht, aber ich denke 
ich bin nicht der einzige der verwundert ist, dass du SO viel fragen 
musst. War dafür nicht die Zeit deiner Weiterbildung gedacht? Habt ihr 
da denn überhaupt nichts mit µC Programmierung gemacht? Dir scheinen 
einfach sehr viele Grundlagen zu fehlen.

Autor: baur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nein speziell µc haben wir nichts gemacht. und nur die wichtigsten 
grundlagen in c haben wir durchgemacht.

ich weis das c nicht ganz mein fall ist. dafür kann ich allerdings nicht 
viel. und das projekt muss gemacht werden. ob ich das kann oder nicht.

und das ich es mit fragen formulieren auch nicht wirklich drauf hab kann 
ja jeden sehen. hab halt nicht die weisheit gefressen so wie manche das 
von jemandem als grungvorraussetzung halten.

dbaur

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
baur wrote:
> nein speziell µc haben wir nichts gemacht. und nur die wichtigsten
> grundlagen in c haben wir durchgemacht.
>
> ich weis das c nicht ganz mein fall ist. dafür kann ich allerdings nicht
> viel. und das projekt muss gemacht werden. ob ich das kann oder nicht.
>
> und das ich es mit fragen formulieren auch nicht wirklich drauf hab kann
> ja jeden sehen. hab halt nicht die weisheit gefressen so wie manche das
> von jemandem als grungvorraussetzung halten.

Niemand verlangt hier das man die Weisheit mit Löffeln
gefressen hat.

Wenn allerdings eine Abschlussarbeit das Herstellen eines
Aluteils beinhaltet und dann kommt die Frage wie rum man
denn die Feile zu halten habe, dann ist das etwas befremdlich.

Autor: baur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also gut dan gebe ich es auf.


noch schöne tage ohne mich


dbaur

Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es geht wirklich nicht um Weisheit! Entschuldige, wenn ich dir zu nahe 
trete, aber deine Fragestellung ist größtenteils unter aller Sau! Wenn 
du dir dieses Problem selbst bewusst bist, musst du dich umso mehr 
bemühen die Fragen vernünftig zu stellen und dich nicht einfach damit 
abfinden, dass du es nicht kannst, und gekränkt sein, wenn jemand das 
Thema anspricht.

Du musst Fragen so stellen, dass ein "Unbeteiligter" dir nur durch lesen 
der Frage eine Antwort geben kann.

Das heißt, es müssen ALLE relevanten Informationen darin enthalten sein 
und du selbst musst GANZ genau wissen, was du erfragen möchtest und zwar 
nicht Marke: "Das geht alles nicht, was mache ich falsch?".

Als Techniker ERWARTET man einfach von dir solche grundlegenden 
Fertigkeiten  in deinem späteren Arbeitsleben, du tust also gut daran, 
dich in diesem Gebiet DEUTLICH zu verbessern!

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, da sich der inhaltliche Teil mit dem Ausstieg des Ursprungsposters 
ja erledigt hat, kann man ja mal ein wenig OT werden.

Ich lese hier zwar nur passiv mit, aber mir ist in letzter Zeit auch 
immer mehr aufgefallen, dass viele Fragen zu irgendwelchen 
Abschlussarbeiten/Diplomarbeite/... kommen. Die Frager haben meist gar 
keine oder kaum vorhandene Kenntnisse zu den verwendeten 
Mikrocontrollern oder den Problemen drum herum.

Ich verstehe das nicht, ist denn nicht deren Ausbildung davor(!) dafür 
zuständig die Grundlagen zu lernen. Zumindest das Lesen eines 
Datenblattes oder div. Webseiten sollte doch drin sein - und das hat 
absolut nichts mit Weisheit fressen zu tun (finde ich!). Konkrete Fragen 
stellen kann man dann immer noch.

Aber wer im Glashaus sitzt soll nicht mit Steinen werfen. Ich soll im 
Rahmen meiner Tätigkeit (FH) demnächst auch ein paar Studies die 
Grundlagen zur C-Programmierung am Beispiel eines kleinen Atmels 
beibringen. Gar nicht so einfach.

Schönen Tag noch....

Autor: Jörg B. (manos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mach einfach einen Thread auf und wir machen das für Dich :)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.