mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik USBasp: Von Atmega48 auf Atmega168 portieren


Autor: Rene K. (draconix)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hiho,

ich habe hier noch einige Atmega168 rumliegen. Würde mir gerne mal einen 
USBasp Adapter bauen, leider jedoch... fehlen mir entweder der Atmega48 
oder der Atmega8 (hier habe ich zwar noch 10 Stück da, jedoch die 
Atmega8-8PU also gehen die 12Mhz nicht).

Da sich der Atmega48 und der Atmega168 nur in der Speichergröße 
unterscheiden, müsste man doch eigentlich das Programm portieren können 
oder?

Die aktuelle Firmware:

http://www.fischl.de/usbasp/

Dort ist jedoch nur der Source für den Atmega8 enthalten. Kann ich die 
einfach für den Atmega168 (natürlich auf Atmega168 umstellen) nehmen? 
Oder unterscheiden sich die Register in den beiden µCs - sodas das ich 
Timer etc. via Hand umstellen muß?

Autor: Rene K. (draconix)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Noch besser, wie ich gerade sehe... Den USB-AVR-ISP von Ullihome.de - 
Wäre natürlich um welten besser.

Autor: Rene K. (draconix)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Niemand einen Tipp parat?

Autor: Thomas Eckmann (Firma: Thomas Eckmann Informationst.) (thomase)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rene K. schrieb:
> Oder unterscheiden sich die Register in den beiden µCs - sodas das ich
>
> Timer etc. via Hand umstellen muß?

Die unterscheiden sich teilweise im Namen der Register UART >> UART0
aber auch, da die neuen mehr Funktionen haben, in der Anzahl der 
Register für einzelne Peripherien.

mfg.

Autor: Phil J. (sunflower_seed)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,

mein USBasp Programmer läuft auch mit nem mega168.
Hab leider die Sourcen schon wieder wegemüllt.
Aber ein Grund mehr das ich im Kopf hab, das es ziemlich einfach war.
ich glaub du musst nur den Timer anpassen.

Autor: Uwe S. (de0508)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe Dir das Programm für den atMega168 mit der aktuellen VUSB Lib 
vom 20100715 übersetzt.

Link: http://www.obdev.at/products/vusb/download.html

Bitte gib uns eine Rückmeldung wenn den usbasp läuft !

Hier noch die Fuse Bits für Brown-Out = 2,7V, somit kann man auch den 
atMega mit 3,6V betreiben.
avrdude <programmer> -p atmega168 -U lfuse:w:0xdf:m -U hfuse:w:0xdd:m -U efuse:w:0xf9:m

.

Autor: Charly B. (charly)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rene K. schrieb:
> Hiho,
>
> oder der Atmega8 (hier habe ich zwar noch 10 Stück da, jedoch die
> Atmega8-8PU also gehen die 12Mhz nicht).

i wette a Kasten Bier das die auch mit 12 Mhz laufen

vlG
Charly

Autor: Rene K. (draconix)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Uwe S. schrieb:
> Hallo,
>
> ich habe Dir das Programm für den atMega168 mit der aktuellen VUSB Lib
> vom 20100715 übersetzt.
>
> Link: http://www.obdev.at/products/vusb/download.html
>
> Bitte gib uns eine Rückmeldung wenn den usbasp läuft !
>
> Hier noch die Fuse Bits für Brown-Out = 2,7V, somit kann man auch den
> atMega mit 3,6V betreiben.
> avrdude <programmer> -p atmega168 -U lfuse:w:0xdf:m -U hfuse:w:0xdd:m -U 
efuse:w:0xf9:m
> .

Vielen lieben Dank! Komme erst heute Abend dazu dies zu testen - werde 
aber auf jeden Fall rückmeldung geben!

Charly B. schrieb:
> i wette a Kasten Bier das die auch mit 12 Mhz laufen
>
> vlG
> Charly


Ok, die Wette steht :D werde ich dann heute Abend auch mal probieren.

Autor: Rene K. (draconix)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Rene K. schrieb:
> Ok, die Wette steht :D werde ich dann heute Abend auch mal probieren.

Hast deine Wette gewonnen ;)

Aber nicht alle gingen. Einer von fünf hat sich geweigert laufen zu 
wollen :D

Uwe S. schrieb:
> Bitte gib uns eine Rückmeldung wenn den usbasp läuft !

Werde ich noch tun, komme aber heute leider nicht mehr dazu das zum 
zusammenlöten. Mache ich morgen denne.

Übrigens... Neben dem USB-ISP liegt ein TinyISP.

Autor: Rene K. (draconix)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Uwe S. schrieb:
> Hallo,
>
> ich habe Dir das Programm für den atMega168 mit der aktuellen VUSB Lib
> vom 20100715 übersetzt.
>
> Link: http://www.obdev.at/products/vusb/download.html
>
> Bitte gib uns eine Rückmeldung wenn den usbasp läuft !
>
> Hier noch die Fuse Bits für Brown-Out = 2,7V, somit kann man auch den
> atMega mit 3,6V betreiben.
> avrdude <programmer> -p atmega168 -U lfuse:w:0xdf:m -U hfuse:w:0xdd:m -U 
efuse:w:0xf9:m
> .

Dein Hex arbeitet tadellos... Danke dir!

Autor: 777777 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Each Interrupt Vector occupies two instruction words in ATmega168, and 
one instruction word in ATmega48 and ATmega88.

ATmega48 does not have a separate Boot Loader Section. In ATmega88 and 
ATmega168, the Reset Vector is affected by the BOOTRST fuse, and the 
Interrupt Vector start address is affected by the IVSEL bit in MCUCR.

ATmega168 has insruction JMP and CALL 88 and 48 have not.

Sorry if I understand your question wrong.

Autor: Rene K. (draconix)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
777777 schrieb:
> Sorry if I understand your question wrong.

No, you dont misunderstood my question. ;)

777777 schrieb:
> Each Interrupt Vector occupies two instruction words in ATmega168, and
> one instruction word in ATmega48 and ATmega88.

Oh... thats sounds intressting! I doesnt know that. Where i can find 
that info in the datasheet to verify it?

Autor: Uwe S. (de0508)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Rene,

die Info ist im Datenblatt zum "ATmega48, ATmega88, and ATmega168"

unter "2.2 Comparison Between ATmega48, ATmega88, and ATmega168" auf 
Seite 6f

zu finden.

Aber stört uns das ? Nein, den der C Compiler regelt das für uns.

- http://www.atmel.com/dyn/resources/prod_documents/...


.

Autor: Michael Niewöhner (c0d3z3r0)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat schon jemand den usbasp mit einem atmega168PA zum laufen gekriegt?
Meiner mag nicht :( Ich hab statt den Zener-Dioden einfach VCC auf 3,0V 
mit nem Low-Drop geregelt. Wird aber leider nicht erkannt.

Autor: Charly B. (charly)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rene K. schrieb:
> Rene K. schrieb:
>> Ok, die Wette steht :D werde ich dann heute Abend auch mal probieren.
>
> Hast deine Wette gewonnen ;)

@Rene K.
und du alter Schuldenbuckel.... mei Kasten Bier hab i bis
heute noch nicht, soviel zum Thema Wettschulden & Ehrenschulden :P

Autor: Johann L. (gjlayde) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
777777 schrieb:
> Each Interrupt Vector occupies two instruction words in ATmega168, and
> one instruction word in ATmega48 and ATmega88.
>
> ATmega48 does not have a separate Boot Loader Section. In ATmega88 and
> ATmega168, the Reset Vector is affected by the BOOTRST fuse, and the
> Interrupt Vector start address is affected by the IVSEL bit in MCUCR.
>
> ATmega168 has insruction JMP and CALL 88 and 48 have not.


Uwe S. schrieb:

> Aber stört uns das? Nein, den der C Compiler regelt das für uns.

Vorsicht, so einfach ist's auch wieder nicht weil das USB-Device 
komplett in Software steht, und zwar großteils in Assembler mit von Hand 
ausgelesenen und auf Tick exakt abgezälten Instruktionen.

Ich hab daher aufgegben den Code anzupassen; allerdings wollte ich an 
einen anderen Quarz anpassen, nicht an einen anderen µC.

Die meisten Instruktionen haven zwar das gleiche Timing aber wenn man 
ein
 
sbrc  r0, 0
rjmp  .L0
 
ersetzt durch
 
sbrc  r0, 0
jmp   .L0
 
hat man bereits ein anderes Timing.

Autor: Michael Niewöhner (c0d3z3r0)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Johann L. schrieb:
> Ich hab daher aufgegben den Code anzupassen; allerdings wollte ich an
> einen anderen Quarz anpassen, nicht an einen anderen µC.

Quarze werden doch einige unterstützt. 12 MHz, 12.8 MHz, 15 MHz,
16 MHz, 16.5 MHz 18 MHz and 20 MHz.

Hat jemand ne Idee zu meinem Problem?  Weder der Code oben, noch der 
originale von fischl.de funktioniert. Wird als USBasp erkannt, vid und 
pid sind richtig, aber avrdude meckert:
avrdude: error: could not find USB device "USBasp" with vid=0x16c0 pid=0x5dc

µC ist der Atmega168PA.


Der usbasp, den ich auf e....de gekauft hab funktioniert einwandfrei 
(atmega88).

Danke!

Autor: Michael Niewöhner (c0d3z3r0)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Okay, Problem gelöst.

Der Fehler war: eigene Blödheit. Ich hab vergessen, die 
Selfprogram-Brücke (bei der gesteckten version nur ein Draht^^) 
rauszunehmen. Dass avrdude den usbasp nicht erkennt, wenn er sich selbst 
resettet ist ja logisch :S

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.