Sida 4 av 5
Re: Ska programmera Atmega, behöver begreppsförklaringar
Postat: 17 oktober 2012, 17:41:24
av mattswe
För att hela programminnet rensas (skrivs med 0xFF) när du programmerar bootloadern. Så du har troligen inte lyckats sätta BOOTRST biten i EFUSE.
Intressant teori. Jag ska kolla det, även om jag tror att jag har satt BOOTRST rätt.
Notera också att en Ardunio Uno har speciell logik kopplad mellan
den AVR som sköter USB och själva "Ardunio AVR'en". D.v.s att
då det kommer data via USB så kommer Arduinon automatiskt att
resetas. Denna funktion saknas sannolikt din egen uppkoppling.
*Sannolikt* är det så. Jag kan inte minnas att jag lagt dit den.
Det här låter som ett rimligt skäl till varför den uppför sig som den gör. Men då borde det ju gå att trycka reset manuellt i rätt ögonblick. Ska testa det också.
Re: Ska programmera Atmega, behöver begreppsförklaringar
Postat: 17 oktober 2012, 17:45:08
av sodjan
> Intressant teori.
Jag är inte övertygad...
Hur är det när du startar/restar din lösa "Arduini-AVR", startar din
egen applikation direkt eller sker det en paus på ett par sekunder?
Re: Ska programmera Atmega, behöver begreppsförklaringar
Postat: 17 oktober 2012, 17:51:21
av olof_n
Jag håller med om att det är underligt att det fungerar 1 gång.
Om din "USB till seriell" adapter har en DTR utgång är det vanligt att man behöver en liten (typ 0.1uf) kondensator mellan reset pinnen och DTR signalen. Det är för att det krävs en puls för att det ska bli en reset.
Jag har 2 olika USB/Serie adaptrar. Den ena har en DTR utgång och kräver kondensatorn.
Den andra saknar DTR utgång och då krävs det att jag gör en manuell reset för att ladda upp progammet.
Lika bra att löda dit en reset knapp i alla fall, bra att ha.
/Olof
Re: Ska programmera Atmega, behöver begreppsförklaringar
Postat: 17 oktober 2012, 21:40:55
av mattswe
Om din "USB till seriell" adapter har en DTR utgång
Den har en DTR# som beskrivs enligt "Data Terminal Ready Control Output / Handshake signal". Är det den du menar? Jag ska testa att hänga på en liten konding.
Lika bra att löda dit en reset knapp i alla fall, bra att ha.
Reset-knappen sitter redan på breadboarden.
Hur är det när du startar/restar din lösa "Arduini-AVR", startar din
egen applikation direkt eller sker det en paus på ett par sekunder?
Nja, jag har inte haft tid att testa ikväll, ska försöka testa imorgon. Men jag tror att det är en liten fördröjning på säg någon sekund, både vid start och reset. Får nog återkomma om det imorgon.
Re: Ska programmera Atmega, behöver begreppsförklaringar
Postat: 17 oktober 2012, 21:51:09
av sodjan
> Men jag tror att det är en liten fördröjning på säg någon sekund, både vid start och reset.
Jag tror att det är under den tiden som bootloadern lyssnar efter IDE't.
Sedan startas applikationen och då kan IDE't inte få kontakt på egen hand.
Re: Ska programmera Atmega, behöver begreppsförklaringar
Postat: 17 oktober 2012, 22:59:30
av ToPNoTCH
Jag tror du har rätt Sodjan
Enda anledningen att man drar DTR, är att man då får en "synkning" så att MCU'n resettar och binären skickas (seriellt) exakt i rätt sekund när booloadern förväntar sig få den.
Det går precis lika bra utan DTR kopplad, OM man är duktig och tima sin resett knapp. Missar man måste det besvärliga IDE't göra en timeout innan man kan försöka igen
vilket är rätt retsamt.
Därför är DTR inkopplingen en rätt bra sak att göra.
Om du inte har en sådan så har du kanske även missat pull-up på reset, och då hamnar ju MCU'n i ständig omboot.
Koppla därför in DTR och Reset så här:
isp.jpg
Re: Ska programmera Atmega, behöver begreppsförklaringar
Postat: 17 oktober 2012, 23:06:08
av sodjan
Ja, om den här aktuella USB/RS232 adapterna hanterar DTR på
ett förväntat sett så bör det fungera. Jag minns inte/vet inte
om det var just en FTDI baserad adapter, men det kanske inte
spelar så stor roll...
Re: Ska programmera Atmega, behöver begreppsförklaringar
Postat: 18 oktober 2012, 09:12:26
av mattswe
Nu gör vi framsteg!
Idag har jag bara kört utifrån Arduino IDEn.
Mycket riktigt så går det ett par sekunder innan programmet startar, både vid start och reset. Så jag testade först att manuellt trycka reset då Arduino IDEn började vilja ladda upp programmet. Det visade sig fungera.
Därefter lade jag till en 100nF kondensator mellan DTR på FTDIn och Reset på AVRen (pull-up resistorn hade jag redan) och nu behöver jag inte längre trycka reset manuellt.
Med andra ord; Min Atmega168 på breadboard uppför sig nu precis som ett vanligt Arduino-kort. Tack för all hjälp så långt!
Jag testade även att programmera en ATtiny45 från Arduino IDEn. Här installeras ingen bootloader, utan Arduino IDE kör in programmet direkt via avrisp mkii. Det fungerade också utmärkt.
Så nästa steg blir nu att gå över till Studio 6 och se om jag kan programmera dem därifrån med Arduino-kod. Om jag förstått saken rätt så ska jag inte bry mig om bootloadern då utan installera programmet bara.
Re: Ska programmera Atmega, behöver begreppsförklaringar
Postat: 18 oktober 2012, 12:25:18
av sodjan
OK. Ett par lärdomar...
Du har alltså en Uno sedan tidigare.
Du har sedan satt prylar på ett breadbaord som ska fungera som en Uno.
Om du då hade kollat schemat för Uno'n så hade du sett att det fanns en
speciell koppling för reset-pinnen och hade kanske kommit på rätt spår
från början.
Re: Ska programmera Atmega, behöver begreppsförklaringar
Postat: 18 oktober 2012, 13:43:39
av mattswe
Du har alltså en Uno sedan tidigare.
Nästan. Jag har en Nano.
Om du då hade kollat schemat för Uno'n så hade du sett att det fanns en
speciell koppling för reset-pinnen och hade kanske kommit på rätt spår
från början.
Så här i efterhand hade det varit bra även om jag ännu inte är så rutinerad på att läsa dessa scheman.
Det lustiga är att på Arduinos hemsida finns en beskrivning av hur man ska gå tillväga för att sätta en Atmega168 på en breadboard. Det är ju den jag försökt följa, men där har FTDIn ingen DTR och därför berör de inte det lilla reset-strul som jag hade på slutet.
Hur som helst, tack för hjälpen!
Re: Ska programmera Atmega, behöver begreppsförklaringar
Postat: 18 oktober 2012, 14:03:04
av sodjan
Uno, Nano, whatever...

Glöm det, bara kul att kunna hjälpa till...

Re: Ska programmera Atmega, behöver begreppsförklaringar
Postat: 18 oktober 2012, 18:16:24
av olof_n
Kul att det fungerar!
Jag råkade ut för samma problemet med att koppla DTR utan kondensator till reset när jag skulle göra min första "breadboard installation".
/Olof
Re: Ska programmera Atmega, behöver begreppsförklaringar
Postat: 19 oktober 2012, 12:05:52
av mattswe
Nu försöker jag använda Studio 6 både för programmering och överföring av program (via avrisp mkii).
Jag har en ATtiny45 på en breadboard, kopplat enligt:
ATtiny45.jpg
Fuses är satta enligt:
EFUSE 0xFF
HFUSE 0xDF
LFUSE 0xE2
(intern klocka 8MHz)
Programmet jag kör är enklast möjliga:
Kod: Markera allt
#define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
while(1)
{
PORTB = 0xff;
_delay_ms(2000);
PORTB = 0x00;
_delay_ms(500);
}
}
Det går bra att kompilera och att föra över programmet till mcun. Programmet verkar exekvera korrekt, men led blinkar så svagt att man nästan inte ser det. Jag har provat med flera leds, olika motstånd, och olika portar på mcun.
Några ideer varför?
Re: Ska programmera Atmega, behöver begreppsförklaringar
Postat: 19 oktober 2012, 12:12:07
av sodjan
Du *har* kollat max värdet för parametrarna till _delay_ms(), eller hur ?
http://www.nongnu.org/avr-libc/user-man ... delay.html
Re: Ska programmera Atmega, behöver begreppsförklaringar
Postat: 19 oktober 2012, 12:22:23
av sodjan
Dessutom, var gör du all initiering av processorn?
Sådant som in/ut på pinnar o.s.v. Kanske analoga funktioner.