USBasp: Von Atmega48 auf Atmega168 portieren

#2044608
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ß?
#2046081
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.
1
avrdude <programmer> -p atmega168 -U lfuse:w:0xdf:m -U hfuse:w:0xdd:m -U efuse:w:0xf9:m

.
Angehängte Dateien:
#2046742
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.
#2047214
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.
Angehängte Dateien:
#2051613
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!
Gast #2051619
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.
#2051664
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?
Persönliche Seite #2826209
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
 
1
sbrc  r0, 0
2
rjmp  .L0
 
ersetzt durch
 
1
sbrc  r0, 0
2
jmp   .L0
 
hat man bereits ein anderes Timing.
#2826212
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:
1
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!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren