2016-07-10 62 views
0

我正在編寫一個attiny85。首先,我用我的覆盆子pi做了它,並且可以製作一個程序來打開/關閉連接到attiny85的指示燈。但是網上只有一個fex教程來編程attiny與覆盆子pi,但是Arduino有很多。所以我決定使用arduino ide,然後得到.hex文件並用我的覆盆子pi將它上傳到attiny。 (我沒有arduino板)。更多arduino ide有許多庫讓你的生活變得簡單。但是,當我上傳它一切正常,但程序似乎不工作。我真的不知道是否有可能用arduino創建.hex文件並使用Raspberry Pi進行推送。 PS:對不起英語不是我的母語 在這裏,我與覆盆子所做的第一PROGRAMM和誰的作品:將ArduinoIDe中的.hex文件用樹莓派上傳到attiny85

#define F_CPU 1000000L 
#include <avr/io.h> 
#include <util/delay.h> 
int main(void) 
{ 

    PORTB = 0xFF; // LED's are off 

    for (;;) { 

    DDRB = 1<<DDB4 | 1<<DDB1 | 1<<DDB0 | 1<<DDB3; 
    //PORTB ^= 0xFF; // invert all the pins 
    _delay_ms(1000); // wait some time 
    DDRB = 0<<DDB4 | 0<<DDB1 | 0<<DDB0 | 0<<DDB3; 
    _delay_ms(1000); // wait some time 

    } 
    return 0; 
} 

然後,我用的Arduino做出的PROGRAMM(我知道這只是應開啓2個LED,但沒有上):

void setup() { 

pinMode(1, OUTPUT); 
pinMode(2, OUTPUT); 

} 


void loop() { 
    digitalWrite(1, HIGH); 
    digitalWrite(2, HIGH); 
    delay(1000);    // wait for a second 
    digitalWrite(1, LOW); 
    digitalWrite(2, LOW); // turn the LED off by making the voltage LOW 
    delay(1000);    // wait for a second 
} 

並推它,我使用該命令(對於兩種PROGRAMM,但對於第一個我第一編譯它產生the.hex):

sudo gpio -g mode 22 out 
sudo gpio -g write 22 0 
sudo /usr/local/bin/avrdude -p t85 -P /dev/spidev0.0 -c linuxspi -b 10000 -U flash:w:blinky.hex 

那很正常嗎?這是一個代碼問題,或者我不能做什麼,我嘗試? 我真的很想使用arduino IDE,因爲我希望我的attiny/rasbperry可以通過串行通訊gpio

+0

我想10000的波特率不正確。試試像9600或115200典型的波特率。 – ckruczek

+0

我嘗試的第一個代碼,它也是工作,但對於IDE Arduino代碼,我不工作:/ – Lowteast

回答

0

好吧,這是工作! :D 事實上,編譯/推blinky.c我使用的是一個makefile(我發現它在一個tuto上)。 所以現在我只取.HEX並使用「make install的」,因爲我與第一的Blinky,但沒有編制沒有,因爲我得到了.HEX而不是.C 所以這裏的makefile文件:)

MCU=attiny85 
AVRDUDEMCU=t85 
CC=/usr/bin/avr-gcc 
CFLAGS=-g -Os -Wall -mcall-prologues -mmcu=$(MCU) 
OBJ2HEX=/usr/bin/avr-objcopy 
AVRDUDE=/usr/local/bin/avrdude 
TARGET=arduiblinky 
# target = name of your file you want upload on the attiny 

all : 
# no need this part if you have the .hex :D 
    #$(CC) $(CFLAGS) $(TARGET).c -o $(TARGET) 
    #$(OBJ2HEX) -R .eeprom -O ihex $(TARGET) $(TARGET).hex 
    #rm -f $(TARGET) 

install : all 
    sudo gpio -g mode 22 out 
    sudo gpio -g write 22 0 
    sudo $(AVRDUDE) -p $(AVRDUDEMCU) -P /dev/spidev0.0 -c linuxspi -b 9600 - U flash:w:$(TARGET).hex 
    sudo gpio -g write 22 1 

noreset : all 
    sudo $(AVRDUDE) -p $(AVRDUDEMCU) -P /dev/spidev0.0 -c linuxspi -b 10000 -U flash:w:$(TARGET).hex 

fuse : 
    sudo gpio -g mode 22 out 
    sudo gpio -g write 22 0 
    sudo $(AVRDUDE) -p $(AVRDUDEMCU) -P /dev/spidev0.0 -c linuxspi -b 10000 -U lfuse:w:0x62:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m 
    sudo gpio -g write 22 1 

clean : 
    rm -f *.hex *.obj *.o 

但是否有人能解釋我爲什麼它的工作時,我使用make文件,爲什麼它時,我要做的事不工作是:

sudo gpio -g mode 22 out 
sudo gpio -g write 22 0 
sudo /usr/local/bin/avrdude -p t85 -P /dev/spidev0.0 -c linuxspi -b 10000 -U flash:w:blinky.hex 

感謝,我希望它可以幫助別人:)

+0

我覺得它!當我不使用make文件時,我忘記寫出: ----> sudo gpio -g write 22 1 – Lowteast

0

也許你應該看看使用arduino庫並將其添加到項目中。然後,當您使用avr gcc編譯器時,您添加庫。但是你的第二個代碼在attiny上不起作用似乎很奇怪。你是否檢查.hex文件是否包含十六進制代碼? :)

+0

好吧,我會嘗試添加arduino庫,但我仍然不知道如果它應該工作或沒有 – Lowteast