mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Erste Schritte mit ATmega16 und AVR-P40-USB


Autor: Marcus Pries (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Als Neuling in der AVR-Programmierung bin ich auf einige Stolpersteine
gestoßen. Um sie anderen zu ersparen habe ich mich entschlossen, diesen
Beitrag zu schreiben.

Mein Anfängerset besteht aus:

1 x ATmega16
1 x AVR-P40-USB
1 x AVR-In-System-Programmer

alles von shop.mikrocontroller.net

Das Board ist sehr praktisch da man keine weitere Stomversorgung als
den USB-Bus benötigt. Der ist ja sowiso in der Nähe, wenn man über den
In-System-Programmer programmiert.

Da ich kein Assembler-Fan bin habe ich mit WinAVR angefangen mich in C
zu versuchen. Und mein erstes Projekt sollte sein die LED auf dem
AVR-P40-USB zum leuchten zu bringen - später ist blinken geplant :)

Dabei traten folgende Probleme auf:

1) Das Programm ließ sich nicht auf den mega16 übertragen
2) Das Programm tat nicht was es sollte

zu 1:

Ich habe es nur mit PonyProg2000 geschafft das Programm unter WindowsXP
auf den AVR zu übertragen (Version 2.05a Beta). Einstellungen: Parallel,
AVR ISP I/O, LPT1, keine weiteren Optionen. Das erstelle .hex-File in
den Flasch laden. Der Programmer muß übrigens an den ICSP-Stecker links
neben der USB-Buchse.

zu 2:

Als Ergebnis meiner LED-Anstrengungen ergab sich folgendes Programm:

#include <stdint.h>
#include <avr/io.h>

int main(void) {

  DDRB = 0xFF;  // gesamten Port B auf ausgabe
  PORTB = 0x00; // LED einschalten auf P40-Board (Bit 0)

}

Dazu ein paar Anmerkungen:

Die LED ist (wie im Datenblatt zum Board beschrieben, s.u.) an Port B,
Bit 0 angeschlossen. ABER: Um die LED auf dem Board zum leuchten zu
bringen muß das Bit auf 0 gesetzt werden. NICHT auf 1! Das kann auf
verschiedene Arten passieren:

- radikal wie oben gezeigt mit "PORTB = 0x00;" womit alle Bits von
Port B auf 0 gesetzt werden.

- eleganter mit "PORTB &= ~(1 << PB0);" womit nur Bit 0 gesetzt
wird.

siehe auch:
http://www.mikrocontroller.net/wiki/AVR-GCC-Tutori...
http://www.mikrocontroller.net/wiki/Bitmanipulation

Hier noch der Link zum Datenblatt des AVR-P40-USB-Boards:
http://www.olimex.com/dev/pdf/avr-p40-usb.pdf

Ich hoffe diese zwei Tips helfen anderen Anfängern die ersten Klippen
zu umschiffen. Es ist schon frustrierend, wenn die ersten Versuche zu
gar keinem Ergebnis führen und man nicht sicher ist, ob alle
Komponenten überhaupt funktionieren. Ich habe auch sonst keine weiteren
Tips zu dem Board gefunden.

Also, viel Spaß mit dem AVR. Alle denen meine Tips zu trivial waren
bitte ich schon mal vorneweg um entschuldigung :)

p.s.: als nächstes ist der Button an PB4 dran.

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.