- Akku Tests und Balkonkraftwerk Speicher         
Seite 4 von 4 ErsteErste ... 234
Ergebnis 31 bis 36 von 36

Thema: Anfänger in C sucht Tutorial-Empfehlung

  1. #31
    Erfahrener Benutzer Roboter Genie Avatar von robocat
    Registriert seit
    18.07.2006
    Beiträge
    935
    Anzeige

    Praxistest und DIY Projekte
    hallo oberallgeier,
    stell ruhig hier weiterhin deine fragen. der nächste, der c lernen will und diesen thread findet (leider ist die forums-suchmaschine nicht gerade toll im auffinden älterer threads) wird sich evtl. freuen

    im K&R wird ja (soweit ich weiss, hatte das Buch nur vor ewigkeiten mal aus der bibliothek hier) von ansi-c ausgegangen, mit stdio.h, also einer standardein- und ausgabe. microcontroller haben so etwas nicht, deshalb wirst du dir solche (und viele andere funktionen) woanders suchen oder selbstschreiben müssen.

    um die beispiele im Buch schöner durcharbeiten zu können, würde ich einen compiler installieren, der executables für windows (oder linux, wenn du das verwendest) erzeugen kann. von dev-c(++) http://de.wikipedia.org/wiki/Dev-C++ habe ich viel gutes gehört, ich selbst verwende bcc32 (mit einer selbstgestrickten entwicklungsumgebung) und es gibt noch eine ganze reihe weiterer compiler/IDE´s.

    microcontroller darfst du schon weiterhin programmieren aber den K&R sollte man wohl doch besser mit einem pc angehen.

    also viel erfolg, und immer raus mit den fragen

    gruesse

  2. #32
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.686
    Vielen Dank Hubert.G und robocat,

    für die prompten Antworten. Danke Hubert.G - die lib´s von P.Fleury habe ich seit Tagen am PC - und wollte sie sowieso heute durchgehen. Ich glaube aber, ich lerne bei meinem derzeitigen Wissensstand (so etwa Elementar-Stufe) mehr, wenn ich auch mal was selber schreibe oder im *doc abschreibe. Daher popel ich lieber selbst mal so chaotisch rum. Aber danke für den Hinweis.

    @robocat - Nach zwei Abstürzen meines (bisher relativ stabilen) Computers in den letzten beiden Wochen habe ich erstmal etwas Bange Programme zu schreiben, mit denen ich bei ausreichender Unachtsamkeit ins Betriebssystem komme - ich kenne meine Experimentierfreude. Da programmiere ich lieber erstmal einfache Dinge für meine Tinys und den mega16/32 - dabei hatte ich bisher nur zwei Billigservos, einen tiny2313 und einen max232 verheizt - und gute Erfahrung gewonnen. Bei den Servos, um die ICs war es blos schade .

    Dann danke - und bis zu den nächsten 98 Fragen
    Ciao sagt der JoeamBerg

  3. #33
    Erfahrener Benutzer Roboter Genie Avatar von robocat
    Registriert seit
    18.07.2006
    Beiträge
    935
    also am pc mit software etwas kaputtzubekommen ist nicht so einfach. die erstsemester-studenten werden im rechenzentrum normalerweise auch auf PCs losgelassen, ohne dass die alle in rauch aufgehen.
    man kann mit einigem aufwand die festplatte unbrauchbar machen, das geschieht aber nicht "mal eben so" sondern man muss schon ungefähr wissen, was man tut. ansonsten kriegt man unter windows irgendwelche hardware höchstens auf driver-level kaputt, und auch das geschieht nicht versehentlich, sondern höchstens wenn man mit dem DDK treiber entwickelt.
    ich programmiere ja schon länger, und habe schon einiges an abstürzen (im sinne eines plötzlichen reboots, ohne defekte), BSODs und exceptions erlebt - aber kaputtbekommen habe ich noch nichts, und wenn mein fehlerhafter code nicht mehr ausgeführt wurde, war auch das problem gegessen.
    ich vermute also stark, dass deine programme nichts mit den defekten zu tun haben.

    seh es einfach so: wenn windows hardware zerstören könnte, dann hätte es das längst getan!

    gruesse

  4. #34
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.686
    Zitat Zitat von robocat
    ... die erstsemester-studenten werden im rechenzentrum normalerweise auch auf PCs losgelassen, ohne dass die alle in rauch aufgehen....
    da fällt mir spontan eines meiner studentischen Erlebnisse ein: zweimal das Betriebssystem ner Cray rausgeworfen (die war damals Oberstufe in DE), weil die Matritze so gross war und das Ganze nicht sooo pfiffig programmierte war. Beim ersten Mal gabs nen allgemeinen Aufruf vom RZ, beim zweiten Mal hatten sie gemerkt wer das war und uns verwarnt - daher gabs dann kein drittes Mal.

    Aber Du hast schon recht - ich glaub auch nicht, dass meine AVRStudio-Gänge der Grund für die Defekte war - nur eben das Kräuseln der Nackenhaare ist da . . .
    Ciao sagt der JoeamBerg

  5. #35
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.686
    Also R&K ist EINE Sache. Und ich gehe den auch immer wieder mal ein Stück durch. Aber AVRGCC ist eben eine andere. Und für die ist meiner Meinung nach die Einarbeitung deutlich schwerer - es ist zwar im Prinzip alles da, aber ICH brauch das bestimmt ein klitzekleines Stück anders - und schon läuft wieder nix .

    Ich bin ja schon mit der RS232-Ausgabe aufgelaufen, weil der AVR kein printf kennt. Mir ist mittlerweile auch klar warum - weil das printf eben die Ausgabe an eine Betriebssystem-Standardkonsole ist oder so - und Hubert.G nochmal danke. Damit läuft ein Motortest - und ich kann mittlerweile recht genau feststellen, bei welchem Ausgabewert an die PWM ("setPWM..") ein Motor anläuft und wo er bei steigendem Ansteuerungswert nicht mehr weiter hochdreht . . .

    Da ich vorerst ausschließlich meine µC´s in C programmieren will, hilft aber der R&K mitunter eingeschränkt oder garnicht (ich hänge derzeit seit Tagen an I2C - die Libs bin ich immer wieder durchgegangen, aber ich krieg sie nicht angewendet... ). Und ISR in C sieht dem Assemblercode ähnlich - auch das kann ich nicht mit einem "üblichen" Compiler trainieren. Also muss ich schon beim AVRGCC/WINAvr bleiben, wenn ich mit den AVR-Controllern arbeiten möchte.

    Was eigentlich fehlt (für mich als Anfänger) sind solche kurzen Stücke wie im C-Tutorial
    https://www.roboternetz.de/wissen/index.php/C-Tutorial

    das mit "Aufbau eines C-Programmes" ein kurzes Codestück mit einem SEHR ausführlichen Kommentar hat. Das bisschen hatte mir einen sehr guten Einblick gegeben. Ich meine, wenn man solche Anwendungshinweise zu einzelnen Themen schreiben könnte (ok, es ist grad Weihnachten, da neigt man zu Wünschen oder Wunschlisten), dann könnte es manchem Anfänger helfen. So brüte ich schon den ganzen Nachmittag mit meiner Counter-Routine (100 - 1000 Hz - Impulse von zwei Portpins vom 2313 oder mega16/32 in C erfassen ), die ich in Assembler in der Zeit wohl schon hingekriegt hätte.

    Aber ich werd noch am Wochenende selber dran popeln und dann einen problemspezifischen Hilferuf ausstossen.
    Ciao sagt der JoeamBerg

  6. #36
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.686
    Neuerliche Bitte um Hilfe bei C, diesmal geht es um Optimierung des Datenbereiches. Ich glaube, das passt hier unter diesen Titel; ein neuer Thread scheint mir nicht nötig.

    Aufgabe: RAM im mega168 optimieren bei AVR-Studio/WINAvr.
    Grund: die derzeitige Memoryaufteilung:
    Code:
    AVR Memory Usage
    ----------------
    Device: atmega168
    
    Program:    4324 bytes (26.4% Full)
    (.text + .data + .bootloader)
    
    Data:        782 bytes (76.4% Full)
    (.data + .bss + .noinit)
    benötigt 76 % des Datenbereichs. Da ich noch einige Variablen für die Programmerweiterung einbringen muss, ist eine Optimierung erforderlich.

    Was habe ich bisher getan?
    Mir schien der File *.map
    Code:
    Archive member included because of file (symbol)
    
    c:/programme/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_exit.o)
    
    Rest gestrichen - wegen zu großer Länge des postings und weil es nicht mehr relevant ist, siehe Nachtrag
    
    .debug_macinfo
     *(.debug_macinfo)
    OUTPUT(2drehzmess-168.elf elf32-avr)
    LOAD linker stubs
    am vielversprechendsten. Leider verstehe nicht nicht alles (das ist leicht übertrieben - sollte heissen: verstehe fast nix).

    Ich erkenne
    Code:
    Memory Configuration
    
    Name             Origin             Length             Attributes
    text             0x00000000         0x00020000         xr
    data             0x00800060         0x0000ffa0         rw !x
    eeprom           0x00810000         0x00010000         rw !x
    *default*        0x00000000         0xffffffff
    diesen Memory-Abschnitt. Offenbar geht der Datenbereich ab 0x00800060 los. Geht der bis 0x00810000?? Vermutlich ist die 0x0081 ein compilerinterner offset. Trotzdem - das wären ja 64 KByte data [-X das stimmt doch nicht - das Datenblatt sagt, dass das SRAM von 0x0100 bis 0x04FF geht - und das sind die 1024 Bytes die ich im Kopf habe (nein, das ist nicht die Anzahl meiner Synapsen, sondern die Anzahl der SRAM-Bytes des m16.

    Ok, dann gibt es den Bereich "COMMON". In diesem Abschnitt der map stehen dann auch die Variablennamen drinnen, von denen ich denke, dass sie optimierbar sind. Statt int16 eben int8 - wenn das geht. Aber ich brauche auch Werte +/- 64000 (wenn ich beim Überlauf den int16 auf Null setze und den neuen Wert vom alten abziehe - bekomme ich etwas zwischen minus64000 und minus63000, so in der Art) für meine Zeitrechnung. Und dann komme ich leider auf die speicherfressenden signed long

    Die Wertebereiche entnehme ich dem C-Tutorial. Daraus entnehme ich, dass uint16_t eben ein unsigned short ist und int16 ein signed short - entsprechend den Angaben im AVR-GCC-Tutorial.

    BEVOR ich die Schere (und mein analytisches Gehirn) hier ansetze, wollte ich wissen, woran ich wirklich bin. Daher diese ausführliche Beschreibung.

    Meine Fragen:
    1) Kann ich Daten NUR im SRAM ablegen (doch wohl nicht)?
    2) Kann ich es steuern, ob Daten im SRAM abgelegt werden?
    3) Kann ich Daten ins Flash bringen?
    4) Wie kann ich Daten (Zahlenwerte) in den Flashbereich bringen? Sind die dort langsamer zugreifbar? Mir ist klar, dass im Datenblatt steht: "– Write/Erase cyles: 10,000 Flash/100,000 EEPROM".
    5) Vermutlich ist es unsinnig, Daten für ISR ins EEPROM zu schreiben, weil das Schreiben und wieder holen zeitaufwendig ist ! ? ! ?

    Danke im Voraus,

    Nachtrag : Mi.. - ich war schon wieder viel zu voreilig. Hab mal die ganzen
    Code:
    	sendUSART("Motor dreht links, Drehzahl läuft hoch.\r\n");
    	sendUSART("PWM-Stellwerte\r\n");
    	sendUSART("_n__li__re\r\n");
    und
    Code:
    		utoa(Izeit_1, wortiz1, 10);
    		sendUSART(wortiz1);sendUSART("  ");
    		utoa(Iz_diff1, wortzd1, 10);
    		sendUSART(wortzd1);sendUSART("  ");
    		sendUSART(worti);sendUSART("  ");	//PWM-Stellwerte
    		sendUSART(wortkli);sendUSART("  ");
    		sendUSART(wortkre);sendUSART("\r\n");
    auskommentiert. Und ein erfrischendes Ergebnis nach dem Compilieren bekommen:
    Code:
    AVR Memory Usage
    Device: atmega168
    Program:    2522 bytes (15.4% Full)     (.text + .data + .bootloader)
    Data:         36 bytes (3.5% Full)           (.data + .bss + .noinit)
    Sorry, das hätte ich wirklich vor dem Fragen machen können.

Seite 4 von 4 ErsteErste ... 234

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test