Sida 1 av 2
AVR NooB vill ha hjälp.
Postat: 9 juli 2008, 15:32:02
av SA4AQS
Någon som har tid och lust att hjälpa mig?
Jag har en
sån här och vet ej vad den heter.
Sen så har jag en AT92C010 som jag vill lära mig att programera.
Har också AT90S2313, AT49F040A, At49BV512, AT49F512, AT24C16
Har laddat hem AVR Studio 4.13 och SP1 och WinAVR c-kompilator.
OK jag vill att en lysdiod ska toggla när jag tryker på en knapp.
Postat: 9 juli 2008, 15:43:53
av feedback
Underbart! Testa Amforth. Bra att kunna Forth när IntellaSys tar över världen.
"Twenty-four C18 core processors capable of up to 18 billion operations per second."
http://www.intellasys.net/index.php?opt ... &Itemid=63
Iof C fungerar ju också.
Det går inte bara att lära sig så där.. du måste ha ett mål i sikte. Tänk ut vad du vill bygga. Sen löser du problemet bakifrån. Typ. "- Okej, en blinkande lampa. Hur får jag den att lysa.. hum.. C, C-kompilator, Hilfe!, måste nog fråga på elektronikforumet.com"
Postat: 9 juli 2008, 15:46:11
av eqlazer
Prylen på bilden är en AVRISP mkI (gamla versionen med serieportsinterface).
Postat: 9 juli 2008, 15:59:24
av björn
Jag rekommenderar att du kollar på AVRfreaks.com och i databladet för olika ideer om hur du skall göra. Det är inget svårt att göra det du vill (toggla LED med en knapp) men jag tror att du lär dig mer med att söka själv än att jag/någon ger dig färdig kod, sedan när du kommer till ett problem kan vi säkert hjäpa dig
mvh Björn
Postat: 9 juli 2008, 16:11:39
av BEEP
Du hittar information om den i AVR Studio --> Help/AVR Tools User Guide.
Atmel - datablad för AVRISP
Det verkar inte som att AVRISP stödjer AT92C010 och en sökning efter den på Atmels hemsida ger noll resultat.
AVR Studio 4.14.589 är den senaste version.
Börja först med assembler så kommer du att få nytta av det i C-programmeringen.
Postat: 9 juli 2008, 16:42:04
av SA4AQS
Jag börjar väll med AT90S2313 då.
Postat: 9 juli 2008, 18:30:04
av sebgus
Kan låna tråden o slänga in en fråga.
Har precis fått hem några atmega8-16PU processorer som jag tänkte börja leka med. Har även införskaffat en AVRISP mkII.
Har tittat i datablad för
atmegan och för
AVRISP:en. Har kopplat MISO,MOSI,SCK och RESET mellan processorn och ISP:en samt anlslutit 5V till både ISP:en och VCC-pinnen på atmegan. Även anslutit GND på ISP:en och atmegan.
Startar AVR studio 4, ansluter till ISP:en; funkar. Men sen kommer det upp ett felmeddelande "Can't find target. Make sure that target has power." ISP:en hittar alltså inte processorn. Jag fattar inte vad som är fel?
Några tips eller idéer?
Postat: 9 juli 2008, 19:18:39
av BEEP
Vad visar lysdioden?
Edit2:
Tänk på att bilden på sidan 26 visar "Target cable".
Postat: 9 juli 2008, 19:31:53
av strombom
project_x: Har du kopplat som på sidan 237 i databladet ? Det är alltid bra att dubbelkolla en gång extra
http://www.atmel.com/dyn/resources/prod ... oc2486.pdf
Postat: 9 juli 2008, 20:00:13
av sebgus
STORT TACK BEEP!
Timmar och timmar har gått åt för att felsöka, men så är det ett sånt enkelt fel...
Tack strombom också, hade glömt AVcc!
Nu ska här lekas o läras

Postat: 9 juli 2008, 21:29:28
av BEEP
Det var ju bra
Var nu lite försiktig med fuse bitarna så att vi inte behöver läsa samma fråga igen.
Postat: 9 juli 2008, 21:39:11
av sebgus
Nu kommer jag här igen.
Om jag programmerar in följande kod in i processorn:
Kod: Markera allt
#include <avr/io.h>
int main (void) {
uint32_t i = 0; //(2)
DDRD = 0xff;
while(1) {
PORTD = 0b11110000;
for(i=0; i < 10000; i++); //(6)
PORTD = 0b00001111;
for(i=0; i < 10000; i++);
}
return 0;
}
Vad händer då? Förklara gärna tydligt, vilka pinnar som används osv. Det ska vara en till blinkande lysdiod men får det inte riktigt att funka...
Edit: Beep du menar "reset disabled"?
Postat: 9 juli 2008, 22:10:38
av björn
Först tänds PD4-PD5 och förblir tänd i 10000 klockcykler och då släcks den och PD0-PD3 tänds i 10000 cykler sedan börjar det om.
ps.Hur länge 10000 cykler är vet vi inte då din frekvens är okänd för oss. Men tiden räknas ut som : (1/MCLK)*10000 (där MCLK är klockfrekvensen till processorn och 10000 antalet cykler) (tiden är ungefärlig).
EDIT:
Kod: Markera allt
#include <avr/io.h>
int main (void) {
uint32_t i = 0; //initierar en uint32 som heter i (32 bitars variabel som kan hålla värde upp till 4294967295)
DDRD = 0xff; //Sätter hela PORTD till utgångar
while(1) { //loopar förevigt
PORTD = 0b11110000; //Sätter PD4-PD7 höga och PD0-PD3 låga
for(i=0; i < 10000; i++); // Väntar i 10000 klockcykler
PORTD = 0b00001111; //Sätter PD0-PD3 höga och PD4-PD7 låga
for(i=0; i < 10000; i++); //Väntar i 10000 klockcykler
}//och börjar om igen
return 0;
}
Postat: 9 juli 2008, 22:12:25
av feedback
använd:
Om jag var kompilatorn skulle jag plocka bort:
for(i=0; i < 10000; i++);
Postat: 9 juli 2008, 22:14:08
av björn
Då vore du en elak kompilator
