-         
+ Antworten
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 15

Thema: Wie bekomme ich das C-Programm in den AVR-Chip?

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    03.01.2004
    Ort
    Pottenstein
    Alter
    37
    Beiträge
    265

    Wie bekomme ich das C-Programm in den AVR-Chip?

    Moin moin!

    Ich hab mir gerade WinAVR runtergeladen (WinAVR-20030913-bin-install.exe), ein 18MB-Monstrum. Allerdings bin ich jetzt unangenehm ueberrascht, dass das eine unuebersichtliche Ansammlung von Tools ist, die alle irgendwie nicht richtig zusammengehoeren.

    "Programmers Notepad" hab ich inzwischen als den Editor identifiziert, mit dem ich den Quellcode schreibe. Dort muss man anscheinend erst unter "Options" irgendwie den Compiler einbinden, um den Quellcode ueberhaupt kompilieren zu koennen. Das sollte ja wohl gcc.exe sein, hab ich also mal dort eingetragen und versucht ein Minimalprogramm

    int main(void)
    {
    return 0;
    }

    zu kompilieren. Aber schon das ging nicht ("gcc.exe: no input files,> Process Exit Code: 1").
    In dem Readme steht dann noch was von makefiles und binutils, das sieht fuer mich alles aus wie C-Softwareentwicklung unter Unix, sprich Steinzeit, was mir noch nie gelegen hat

    AVRs sind doch weit verbreitet, da gibts doch bestimmt ein vernuenftiges Entwicklungstool, so wie zum Beispiel die CControl-Basic Entwicklungsumgebung von Conrad. Muss ja nix besonderes sein, bloss ein Editor mit nem Knopf "Compile" und nem Knopf "Download to Microcontroller". Sowas wie ne sehr einfache Version vom MS Developerstudio oder dem JCreator halt, bloss um den Download-Knopf erweitert...
    Kennt jemand sowas bzw weiss, wo man sowas herbekommt??

    Falls nicht:
    - Kann mir jemand sagen, wie ich in diesem komischen Programmers Notepad die Tools einbinden muss, damit sie aus meinem Quellcode eine Datei machen, die ich dann in den AVR-Chip schiessen kann?

    -Wie kriege ich besagte Datei dann in den Chip? Anscheinend ja nicht vom Programmers Notepad aus?

    -Muss ich mich bei AVR auch noch um das Linken kuemmern oder macht wenigstens das der Compiler?


    Makefiles und den ganzen Summs sollte ich eigentlich nicht brauchen, meine erste Anwendung waere ein einziges C-File. Falls man bei den AVRS schon fuer einfache Portzugriffe Headerfiles (.h) einbinden muss, geht das hoffentlich noch ohne Make??
    Assemblerprogrammierung taete mich auch noch interessieren, beim 68HC... (CC1) bin ich da recht fit. Ist das Handling da vielleicht bei AVRs einfacher als das von C-Programmen?

    Die Hardware sollte ich eigentlich komplett haben: Ein AVR-ISP Adapter fuer den Parallelport, eine kleine Schaltung um die Pins meines AT90SLS2343 und 5V auf ein Gegenstueck zum zehnpoligen Stecker am Adapter zu bringen (nach der Schaltung im AVR-Tutorial bei Microcontroller.com).

    Kann jemand helfen???

    Nils

  2. #2
    Administrator Robotik Einstein Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    4.943
    Blog-Einträge
    1
    Kijon hat ein recht gutes Tutorial für den Einstieg zusammengeschrieben. Schau mal hier rein:

    http://www.kreatives-chaos.com/index.php?seite=avrgcc

    <Kijon> Vielleicht kannst Du es auch noch als PDF irgendwo ablegen, ist immer schön wenn man sowas beim Einstieg auf Papier hat. Ich könnte es dann auch noch im Downloadbereich legen.

    Gruß Frank

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    22.11.2003
    Beiträge
    991
    Muss mal sehen wie ich das am besten machen lässt. Kann ich aber auf jeden Fall machen. Ich sag dir dann Bescheid...

    MfG Kjion

  4. #4

    Downloading, Installing and Configuring WinAVR

    Hallo,

    bin/war in einer ähnlichen Situation wie du. Eine, wie ich meine, gute Einführung findest du unter

    http://www.avrfreaks.net/Tools/ToolF...fig_WinAVR.pdf

    Allerdings habe ich die Übertragung vom PC auf den Mikrocontroller mit dem Programm Ponyprog v2.06 beta
    Download unter:
    http://www.lancos.com/ppwin95.html
    bewerkstelligt.

    Device auswählen, Setup durchführen und zwar so:
    SETUP INTERFACE SETUP PARALLEL, AVR ISP I/0, nicht vergessen den LPTx Port auswählen und anschließend zu kalibrieren.
    Dann *.hex Datei aus WinAVR.pdf Kapitel 6 (Your First WINAVR Project) laden und übertragen.

    Das Kabel vom Parallelport zum Mikrocontroller sollte möglichst kurz sein. (Ich hatte eines das ca. 2m was zu ständigen Problemen bei der Übertragung führte, nachdem ich die Länge des Kabels halbiert habe, funktioniert es jetzt ausgezeichnet)
    Folgenden Stecker (Paralleles Interface für AVR und PonyProg) habe ich mir gebastelt

    http://s-huehn.de/elektronik/avr-prog/avr-prog.htm

    Viel Erfolg
    robi

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    03.01.2004
    Ort
    Pottenstein
    Alter
    37
    Beiträge
    265
    Moin moin!

    Inzwischen hab ich das WinAVR-Paket halbwegs ent-droeselt. Kjions Tutorial war da ne grosse Hilfe. Ich habs erstmal genauso eingerichtet wie dort beschrieben, mit den drei Make-Eintraegen bei den Tools und dem Speicherplatz-Anzeiger.
    Jetzt kaempfe ich mit dem Programmieren, aber da ich C mal sehr gut konnte, krieg ich das schon "wiederbelebt". Hab da auch die Anleitung von Christian Schifferle installiert, die ist gar nicht schlecht, um die Eigenheiten des AVR-Cs kennenzulernen.

    Das naechste Problem wird dann das Schiessen des Flash-Speichers. Ich hab mir wie gesagt den AVR-ISP bestellt. Dann hab ich auf mikrocontroller.net diesen Schaltplan fuer die ISP-Programmierung gefunden und das ganze leicht abgewandelt, weil ich ja nen anderen Chip benutze (AT90S2343) und einen anderen ISP-Stecker hab. Bei mir kommt dann der zehnpolige Stecker vom Adapter auf einer Pfostenleiste (2*5) an und von da gehen dann die Signale Reset, SCK, MISO und MOSI zu einer 8poligen Fassung. Zum Programmieren stecke ich meinen AVR da rein, danach kommt er in die wirkliche Anwendung. Externen Oszillator brauch ich keinen.
    Wo ich mir noch nicht ganz sicher bin: In dem Schaltplan ist eine 5V-Spannungsquelle angegeben, ist damit gemeint, das auf dem Vcc-Pin des Adapters 5V rauskommen und den Chip und die Schaltung fuer die Programmierung versorgen? Oder muss ich die 5V von aussen anlegen, um damit den Adapter, die Schaltung und den AVR zu versorgen?

    Ein anderes Problem ist Windows XP: Wenn ich das Make-Tool zum Programmieren aufrufe, bekomme ich die Meldungen:

    avrdude -p at90s2343 -P lpt1 -c avrisp -U flash:w:stepper.hex
    avrdude: serial_open(): can't set attributes for device "lpt1"

    Ich vermute mal, das ist diese (absichtliche?) Fehlfunktion von Windows XP, dass Portzugriffe prinzipiell geblockt werden. Weiss jemand dafuer eine Loesung? Ich meine mal gelesen zu haben, dass es ein Programm gibt, dass man einmal ausfuehrt und dann hat man auf den Port, den man dabei angegeben hat, freien Zugriff. Dummerweise kann ich das aber im www nirgends finden...

    Besten Dank fuer alle Tips,

    Nils
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken avr-schaltplan.gif  

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    16.01.2004
    Alter
    61
    Beiträge
    74
    Hallo Minifriese,

    Den AVR mußt du von außen mit einer Stromversorgung betreiben, oder die USB Spannung benutzen.
    Der Anschlußstecker von deinem AVR Board versorgt dann deinen ISP Adapter über VCC.

    Wegen AVRDude schau mal hier nach:

    http://www.roboternetz.de/phpBB2/vie...hlight=avrdude.


    Gruß Jörg
    Geduld......... [-(

  7. #7
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    03.01.2004
    Ort
    Pottenstein
    Alter
    37
    Beiträge
    265
    Moin,

    Danke fuer die Tips. Werde also meinem kleinen Programmierboard eine 5V-Spannungsversorgung verpassen.
    Das mit dem AV-Dude klappt allerdings nicht. Giveio funktioniert zwar und gibt "Success" zurueck, auch mit Status_giveio kriege ich ein "ok" angezeigt. Bloss an der Fehlermeldung aendert sich rein gar nix. Naja, mal sehen, vielleicht isses ja auch irgendeine Windows-Einstellung, die bei mir anders ist als bei dir. Du hattest aber auch XP, oder?

    Nils

  8. #8
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    03.01.2004
    Ort
    Pottenstein
    Alter
    37
    Beiträge
    265
    Moin,


    Der AVR-Dude bringt immer noch die gleiche Fehlermeldung, den hab ich erst mal aufgegeben. Stattdessen hab ich jetzt Ponyprog installiert. Das verhaelt sich allerdings ebenfalls komisch: Ich habe zwei AVR-Controller probiert, beides AT90S2343.

    - Beide kann ich mit Ponyprog lesen, sind natuerlich lauter 0xFFs drin, weil sie ja gerade neu sind. Allerdings kann ich sie erst lesen, nachdem ich bei der immer auftretenden Fehlermeldung "Device missing or unknown device (-24)" auf "Ignore" klicke.

    - Bei beiden Chips kann ich das EEPROM schreiben. Das ist bei meinem einfachen Testprogramm natuerlich komplett mit 0xFFs voll, aber immerhin funktioniert diese Option. Wenn auch wieder erst, nachdem ich den Fehler -24 ignoriere.

    - Bei beiden Chips kann ich weder den Flash-Speicher beschreiben, noch das ganze Device (Was wohl den Flash einschliessen wuerde). Bei dem Versuch kommt ebenfalls die Standard-Fehlermeldung wie oben, aber jetzt kommt nach dem Ignorieren die Fehlermeldung "Write error (-21)".

    - Beim Befehl Config- und Security-Bits lesen kommt wieder der Fehler -24. Nach "Ignorieren" macht das Programm aber was, dann kommt nochmal der Fehler, nochmal ignorieren und ich kriege die Maske mit den Bits angezeigt. Nur: Da stehen nur die beiden Lockbits (werden ohne Haken gezeigt, also gesetzt???) und ein RCEN (ebenfalls ohne Haken). Laut Manual des 2343 sollte da aber mindestens noch ein SPIEN stehen und dann noch eine Signatur, wenn ich das richtig verstanden habe.

    Den Retry-Button hab ich in allen Faellen ausprobiert, aber auch nach zig Versuchen siehts genauso aus.

    Folgende Fehlerquellen hab ich schon ausgeschlossen:

    -Portzugriff unter Windows: Da ich ja die Chips lesen kann, muss das wohl funktionieren. Damit ist mir wieder voellig unklar, warum der AVR-Dude nicht ging.
    -Einstellung des Programmieradapters: Bei "Probe" im Setup-Menue von Ponyprog wird der Programmer als OK erkannt. Wenn ich versuchsweise den anderen AVR-ISP (API) auswaehle, kommt ein Fehler, also ist das wohl der richtige.
    -Kabellaenge: Ich habe mein Kabel vorsichtshalber gleich von 1,5m auf etwa 50cm gekuerzt. Das sollte ja selbst fuer den Parallelport kurz genug sein.
    - In den FAQs zum Ponyprog steht, dass man auch mit einigen der Ueberwachungszeiten im Ponyprog-INI-File spielen kann. Auch das hat nix gebracht.

    Was mich etwas gewundert hat: Waehrend ich versuche zu lesen oder zu schreiben, wird die Reset-Leitung nicht auf Null, sondern erstmal nur auf ca 1V gezogen. Hat mich zwar ueberrascht, aber da ich ja die Chips lesen kann, ist das nicht das Problem, oder?

    Falls irgendjemand ne Idee hat, warum Ponyprog spinnt oder AVR-Dude nicht geht: Ich bin fuer jede Hilfe oder Frustbegrenzung dankbar...

    Nils

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    09.02.2004
    Ort
    Darmstadt
    Alter
    36
    Beiträge
    32
    Hey Nils,

    also bei den Programmern gibt es anscheinend unaufhörlich Probleme (wenngleich meine immer auf Anhieb funktioniert haben in Kombination mit PonyProg).

    Wie Jörg schon schrieb kommst Du ohne Spannungsversorgung des Programmers nicht aus.
    Du meintest, Du würdest den AVR in den Programmieradapter stecken und hättest letzteren daher modifiziert... ist am Controller der Reseteingang korrekt beschaltet (R/C)? Hast Du auch 100nf an der Spannungsversorgung des µC hängen?

    Du könntest auch mal den einfachsten aller Programmieradapter probieren - mit fünf Leitungen und 2 Widerständen (mehr dazu bei mikrocontroller.net). Einige meinen, man könnte damit seinen Port im PC himmeln, aber beim Testen allein dürfte nicht viel passieren. Als Zweit-Programmer tut er's bei mir auch, sogar ohne Widerstände

    Jens
    Rot ist Schwarz und Plus ist Minus.

  10. #10
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    03.01.2004
    Ort
    Pottenstein
    Alter
    37
    Beiträge
    265
    Naja, ich hab halt ne kleine Schaltung gebaut, wo die Signale vom 10poligen Stecker auf die entsprechenden Pins des AVRs (bzw des Sockels) gehen. Ist ja soweit ganz einfach. Ich hab auch den Resetpin ueber 10kOhm an 5V haengen und ueber 47pF an Masse. Auch die 100nF zwischen 5V und Masse der Versorgungsspannung sind da. Ich hab mich halt an dem Bildchen orientiert, dass ich weiter oben gepostet habe. Bei mir ist ja bloss der Controller ein anderer und ich hab zehn statt sechs Pole am Stecker. Das ist aber eigentlich wurscht, weil ja die ISP-Anschluesse trotzdem da sind.
    Das Teil mit den zwei Widerstaenden hab ich auch schon gesehen, mich aber wegen des empfindlichen Parallelports nicht getraut. Braucht man denn da auch die externe Spannung fuer den AVR? Und welchen Programmer stellst du dann bei Ponyprog ein? Vielleicht trau ich mich ja doch mal. Frust macht mutig...

    Uebrigens hat mein AVR-ISP einen Pin, der LED heisst. Das hab ich jetzt so interpretiert, dass ich da ne Leuchtdiode anschliessen kann, die anzeigt, wenn der Adapter gerade programmiert. Hab ich angeschlossen, die LED selber geht auch, hat aber nie geleuchtet, auch nicht beim Schreiben des EEPROMs, was ja anscheinend funktioniert hat. Hat das was zu sagen?

+ Antworten
Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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