USBASP USB AVR Programmer

Da mein neues T400s keinen Parallel-Port mehr besitzt (auch nicht über die Docking-Station), musste ich mich nach einem neuen AVR-Programmer umsehen.

Entschieden habe ich mich für einen USBASP von Thomas Fischl.

Die Schaltung basiert auf einem Atmega8 und ein paar weiteren passiven Komponenten.

Der Vorteil dieser Schaltung:
Für die USB-Anbindung wird kein spezieller USB-Controller benötigt, dies wird alles über die Firmware auf dem Atmega8 geregelt.

Aufgebaut habe ich die Schaltung auf einer Lochraster-Platine. Klar hätte ich mir auch einen fertigen Bausatz bestellen können, aber wo bleibt da der Bastelspaß wenn nur noch die Widerstände eingelötet werden müssen? ;)

Außerdem wollte ich noch die Belegung des ISP-Steckers anpassen, damit diese mit meinem LPT zu ISP Programmieradapter kompatibel ist und auch für bestehende Schaltungen ohne zusätzlichen Adapter genutzt werden kann.

USBASP AVR Programmer

USBASP AVR Programmer

Nachdem der USBASP fertig aufgebaut war, spielte ich die Firmware über meinen LPT-Programmieradapter (an meinem Entwicklungsrechner, welcher dank dem USBASP jedoch bald überflüssig sein wird) ein und setzte die Fuses für den externen 12 Mhz Quarz.

Daraufhin wurde er dann am T400s unter Ubuntu 9.04 64Bit auf Anhieb erkannt!

lsusb
Bus 006 Device 006: ID 16c0:05dc VOTI

Um den USBASP mit Linux benutzen zu können, werden noch folgenden Pakete benötigt:

  • gcc-avr
  • avrdude
  • binutils-avr
  • avr-libc

Der Programmer kann dann direkt mit Avrdude verwendet werden:

avrdude -c usbasp

Uhr mit 7-Segment Anzeigen und Attiny2313 – Teil 2

Hier ein Bild der fertig aufgebauten Uhr, bin lediglich am überlegen ob ich noch 2 Taster zum Einstellen der Minuten und Stunden hinzufügen soll, es wären ja noch genau 2 Ports am 2313 frei ;-)

Aktuell steckt man Sie einfach zur einprogrammierten Uhrzeit ein, oder programmiert die Uhrzeit über den ISP-Port.

Uhr mit 7 Segment Anzeigen und Attiny2313 gelötet

Uhr mit 7-Segment Anzeigen und Attiny2313

So hier hätten wir es – das erste „richtige“ Projekt in Sachen Microcontroller in diesem Blog. Eine Uhr, basierend auf einem Attiny2313 sowie sechs 7-Segement Anzeigen und 2 Tastern zum einstellen der Minuten und Stunden.

Uhr mit 7 Segment Anzeigen und Attiny2313

Auf dieser Version auf dem Breadboard wurde noch der interne Oszillator des Attiny2313 verwendet (8Mhz), dies wird sich jedoch in der finalen Version ändern, da dieser ziemlich ungenau ist. In der gelöteten Version wird dann ein externer Quarz mit 14,7456 Mhz seinen Dienst verrichten.

Der Attiny2313 ist wie geschaffen für dieses Projekt, die Ports reichen haargenau aus. :-)
Erhältlich ist dieser beispielsweise im Online-Shop element14.

An PB0-PB7 die einzelnen Segmente (a,b,c,d,e,f,g,h sowie dp), Port PD0-PD5 zur Ansteuerung der 6 Anzeigen sowie PA2 und PD6 für die Taster zum einstellen der Minuten und Stunden. An PA0 und PA1 wird in der finalen Version der Quarz seinen Platz einnehmen.

Programmiert wird der AVR mit dem bereits beschriebenen ISP-Programmieradapter und dem Programm Ponyprog.

Auf dem Breadboard wird der Attiny über den Spannungswandler 7805 mit einer 5V Spannung versorgt. In der endgültigen Uhr wird dieser dann durch 3x 1,5V Batterien ersetzt.