*LÖST* Nybörjar-problem med ATTINY26, STK500 och Win-AVR

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
FarbrorEstland
Inlägg: 116
Blev medlem: 29 januari 2008, 20:45:44
Ort: Lite norr om Sthlm
Kontakt:

*LÖST* Nybörjar-problem med ATTINY26, STK500 och Win-AVR

Inlägg av FarbrorEstland »

Så efter mycket strul (Vista 64) har jag äntligen fått min STK500 att funka ihop med Vista.

Har aldrig jobbat med uC förut och absolut inte med att koda C, men jag ska ge det ett försök :)

Givetvis får jag problem med en gång. Har börjat med denna lilla kod:

Kod: Markera allt

#define F_CPU 1000000UL
#include <avr/io.h>
#include <util/delay.h>

int main(void)
{
  DDRA = 0b11111111;
  PORTA = 0b10101010;
  _delay_ms(4000);        
  PORTA = 0b01010101;
  return 1;
}
Det funkar, men med ett fel. Tiden som ska gå mellan skiftningen av lysdioderna (anslutna till port a) ska vara 4 sekunder enligt koden, men dom skiftar redan efter ca en halv sekund. Jag kör med den interna oscillatorn och alla jumprar på STK500 är satta för det.

Vad har jag missat?

Sa jag att jag var ny på detta :wink:

All hjälp uppskattas och jag ber om ursäkt redan nu för att detta är en "super-enkel, dum" fråga.

Mvh Carl-Johan
Senast redigerad av FarbrorEstland 4 juni 2009, 22:38:17, redigerad totalt 1 gång.
eqlazer
Inlägg: 923
Blev medlem: 22 september 2007, 13:53:45
Ort: Göteborg

Re: Nybörjar-problem med ATTINY26, STK500 och Win-AVR

Inlägg av eqlazer »

Koden är skriven för 1 MHz men med din beskrivning av förhållandet 4/0,5 så är det inte svårt att sluta sig till att den kör i 8 MHz. Vilket är precis vad den interna RC-oscillatorn har för hastighet om dess prescaler inte är aktiverad. Så ta och kolla igenom vilka fuses som är satta.
FarbrorEstland
Inlägg: 116
Blev medlem: 29 januari 2008, 20:45:44
Ort: Lite norr om Sthlm
Kontakt:

Re: Nybörjar-problem med ATTINY26, STK500 och Win-AVR

Inlägg av FarbrorEstland »

Tack!

Mycket riktigt. Då har jag lärt mig ytterligare något nytt idag :)

Tack för snabb hjälp!
Användarvisningsbild
Swech
EF Sponsor
Inlägg: 4750
Blev medlem: 6 november 2006, 21:43:35
Ort: Munkedal, Sverige (Sweden)
Kontakt:

Re: *LÖST* Nybörjar-problem med ATTINY26, STK500 och Win-AVR

Inlägg av Swech »

Är det verkligen riktigt att köra "return 1" ?
Bara nyfiken då jag kan alldeles för lite C....

Swech
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: *LÖST* Nybörjar-problem med ATTINY26, STK500 och Win-AVR

Inlägg av sodjan »

Tja, på en mikrokontroller så finns det väl aldrig någon
anledning till att göra "return" från main(). Det är ju inget
specifikt för C, ingen kod ska tillåtas "ta slut" så att
processorn löper okontrollerat...
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: *LÖST* Nybörjar-problem med ATTINY26, STK500 och Win-AVR

Inlägg av jesse »

men vad händer i praktiken när processorn når sista raden "return 1"??? Uppenbarligen fungerar programmet och lysdioderna shiftas, men även om processorn börjar om från början vid "return 1" så finns det ju ingen fördröjning efter att det senaste värdet skickats ut på PORTA?

Om man föreställer sig att "return 1" i praktiken innebär reset (eller goto 0x0000) så skulle ju värdet 0b01010101 på PORTA existera endast någon mikrosekund innan den börjar om igen :?:
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: *LÖST* Nybörjar-problem med ATTINY26, STK500 och Win-AVR

Inlägg av sodjan »

Det beror väldigt mycket på hur både kompilatorn och processorn i sig
hanterar det. Processorn kan t.ex göra så att programräknaren snurrar
runt genom hela den teroretiska adressrymden tills den "slår runt" och
nollställs igen, vilket ju kan ta ett litet tag.

Hur som helst, *varför* står det return där i koden ??
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Re: *LÖST* Nybörjar-problem med ATTINY26, STK500 och Win-AVR

Inlägg av vfr »

Jag misstänker att det kan bero på miljön. Vad tillverkaren av den inbyggda miljön tycker att det ska hända vid ett sådant orimligt slut. Reset, eller omstart från reset, känns väl inte som helt onaturligt. Då borde man kunna ha rimliga möjligheter att detektera det iallafall om man nu har gjort ett sådant odefinierat slut.

Edit: Ja, ungefär samma sak!
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: *LÖST* Nybörjar-problem med ATTINY26, STK500 och Win-AVR

Inlägg av jesse »

Man undrar ju vem som skrivit koden. Den borde ju innehålla en loop på något vis (som aldrig avslutas) och då blir "slutet" på programmet ointressant:

while (1) {
...
...satser...
...
}
Skriv svar