Anonymní profil Kevin – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Kevin – Programujte.comAnonymní profil Kevin – Programujte.com

 

Příspěvky odeslané z IP adresy 213.226.252.–

Kevin
Mikrokontroléry › ATTiny85 a Arduino Uno jako…
2. 11. 2017   #218304

Našel jsem řešení, je potřeba specifikovat baudrate parametrem -b. Teď jsem bez problémů shopný nahrát program do kontroléru.

 -b baudrate

    Override the RS-232 connection baud rate specified in the respective programmer’s entry of the configuration file.

Zdroj: http://www.nongnu.org/avrdude/user-manual/avrdude_4.html#Option-Descriptions

Parametry mám: avrdude -c arduino -p t85 -P COM1 -b 19200 -U flash:w:$(ProjectDir)Debug\$(TargetName).hex:i -U lfuse:w:0x62:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m

Pokud to chápu dobře, tak má AVRDude někde předdefinovaný baudrate pro každý programátor. Moje Arduino Uno nebylo schopno s tímto předdefinovaným baudratem pracovat (asi byl moc vysoký), takže ho bylo potřeba specifikovat ručně. Hodnotu baudratu jsem vybral stejnou jako je hodnota u použitého COM portu, kde je připojeno moje Arduino Uno.

Pokud je moje úvaha špatná, tak mě prosím opravte, ať tady nejsou matoucí informace.

Díky

Kevin
Mikrokontroléry › ATTiny85 a Arduino Uno jako…
1. 11. 2017   #218303
Kevin
Mikrokontroléry › ATTiny85 a Arduino Uno jako…
31. 10. 2017   #218275

Ahoj,

potřeboval bych radu ohledně programování mikrokontroléru ATTiny85-20PU (https://www.tme.eu/cz/details/attiny85-20pu/8-bit-avr-family/microchip-atmel/) s pomocí Arduina Uno jako USBasp programátoru.

Popis situace:

Používám vývojové prostředí Atmel studio 7. Ve studiu přidaná poslední verze AVRDude jako externí tool. V Arduinu je nahraný příklad "ArduinoISP". Desku Arduina mám standardně (MISO,MOSI, SCK, RST, Vcc, GND) propojenou s ATTiny85-20PU (nový, nepoužitý kontrolér). 

Připojen obrázekobrázek zapůjčen z:
https://create.arduino.cc/projecthub/arjun/programming-attiny85-with-arduino-uno-afb829

V Atmel studiu jsem si založil nový projekt a vytvořil jednoduchý program (níže), kde se po sekundě střídá na portu PB3 logická 1 a 0. Hodiny mám nastavené na 1MHz. Kompilace proběhla úspěšně.

#ifndef F_CPU
#define F_CPU 1000000UL // 1 MHz clock speed
#endif

#include <avr/io.h>
#include <util/delay.h>

int main(void)
{
   DDRB = 0b00001000; // SET PB3 as output	
    while (1) 
    {
	PORTB = 0b00001000; // Log 1 on PB3
	_delay_ms(1000); // 1000 milisecond delay
	PORTB = 0b00000000; // Log 1 on PB3
	_delay_ms(1000); // 1000 milisecond delay
    }
}

AVRDude spouštím s následujícími parametry: avrdude -c arduino -p t85 -P COM1 -U flash:w:$(ProjectDir)Debug\$(TargetName).hex:i -U lfuse:w:0x62:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m

Fuse bity mám nastavené podle http://www.engbedded.com/fusecalc/ . Je nastaveno, že se bude využívat vnitřní 8MHz oscilátor a použije se vnitřní dělička osmi. Výsledek 1MHz.

Teď k problému, když spustím AVRDude s parametry uvedenými výše, tak mi vypíše následující:

avrdude.exe: AVR device initialized and ready to accept instructions

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

avrdude.exe: Device signature = 0x1e950f (probably m328p)
avrdude.exe: Expected signature for ATtiny85 is 1E 93 0B
             Double check chip, or use -F to override this check.

avrdude.exe done.  Thank you.

Z toho jsem trochu zmatený, protože pokud to chápu dobře, tak na Arduino desce je nějaký USB převodník propojený (Rx a Tx) s ATMegou na Arduinu a dále je ATMega na Arduinu propojená pomocí SPI s mojí ATTiny85. To znamená, že AVRDude by měl vidět pouze mojí ATTiny85. Je to tak? Nebo to celé špatně chápu? Nevim proč to vidí signature pro m328p.

V případě, že přidám parametr -F, výsledek je následovný: 

avrdude.exe: AVR device initialized and ready to accept instructions

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

avrdude.exe: Device signature = 0x1e950f (probably m328p)
avrdude.exe: Expected signature for ATtiny85 is 1E 93 0B
avrdude.exe: NOTE: "flash" memory has been specified, an erase cycle will be performed
             To disable this feature, specify the -D option.
avrdude.exe: erasing chip
avrdude.exe: reading input file "S:\test atiny85_20pu\Debug\test atiny85_20pu.hex"
avrdude.exe: writing flash (98 bytes):

Writing | ################################################## | 100% 0.03s

avrdude.exe: 98 bytes of flash written
avrdude.exe: verifying flash memory against S:\test atiny85_20pu\Debug\test atiny85_20pu.hex:
avrdude.exe: load data flash data from input file S:\test atiny85_20pu\Debug\test atiny85_20pu.hex:
avrdude.exe: input file S:\test atiny85_20pu\Debug\test atiny85_20pu.hex contains 98 bytes
avrdude.exe: reading on-chip flash data:

Reading | ################################################## | 100% 0.02s

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

avrdude.exe: safemode: Fuses OK (E:00, H:00, L:00)

avrdude.exe done.  Thank you.

Výše vidíme, že při kontrole zapsaných dat nastane chyba. Otázka je proč? Moje ATTiny85-20PU je potom stále mrtvá a na portu PB3 se nic neděje. Něco je špatně, ale nemůžu přijít na to co. Prosím, pokud uvidíte v tom co jsem Vám výše popsal nějakou chybu apod., tak reagujte. Budu rád za každou věcnou reakci.

Děkuji Kevin.

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý