Ik heb mij zopas een stk500 gekocht nu was ik hier mee aan het experimenteren maar het wilt niet echt lukken. Ik heb als device een AT90S8515 gebruikt en een crystal van 4 MHZ.

Ik heb de software in ICCAVR geschreven en kan dit simuleren in avrstudio dus dit moet wel inorde zijn.
Dan kies ik in het menu tools voor De STK500 dan verschijnt het scherm om te programmeren. Hier heb ik alles zo ingesteld als op deze screenshots. Als ik dan op program klik dan gaat hij schrijven naar de STK500 maar als ik vervolgens de geschreven data laat controleren krijg ik een error zie laatste printscreen. verder kan ik ook de lock fuses niet aanpassen. Weet iemand wat ik fout doe?

Je hebt de Mega8515 geselecteerd ipv de at90s8515. Op mijn stk500 met at90s8515 zie ik een stuk minder fuses en krijg ik de foutmelding 'Serial fuse readback is not supported by this device'.

Willem

Ok bedankt dat heeft al een stuk geholpen maar nu voert mijn 8515 het programma nog niet uit. weet er nog iemand waar het verschil zit tussen flash memory en eeprom memory en welke functie ze hebben.

Een C programma in AVR Studio ? Gaat dat dan ook al ?

Flash is voor je programma en eeprom is voor data die behouden moet blijven als die uc uit gaat. Zie ook avrfreaks.com, er staat daar een tutorial voor de eerste stapjes met de stk500.

Heb je alles goed gejumperd voor een extern kristal? Probeer ook de clock van het boardje zelf eens.

Willem

Op je screenshots staat de oscillator uit, als je geen extern crystal gebruikt (en goed jumpered) zal je uc dus niets doen.

Willem

Op 11 januari 2004 13:06:50 schreef Antoine:
Een C programma in AVR Studio ? Gaat dat dan ook al ?

Je kunt een c-programma schrijven met een c-compiler hierbij wordt een file gegenereerd die je in kan lezen met avr-studio. Zo kun je je c-programma simuleeren dmv het i/o gedeelte in avr-sudio.

inderdaad in ICCAVR kan je kiezen voor simulatie in avrstudio je kan dan de genereerde cof file open in avrstudio. Het werkt ondertussen al om 1 of andere reden krijg ik de ledjes op het bord niet aangestuurd als ik ze er extern op plaats werkt het wel

De ledjes worden op de STK500 aangestuurd dmv inputs ipv output. Misschien stuur je ze extern aan als output? Zie ook het schema waarmee ze geschakeld worden in de handleiding.

Willem

Aansturen doormiddel van Input?? volgens mij bedoel je dat ze als het ware geinverteerd werken. Dwz als je blokje in AVR-studio zwart is is het ledje uit is en een wit blokje is een brandende led.

Oops, sorry je hebt gelijk Sytse. Het zijn outputs maar je verbind de ene pool van je ledje met + en de andere aan de pin van je uc. Als je een 1 op de pin zet blokkeer je het branden van de led en als je een 0 op de pin zet kan er stroom naar de uc gaan lopen.

Blijft natuurlijk de vraag of de OP z'n externe leds op deze manier aanstuurt. Op de STK500 zit een schakeling om de intensiteit van de leds constant te houden ongeacht ingangsspanning. Waarschijnlijk werkt dit niet als je de led andersom aanstuurt (gnd naar 1 ene pin en andere pin naar uc)

Willem

Klopt, ze zijn geinverteerd, de uitgang laag maken (0 in het PortX register schrijven) betekent LEDs aan. Maar de uitgang zelf is wel laag! Er zitten SMD transistortjes op de STK500 die het inverteren.

Ik heb mensen poorten op hele rare manieren zien aansturen, bijvoorbeeld het PortX register en DDRX register allebei hoog en laag maken in plaats van alleen het PortX register. En bij de oude ontwikkelbordjes kon je door PortX laag te laten staan en DDRX te veranderen ook de LEDs aan en uit zetten.

(X kan A t/m F zijn, afhankelijk van de controller)

Ondertussen heb ik ze al aan het branden gekregen.
Maar heeft deze gekke manier van aansturen ook enig nut? want wat mij gewoon het meest logisch lijkt is DDRX op output zetten en dan gewoon PORTX hoog of laag sturen.

Da's ook de goede manier! Meestal is die gekke manier van aansturen een gevolg van onwetendheid of verkeerde uitleg van docenten (dat laatste had ik dus op de MTS, ik beweerde het goede, maar de man wilde er niks van weten).

Het inverteren is omdat de uc meer stroom kan 'sinken' dan 'sourcen'. Er kan dus meer stroom naar de uc lopen dan dat hij gaan geven (zonder dat hij kapot gaat).

Willem

Ok maar hoe komt het dan dat het niet werkt als DDR op output staat en je de uitanngen laag stuurt. en wel werkt als DDR op input staat en dan de ingangen laag maken.
Want een reden waarom dat op input moet staan kan ik niet bedenken je gaat toch iets aansturen dus is het output en dan kan je toch nog een stroom sinken.
Heeft het iets met interne opbouw te maken?

[Bericht gewijzigd door Jeroen1983 op ]

Ik gebruik dit als initialisatie op de STK500:

ldi r16,255
out DDRB,r16
ldi r16,0
out PORTB,r16

Het zijn dus gewoon outputs. Mijn opmerking over inputs was een vergissing, haalde het inverteren en sinken even door elkaar met input/output.

Waarom het bij jou niet werkt en wel als je ze als input configureert zou ik niet weten.

Willem