Welchen Programmer hast du denn? Avrdude kann praktisch alle ansprechen.
Welchen Programmer hast du denn? Avrdude kann praktisch alle ansprechen.
Nun hast Du mir aber in die Enge getriebenIch habe ne ganze Menge, weil ich (anfangs) zu dumm war(bin) den Richtigen gleich zu kaufen
Die Nummer 1 ist eigendlich das STK500 Board, dann habe ich noch den "USB ASP", den USB ISP 500 von Olimex, den USBTinyISP, einen für den Parallelport(STK200kompatible) und einen Äquivalent zum Atmel ISP Programmer...aber besten komme ich mit dem STK500 aus, den die anderen werden nicht von jeder Software (AVR-Studio, Bascom, Arduino-IDE) unterstützt.
Der "AVR-ISP" hier zu sehen hier der von Olimex
Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint
Für deinen STK500 lautet dann die Zeile:
Eventuell muss noch der /dev/ttyS0 Part angepasst werden. Jenachdem was für eine serielle Schnittstelle du hast. FTDI basierte Adapter haben oft /dev/ttyUSBS0 Das siehst du aber wenn du den Adapter einsteckts und direkt danach auf der KonsoleCode:AVRDUDE=sudo avrdude -p m168 -c stk500 -P /dev/ttyS0 -e -U flash:w:
eingibst.Code:dmesg | tail
Gruß
Georg
Edit: Soweit ich weis ist der von Olimex zum AvrispmkII kompatibel ... bin mir aber nicht sicher. Der Attiny basierte Programmer geht auch. Mit
kannst du die alle Kommandozeilen Optioen erklären lassen. Gibt auch eine Option welche alle unterstützen Programmer anzeigt.Code:man avrdude
Ja danke vielmals Georg !!!
Ich werde mal probieren. Gibt es zwingend ein VZ wo ich die Quellcode ablegen muss oder kann ich da in meinem HOME VZ einfach einen Ordner für die Quellcode anlegen ?
Na ja ich muss ja nicht gleich heute und morgen alles verstanden haben, bzw. auch vollbracht haben. Durch Fehler und probieren lernt man ja noch dabei was..
Gruss Gerhard
wenn ich den USB-ISP anstecke sagt mir dmesg | tail :
und das beim USB ASP:gerhard@ubuntu12:~$ dmesg | tail
[ 816.754627] type=1400 audit(1379425330.586:26): apparmor="DENIED" operation="capable" parent=1 profile="/usr/sbin/cupsd" pid=535 comm="cupsd" pid=535 comm="cupsd" capability=36 capname="block_suspend"
[ 3061.168030] USB 8-1: new full-speed USB device number 2 using uhci_hcd
[ 3061.347067] USB 8-1: New USB device found, idVendor=16c0, idProduct=2a9b
[ 3061.347074] USB 8-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 3061.347079] USB 8-1: Product: AVR-ISP
[ 3061.347083] USB 8-1: Manufacturer: ERFOS
[ 3061.952051] cdc_acm 8-1:1.0: This device cannot do calls on its own. It is not a modem.
[ 3061.952152] cdc_acm 8-1:1.0: ttyACM0: USB ACM device
[ 3061.955256] usbcore: registered new interface driver cdc_acm
[ 3061.955262] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
gerhard@ubuntu12:~$ dmesg | tail
[ 3061.952051] cdc_acm 8-1:1.0: This device cannot do calls on its own. It is not a modem.
[ 3061.952152] cdc_acm 8-1:1.0: ttyACM0: USB ACM device
[ 3061.955256] usbcore: registered new interface driver cdc_acm
[ 3061.955262] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
[ 3247.976078] USB 8-1: USB disconnect, device number 2
[ 3258.520033] USB 8-1: new low-speed USB device number 3 using uhci_hcd
[ 3258.691075] USB 8-1: New USB device found, idVendor=16c0, idProduct=05dc
[ 3258.691081] USB 8-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 3258.691086] USB 8-1: Product: USBasp
[ 3258.691090] USB 8-1: Manufacturer: www.fischl.de
gerhard@ubuntu12:~$
Geändert von oderlachs (17.09.2013 um 16:23 Uhr)
Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint
Hallo Gerhard,
mein es gibt kein zwingendes Verzeichnis wo du deinen Quellcode ablegen musst. Ich habe Das bei mir so organisiert
Dokumente/Entwicklung/Embedded/ProjektXYZ
Unterordner firmware (hier liegt das Makefile und die Quelldateien)
Unterordner pcb (hier liegt der Schaltplan und das Layout der Platine)
Unterordner doc (hier liegen PDFs, etc pp)
Wie du siehst sagt dir Linux hier eine ganze Menge:
Beispiel:
1. Fullspeed USB. aka USB 1.1Code:1: [ 3061.168030] USB 8-1: new full-speed USB device number 2 using uhci_hcd 2: [ 3061.347067] USB 8-1: New USB device found, idVendor=16c0, idProduct=2a9b 3: [ 3061.347074] USB 8-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0 4: [ 3061.347079] USB 8-1: Product: AVR-ISP 5: [ 3061.347083] USB 8-1: Manufacturer: ERFOS 6. [ 3061.952051] cdc_acm 8-1:1.0: This device cannot do calls on its own. It is not a modem. 7. [ 3061.952152] cdc_acm 8-1:1.0: ttyACM0: USB ACM device
2. vendor(hersteller) Id: 16c0 Product ID: 2a9b. Eindeutige Identifikation des Gerätes
3. Seriennummer etc
4. Produktname
5. Herstellername
6. Jaja, ich weis, das ist kein Modem
7. Der sog. device node. /dev/ttyACM0 WICHTIG!!!
Das zeigt die Daten des Chips welcher mit dem Rechner kommuniziert.
Für den USB ISP lautet also die avrdude Zeile
Ist das dieser hier?
http://www.reichelt.de/Programmer-En...DIAMEX+ALL+AVR
Code:AVRDUDE=sudo avrdude -p m168 -c avrispmkii -P USB -e -U flash:w:
Denke dass der Untere dieser hier ist:
http://www.fischl.de/usbasp/
Für den USB ASP lautet also die avrdude Zeile
Code:AVRDUDE=sudo avrdude -p m168 -c usbasp -e -U flash:w:
Der STK500 ist ja ein serieller Programmer. Einfach den USB Adapter einstecken und die dmesg Ausgabe betrachten. -P /dev/ttyxyz anpassen
Es gibt auch noch einen stk500/stk500v1/stk500v2. Einfach probieren. Wenn du
einfach in der Konsole eingibst, kannst du sehen was avrdude so erkennt. mit -vv siehst du noch mehr. -vvv geht auchCode:sudo avrdude -p m168 -c stk500 -P /dev/ttyACM0 -v
[Auschweifmodus]
Bei den USB Ids ist das 16c0 oft verwendet, das sind IDs von VOTI, welche oft frei verwendet werden können. Leider nicht so eindeutig, aber absolut die Ausnahme! Hier wird oft die vusb [1] Bibliothek eingesetzt wie bei dem usbasp. Diese IDs kann man in der vusb Bibliothek aber konfigurieren. Normalerweise, bezahlen Firmen für so einen Block Ids einiges an Geld. Deshalb wird bei Eigenbauprojekten oft das 16c0 verwendet
[/Auschweifmodus]
Gruß
Georg
[1] http://www.obdev.at/products/vusb/
Mein erster Test endete gleich mit nem Fehler, wär auch zu schön wenns gleich geht...
ich habe nur eine C Datei im VZ die Led.cgerhard@ubuntu12:~/avr_code$ make Led
cc Led.c -o Led
Led.c:8:20: schwerwiegender Fehler: avr/io.h: Datei oder Verzeichnis nicht gefunden
Kompilierung beendet.
make: *** [Led] Fehler 1
und die "umgestrickte make.txt":/* Sample program for Olimex AVR-P40-USB with ATMega16 processor
* Blink Led
* Compile with AVRStudio+WinAVR (gcc version 3.4.6) */
// Verwendete CPU = ATmega_1284p
#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <stdlib.h>
void PORT_Init()
{
PORTB = 0b00000000;
DDRB = 0b00000001; //set Led as output
}
int main()
{
PORT_Init();
while (1)
{
PORTB = PORTB | 0b00000001;
_delay_ms(500);
PORTB = PORTB & 0b11111110;
_delay_ms(500);
}
}
CC=avr-gcc
RM=rm -f
OBJCOPY=avr-objcopy
AVRDUDE=sudo avrdude -p m1284 -c avrisp -P USB -e -U flash:w:
AVRSIZE=avr-size
MCU=atmega168p
F_CPU=16000000
CFLAGS=-g -DF_CPU=$(F_CPU) -Wall -Os -mcall-prologues
OBJ = Led.o
BIN = Led.bin
HEX = Led.hex
MAP = Led.map
.phony: all
all:
$(OBJ)
$(RM) $(HEX) $(BIN) $(MAP)
$(CC) -mmcu=$(MCU) $(CFLAGS) -o $(BIN) -Wl,-Map,$(MAP) $(OBJ)
$(OBJCOPY) -R .eeprom -O ihex $(BIN) $(HEX)
%.o: %.c
$(CC) -mmcu=$(MCU) $(CFLAGS) -c $<
clean:
$(RM) $(OBJ) $(BIN) $(HEX) $(MAP)
flash: $(OBJ)
$(AVRDUDE)$(HEX)
size:
$(BIN)
$(AVRSIZE) -C --mcu=$(MCU) $(BIN)
Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint
Also mit meinem AVRISP habe ich Probleme beim Flaschen....es fehlt ein Returnwert vom AVRISP, mit dem USBASP läuft alles ohne Fehleranzeige, nur wird das Programm im Chip nicht geändert...???
Was das nun sein soll ist mir ein neues Rätsel...
Ich arbeite weiter an der Fehlersuche, zum anderen stelle ich mir die Frage wie ich unterlinux die Fuse auslesen/programmieren kann, dafür wird es doch wohl auch ein Prog geben..wenn man schon für Linux "Teewecker" programmiert..![]()
Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint
Heute abend hab ich wieder Linux unter der Tastatur, da kann ich dir dann nochmal helfen![]()
Lesezeichen