Ska programmera Atmega, behöver begreppsförklaringar

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
mattswe
Inlägg: 159
Blev medlem: 20 augusti 2012, 13:27:51

Re: Ska programmera Atmega, behöver begreppsförklaringar

Inlägg 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. :wink:
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å.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Ska programmera Atmega, behöver begreppsförklaringar

Inlägg 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?
olof_n
Inlägg: 116
Blev medlem: 23 februari 2011, 21:36:46

Re: Ska programmera Atmega, behöver begreppsförklaringar

Inlägg 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
mattswe
Inlägg: 159
Blev medlem: 20 augusti 2012, 13:27:51

Re: Ska programmera Atmega, behöver begreppsförklaringar

Inlägg 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.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Ska programmera Atmega, behöver begreppsförklaringar

Inlägg 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.
ToPNoTCH
Inlägg: 5152
Blev medlem: 21 december 2009, 17:59:48

Re: Ska programmera Atmega, behöver begreppsförklaringar

Inlägg 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
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Ska programmera Atmega, behöver begreppsförklaringar

Inlägg 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...
mattswe
Inlägg: 159
Blev medlem: 20 augusti 2012, 13:27:51

Re: Ska programmera Atmega, behöver begreppsförklaringar

Inlägg av mattswe »

Nu gör vi framsteg! :bravo:

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.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Ska programmera Atmega, behöver begreppsförklaringar

Inlägg 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.
mattswe
Inlägg: 159
Blev medlem: 20 augusti 2012, 13:27:51

Re: Ska programmera Atmega, behöver begreppsförklaringar

Inlägg 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!
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Ska programmera Atmega, behöver begreppsförklaringar

Inlägg av sodjan »

Uno, Nano, whatever... :-)
Glöm det, bara kul att kunna hjälpa till... :-)
olof_n
Inlägg: 116
Blev medlem: 23 februari 2011, 21:36:46

Re: Ska programmera Atmega, behöver begreppsförklaringar

Inlägg 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
mattswe
Inlägg: 159
Blev medlem: 20 augusti 2012, 13:27:51

Re: Ska programmera Atmega, behöver begreppsförklaringar

Inlägg 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?
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Ska programmera Atmega, behöver begreppsförklaringar

Inlägg 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
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Ska programmera Atmega, behöver begreppsförklaringar

Inlägg av sodjan »

Dessutom, var gör du all initiering av processorn?
Sådant som in/ut på pinnar o.s.v. Kanske analoga funktioner.
Skriv svar