STK500 avr programozás
STK500 avr programozás
Üdv!
Atmega 328-as chippet szeretnék felprogramozni egy stk 500as programozóval. Arduino programmal lefordítom a sketchet majd a hex file-t avr-studioban töltöm fel. Odáig sikerült eljutni hogy ki tudom olvasni az ID-t illetve rá tudom tölteni a hex file-t.
A rátöltött hex file valóban benne van a flashben, mert egyezik a hex tartalma a kiolvasottéval. Viszont olyan problémám van hogy akármit töltök rá (legegyszerűbb pl pin 9 kimenet magas legyen) semmi nem történik. Tudnátok segíteni mi lehet az oka? Esetleg valamilyen beállítást mulasztottam el avr studióban? Fuses, Lock bitsben nem állítottam át semmit az Isp freqvencia pedig 460 khz. (a nyákon 16Mhzes az osci). Ha esetleg valakinek lenne ötlete kérem segítsen.
üdv
Dávid
Atmega 328-as chippet szeretnék felprogramozni egy stk 500as programozóval. Arduino programmal lefordítom a sketchet majd a hex file-t avr-studioban töltöm fel. Odáig sikerült eljutni hogy ki tudom olvasni az ID-t illetve rá tudom tölteni a hex file-t.
A rátöltött hex file valóban benne van a flashben, mert egyezik a hex tartalma a kiolvasottéval. Viszont olyan problémám van hogy akármit töltök rá (legegyszerűbb pl pin 9 kimenet magas legyen) semmi nem történik. Tudnátok segíteni mi lehet az oka? Esetleg valamilyen beállítást mulasztottam el avr studióban? Fuses, Lock bitsben nem állítottam át semmit az Isp freqvencia pedig 460 khz. (a nyákon 16Mhzes az osci). Ha esetleg valakinek lenne ötlete kérem segítsen.
üdv
Dávid
Re: STK500 avr programozás
60 napos tanfolyam?
Chip programozása fejezet?
- A prog seb a chip órajelének MAX 1/4-e lehet! Azaz alapesetben 1 MHzról jár a chip. Így max 250 kHz (de inkább 57kHz javasolt).
- Biztosítékbitekre mit állítottál be? Ha semmit: belső 1 MHzről jára chip (1/16-od a sebessége)
Miért nem a Arduinoval töltöd fel?
Tools-> Programmer -> STK500*
Tools -> Communication -> Ahol a STK500 van
File -> Upload via programmer
* programmer.txt állományba vedd fel.
Chip programozása fejezet?
- A prog seb a chip órajelének MAX 1/4-e lehet! Azaz alapesetben 1 MHzról jár a chip. Így max 250 kHz (de inkább 57kHz javasolt).
- Biztosítékbitekre mit állítottál be? Ha semmit: belső 1 MHzről jára chip (1/16-od a sebessége)
Miért nem a Arduinoval töltöd fel?
Tools-> Programmer -> STK500*
Tools -> Communication -> Ahol a STK500 van
File -> Upload via programmer
* programmer.txt állományba vedd fel.
Re: STK500 avr programozás
Igen nem állítottam be semmilyen biztosítékbitet. Délután megprobalom mind a két féle képpen.
Viszont akkor normális hogy rá tudtam tölteni a chipre a progit?
Viszont akkor normális hogy rá tudtam tölteni a chipre a progit?
Re: STK500 avr programozás
Normális. Belső 1 MHzről jár a chip jelenleg.
Re: STK500 avr programozás
Kisebb kalandozásom volt a fuse bitekkel mert sikeresen kizártam magam a chipből. Viszont most hogy sikerült visszajutni átállítottam a 57Khz-re a programozási sebességet viszont jelenleg sem teszi a dolgát a chip. Fuse biteknél kellene állítgatni? vagy hol van a kutya elásva?
Re: STK500 avr programozás
Kicsit közelebb jutottam a megoldáshoz. Nem a beállításoknál van baj (szerintem).
Rátöltöttem egy led villogtató programot 2 verzióban ami a PB5(SCK) lábon lévő ledet villogtatja. Mind a 2-t arduino program fordította. A különbség annyi hogy az A verzióval működik míg a B-vel nem.
A:
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
DDRB |= (1<<DDB5); //Set the 6th bit on PORTB (i.e. PB5) to 1 => output
while(1)
{
PORTB |= (1<<PORTB5); //Turn 6th bit on PORTB (i.e. PB5) to 1 => on
_delay_ms(100); //Delay for 1000ms => 1 sec
PORTB &= ~(1<<PORTB5); //Turn 6th bit on PORTB (i.e. PB5) to 0 => off
_delay_ms(100); //Delay for 1000ms => 1 sec
}
}
B:
int led = 17;
void setup() {
pinMode(led, OUTPUT);
}
void loop() {
digitalWrite(led, HIGH);
delay(500);
digitalWrite(led, LOW);
delay(500);
}
Biztos valami egyszerű oka van csak még nem jöttem rá
Rátöltöttem egy led villogtató programot 2 verzióban ami a PB5(SCK) lábon lévő ledet villogtatja. Mind a 2-t arduino program fordította. A különbség annyi hogy az A verzióval működik míg a B-vel nem.
A:
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
DDRB |= (1<<DDB5); //Set the 6th bit on PORTB (i.e. PB5) to 1 => output
while(1)
{
PORTB |= (1<<PORTB5); //Turn 6th bit on PORTB (i.e. PB5) to 1 => on
_delay_ms(100); //Delay for 1000ms => 1 sec
PORTB &= ~(1<<PORTB5); //Turn 6th bit on PORTB (i.e. PB5) to 0 => off
_delay_ms(100); //Delay for 1000ms => 1 sec
}
}
B:
int led = 17;
void setup() {
pinMode(led, OUTPUT);
}
void loop() {
digitalWrite(led, HIGH);
delay(500);
digitalWrite(led, LOW);
delay(500);
}
Biztos valami egyszerű oka van csak még nem jöttem rá
Re: STK500 avr programozás
Fuse biteket ellenőrizd.
A LED villogtató a delay miatt jó mérvadó.
int led = 17;
Mióta SCK?
Azt nem a 11 v. 12?
A LED villogtató a delay miatt jó mérvadó.
int led = 17;
Mióta SCK?
Azt nem a 11 v. 12?
Re: STK500 avr programozás
Igen, nem 17 hanem 13 és így működik is! 
Re: STK500 avr programozás
Olyan kérdés merült fel még bennem, szeretném a reset lábat àtprogramozni io-ra. A program megvan működik rá van töltve a chipre. Àtàllitom a fuse bitet. Későbbiek során milyen esetekben lenne szükségem resetelni? Ha jól tudom programozáshoz kell főként.
Üdv Daba
Üdv Daba
Re: STK500 avr programozás
- Bekapcsolási késleltetés (külső RC tag ami rajta van) - a bekapcsolási tranziensek megzavarhatják a programodat,
- ISP programozás,
- chip egyszerű újraindítása,
- Tiny/kis mega esetén realtime debug (debugwire).
- ISP programozás,
- chip egyszerű újraindítása,
- Tiny/kis mega esetén realtime debug (debugwire).
Re: STK500 avr programozás
Köszi. Ezek nem akkora gondok jelen pillanatban nálam.
