Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Flash bootloader with avrdude/avrdudess and usbtinyisp #19

Closed
BenRoe opened this issue May 23, 2019 · 8 comments
Closed

Flash bootloader with avrdude/avrdudess and usbtinyisp #19

BenRoe opened this issue May 23, 2019 · 8 comments

Comments

@BenRoe
Copy link

BenRoe commented May 23, 2019

Hi,
i try to flash the bootloader on the Atmega328P chip.

The chip is on the plaid pcb and the UsbTinyIsp is connected via the isp pins.
Are the settings correct in the screenshot below? Don't wanna brick the chip.

avrdudess-USBaspLoader-plaid

@BenRoe
Copy link
Author

BenRoe commented May 23, 2019

The main.hex file is from https://github.com/hsgw/USBaspLoader/tree/plaid @hsgw

@baerwolf
Copy link
Owner

Hi Ben
I will test your main.hex (and fuses) by flashing them to an empty AVR this weekend.
I will give you feedback asap.
(Are you using the default layout with 16MHz clock?)

Btw. you also should program the efuses as indicated in the precompiled versions:
http://matrixstorm.com/avr/tinyusbboard/bootloader/default328_enus_lfxf7_hfxd0_efx04_v0x97x1.hex

So Lfuse=0xf7, Hfuse=0xd0 and Efuse=0x04 (with the default layout).

BR

@baerwolf
Copy link
Owner

Hallo nochmal

Wenn Leipzig als angegebener Standort stimmt - dann schicke/schenke ich gern ein bestücktes tinyUSBboard mit ATmega328p - 20MHz oder 16MHz - je nach Wunsch.
(Insofern ich die Zieladresse bekommen kann ...)

MfG

@BenRoe
Copy link
Author

BenRoe commented May 24, 2019

Hallo baerwolf,
vielen lieben Dank für das Angebot.
Ich möchte den Atmega328p auf dem Plaid Keyboard Pcb nutzen. https://github.com/hsgw/plaid

Das pcb verwendet einen 16Mhz Kristall.
Im der schematic.txt werden folgende fuse werte empfohlen.
https://github.com/hsgw/USBaspLoader/blob/plaid/Schematics.txt

LFUSE: 0x1f
HFUSE: 0xc0
LOCK : 0x3f (unchanged - the bootsection is protected via loader software)

@baerwolf
Copy link
Owner

Hallo

Sehr nettes Projekt - muss ich mir später unbedingt genauer ansehen...
(Hatte auch immer Keyboardprojekt vor - weshalb ich vor Jahren schon die dual Maus/Keyboard V-USB HID BOOT Bibliothek entworfen hatte (https://github.com/tinyusbboard/hid-KeyboardMouse) ).

Bei Bedarf (wenn eine V-USB Firmware noch benötigt, die auch im BIOS von Rechnern funktioniert - einfach mal Bescheid geben ;-)

Zu den Fuses: Die Beispiele beziehen sich immer auf ATmega8 - nicht den hier verwendeten ATmega328p.
Wenn 16MHz und die Standadbeschaltung (PD2 und PD7 fuer USB, PD6 fuer SELECT) zur Verwendung kommen, dann:

LFUSE: 0xF7
HFUSE: 0xD0
EFUSE:0x04
LOCK : 0x3f (unchanged - the bootsection is protected via loader software)

Hier kann auch die Firmware für ATmega328P von http://matrixstorm.com/avr/tinyusbboard/other_controllers.html verwendet werden. (Um Fehler beim compilieren zu vermeiden.)

http://matrixstorm.com/avr/tinyusbboard/bootloader/default328p_enus_lfxf7_hfxd0_efx04_v0x97x1.hex

MfG

@BenRoe
Copy link
Author

BenRoe commented May 24, 2019

Hi,
vielen Dank für die schnelle und freundliche Hilfe.
Der Ersteller von dem Plaid Pcb hat mir den Hinweis auf die Einstellungen geben.
https://github.com/hsgw/USBaspLoader/blob/c068d14f0db8ff8a6e13c2b30bae6fcea66f21ed/Makefile.inc#L154

Ich kenn mich nur mit dem ATmega32U4 und war von den Fuse Einstellungen überfordert.
Dachte ich muss die Werte am Ende der Schematics.txt verwenden.

Ich werde nachher die Einstellungen von dir testen.

Einen Chip habe ich glaub schon zerschossen. Wenn ich den auf dem Pcb hab und diese per USB anschließe connected der nach 3 Sekunden immer wieder neu und Windows zeigt neues Gerät erkannt.
Ist der Chip hin, oder kann ich ihn wieder neu Flashen.

@BenRoe
Copy link
Author

BenRoe commented May 24, 2019

Ich bekomme einen Fehler mit der efuse, aber die Tastatur funktioniert. 🎉
Sollte ich den Fehler beheben?

avrdude.exe: verifying ...
avrdude.exe: 1 bytes of hfuse verified
avrdude.exe: reading input file "0x04"
avrdude.exe: writing efuse (1 bytes):

Writing |  ***failed;  
################################################## | 100% 0.04s

avrdude.exe: 1 bytes of efuse written
avrdude.exe: verifying efuse memory against 0x04:
avrdude.exe: load data efuse data from input file 0x04:
avrdude.exe: input file 0x04 contains 1 bytes
avrdude.exe: reading on-chip efuse data:

Reading | ################################################## | 100% 0.00s

avrdude.exe: verifying ...
avrdude.exe: verification error, first mismatch at byte 0x0000
             0xfc != 0x04
avrdude.exe: verification error; content mismatch

@baerwolf ich habe einen Shop wo ich die Plaid Pcb's und andere Mechanical Keyboad Teile verkaufe.
keycapsss.com

Wenn du was findest schreib mich an und ich würd dir Rabatt geben als Dankeschön für den Bootloader und die Hilfe.

Falls du Lust und Zeit hast können wir auch gern ein eigenes Pcb erstellen.

@baerwolf
Copy link
Owner

baerwolf commented May 24, 2019

Hallo (und guten Abend ;-)

Einen Chip habe ich glaub schon zerschossen. Wenn ich den auf dem Pcb hab und diese per USB anschließe connected der nach 3 Sekunden immer wieder neu und Windows zeigt neues Gerät erkannt.
Ist der Chip hin, oder kann ich ihn wieder neu Flashen.

Man kann den Chip sehr sicher retten. Der einfachste Versuch wäre ihn per ISP neu zu flashen. Falls das nicht gehen sollte, ist sehr wahrscheinlich nur die Taktquelle falsch gefused: Einfach einen externen Taktgeber nutzen. Falls das auch nicht gehen sollte, ist es Glück das der IC ein DIP Modell ist: Stickwort "AVR Fusebit Doctor"...

Ich bekomme einen Fehler mit der efuse, aber die Tastatur funktioniert.

Ja, das ist (IMHO) ein undokumentierter ERRATA der ATmega88P(A) Familie (ATmega48p, ATmega88p, ATmega168p und ATmega328p).
Je Revision verhalten sich die "reservierten"/ungenutzten Bits der eFUSE anders. Bei einigen Revisionen sind die nach Einstellung der eFUSE "0" - bei anderen "1". In diesem Fall wohl eher letzteres... ...dadurch stellt avrdude beim "verify" Rücklesen einen Unterschied fest - betrifft aber nur die ungenutzten Bits der FUSE, weshalb auch alles funktioniert.

@baerwolf ich habe einen Shop wo ich die Plaid Pcb's und andere Mechanical Keyboad Teile verkaufe.
keycapsss.com

Den Shop werde ich mal am WE besuchen kommen. Ist gerade günstig weil mein Urlaub startet und ich ein wenig Zeit habe...

Eigene PCB - gerne (zumal Elecrow gerade sehr günstige Preisaktion hat) - ich hatte schon sehr lange vor z.B. für die Tastenmatrix der FDC-3402 einen USB-Controller zu bauen. (8 Zeilen, 15 Spalten - Die 8 Zeilen plante ich direkt über einen Port zu lesen und die Spalten jeweils per Schieberegister pollend zu "aktivieren"...)
Bin für Vorschläge offen...
(Auf Arbeit gab es mal Wünsche/Gespräche für eine Art RFID modulbasierte "Tastatur", welche das "Bildschirm sperren" (Winkey + L / strg-alt-entf unter Linux) sendet wenn man sich vom Rechner entfernt...)

MfG und GN8

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants