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


von Marcus Pries (Gast)


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-Tutorial#Allgemeiner_Zugriff_auf_Register
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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.