Förstärka signal på 3.5 v till 5v
Antingen kopplar du ett motstånd mellan i/o-pinnen och matningsspänningen (5V), eller så använder du det inbyggda pullup-motståndet. Om vi antar att du kopplar kollektorn till PA2 så kan man göra så här,
Funktionen är sådan att alla pinnar på PortC sätts höga när PA2 är hög, annars sätts de låga.
Kod: Markera allt
int main()
{
DDRC = 0xFF; // Sätter alla pinnar på PortC till utgångar
DDRA = _BV(PA5); // Sätter PA5 till utgång.
PORTA = _BV(PA2); // Aktivera pullup för PA2
while (1) // Loopar för evigt
{
if (PINA & _BV(PA2))
{
PORTC = 0xFF;
}
else
{
PORTC = 0x00;
}
}
return 0;
}
förstår de inte riktigt det där med "pullup-motstånd"
men, om jag kopplar emittern till jord och kollektorn till pa2 och använder din kod så ska det funka...
sen ett problem som kom upp nu när ja testade lite... jo, de va så här att jag skulle testa ungefär hur stor resistans som skulle behövas...
jag seriekopplade några motstånd, men fortfarande 5v...
motstånden va på 2k så, jag började undra va fan som va fel, och testade ett motstånd och sen en diod, jag har ett svagt minne av att en 1N4148 har ett spänningsfall på 1,6v...
men, jag vet inte vad jag gjort för fel?:S tycker att det är lite konstigt....
men, om jag kopplar emittern till jord och kollektorn till pa2 och använder din kod så ska det funka...
sen ett problem som kom upp nu när ja testade lite... jo, de va så här att jag skulle testa ungefär hur stor resistans som skulle behövas...
jag seriekopplade några motstånd, men fortfarande 5v...
motstånden va på 2k så, jag började undra va fan som va fel, och testade ett motstånd och sen en diod, jag har ett svagt minne av att en 1N4148 har ett spänningsfall på 1,6v...
men, jag vet inte vad jag gjort för fel?:S tycker att det är lite konstigt....
> förstår de inte riktigt det där med "pullup-motstånd"
När transistorn i läsgaffeln leder så drar den kollektorn till emittern. Kopplar du emittern till jord och kollektorn till en i/o-pinne så dras i/o-pinnen till jord och du kommer läsa en 0:a, när inget ligger i vägen för lysdioden i läsgaffeln. Är det däremot något i vägen för läsgaffeln kommer transistorn spärra och kollektorn får inget riktigt bestämmt läge. Då kan AVR komma att läsa felaktiga värden från läsgaffeln. Därför kopplar man ett pullup-motstånd mellan i/o-pinnen och spänningsmatningen för att i/o-pinnen ska dras till matningsspänningen (en 1:a) när transistorn inte leder.
Ett pullup-motstånd är ett vanligt motstånd, som vanligtvis är på några kOhm. Antingen kopplar du dit ett manuellt eller så använder du AVR:ens inbyggda, som jag gör i koden ovan.
> sen ett problem som kom upp nu när ja testade lite... jo, de va så här att jag skulle testa ungefär hur stor resistans som skulle behövas...
jag seriekopplade några motstånd, men fortfarande 5v...
motstånden va på 2k så, jag började undra va fan som va fel, och testade ett motstånd och sen en diod, jag har ett svagt minne av att en 1N4148 har ett spänningsfall på 1,6v...
Går det ingen ström så blir det heller inget spänningsfall. Vad är det du vill göra?
När transistorn i läsgaffeln leder så drar den kollektorn till emittern. Kopplar du emittern till jord och kollektorn till en i/o-pinne så dras i/o-pinnen till jord och du kommer läsa en 0:a, när inget ligger i vägen för lysdioden i läsgaffeln. Är det däremot något i vägen för läsgaffeln kommer transistorn spärra och kollektorn får inget riktigt bestämmt läge. Då kan AVR komma att läsa felaktiga värden från läsgaffeln. Därför kopplar man ett pullup-motstånd mellan i/o-pinnen och spänningsmatningen för att i/o-pinnen ska dras till matningsspänningen (en 1:a) när transistorn inte leder.
Ett pullup-motstånd är ett vanligt motstånd, som vanligtvis är på några kOhm. Antingen kopplar du dit ett manuellt eller så använder du AVR:ens inbyggda, som jag gör i koden ovan.
> sen ett problem som kom upp nu när ja testade lite... jo, de va så här att jag skulle testa ungefär hur stor resistans som skulle behövas...
jag seriekopplade några motstånd, men fortfarande 5v...
motstånden va på 2k så, jag började undra va fan som va fel, och testade ett motstånd och sen en diod, jag har ett svagt minne av att en 1N4148 har ett spänningsfall på 1,6v...
Går det ingen ström så blir det heller inget spänningsfall. Vad är det du vill göra?
okej, nu har ja kommit så långt så att har skivit klart hela tecken-tabellen...
men, jag har ett litet problem(såklart)
det jag vill göra är att den ska börja om lopen när den snurrat ett varv...
jag vet att det är helt galet, men jag har inte en enda aning hur jag ska lösa det...
men, jag har ett litet problem(såklart)
det jag vill göra är att den ska börja om lopen när den snurrat ett varv...
Kod: Markera allt
while(1)
{
while(PINA & _BV(PA2)) //här är det fel
{
V();
_delay_loop_2(60000);
I();
_delay_loop_2(60000);
R();
_delay_loop_2(60000);
R();
_delay_loop_2(60000);
E();
}
}
}
Du bör egentligen använda dig av en interrupt som du kopplar till läsgaffeln, för att inte missa någon puls.
i main:
Flytta läsgaffeln från PA2 till Int0-pinnen. Kvar att göra är att ställa in så att du får en interrupt på stigande flank (eng. "rising edge") på Int0-pinnen. Och att fixa interruprutinen (hur ska raden "SIGNAL (SIG_" fortsätta?).
Kod: Markera allt
volatile static uint8_t varv_klart;
// Interruptrutin för en stigande flank på Int0-pinnen
SIGNAL (SIG_
{
varv_klart = 0;
}
Kod: Markera allt
while(1)
{
if (varv_klart==0)
{
V();
_delay_loop_2(60000);
I();
_delay_loop_2(60000);
R();
_delay_loop_2(60000);
R();
_delay_loop_2(60000);
E();
varv_klart = 1;
}
}
jag har letat i data bladet efter Signal, SIG_, interrupt osv. men, det enda jag får fram är
$002, EXT_INT0 och sen ett kodexempel som lyder:
men, det stämmer ju inte in alls på det andra...
det är lite svårt när jag inte vet riktigt vad det är jag letar eftere
$002, EXT_INT0 och sen ett kodexempel som lyder:
Kod: Markera allt
void Move_interrupts(void)
{
/* Enable change of interrupt vectors */
GICR = (1<<IVCE);
/* Move interrupts to boot Flash section */
GICR = (1<<IVSEL);
}
det är lite svårt när jag inte vet riktigt vad det är jag letar eftere

Kod: Markera allt
SIGNAL (SIG_INTERRUPT0)
{
varv_klart = 0;
}
int main()
{
DDRC = _BV(PC0) | _BV(PC1) | _BV(PC2) | _BV(PC3)| _BV(PC4)| _BV(PC5)| _BV(PC6) | _BV(PC7);
while(1)
{
if (varv_klart==0)
{
V();
_delay_loop_2(60000);
I();
_delay_loop_2(60000);
R();
_delay_loop_2(60000);
R();
_delay_loop_2(60000);
E();
varv_klart = 1;
}
}
}
binary.c:634: warning: return type defaults to `int'
binary.c:634: warning: function declaration isn't a prototype
binary.c: In function `SIGNAL':
binary.c:634: warning: type of "__vector_1" defaults to "int"
binary.c:636: warning: control reaches end of non-void function
binary.c: At top level:
binary.c:640: warning: function declaration isn't a prototype
sen om jag provar att göra såhär:
Kod: Markera allt
SIGNAL (SIG_INTERRUPT0_VECTOR(1))
{
varv_klart = 0;
}
int main()
{
DDRC = _BV(PC0) | _BV(PC1) | _BV(PC2) | _BV(PC3)| _BV(PC4)| _BV(PC5)| _BV(PC6) | _BV(PC7);
while(1)
{
if (varv_klart==0)
{
V();
_delay_loop_2(60000);
I();
_delay_loop_2(60000);
R();
_delay_loop_2(60000);
R();
_delay_loop_2(60000);
E();
varv_klart = 1;
}
}
}
binary.c:633: error: parse error before '(' token
binary.c:640: warning: function declaration isn't a prototype
rad 633 är översta raden, alltså; SIGNAL (SIG_INTERRUPT0_VECTOR(1))
visst kan ja de...
orkar inte tabort alla komentarer, så du får ståut med dom, troligen några som jag skrivit helt fel på men, aja, där är koden iaf...
Kod: Markera allt
/*
******************************************************
Detta är ett program för en "ledsnurra", vad det är förnågot
kan du se genom att tanka hem filmen på
"http://stuffnet.1go.dk/Ledsnurra.avi"
Försökt att förklara så noga som möjligt men, om det är
något som du inteförstår så är det bara att maila mig
så ska jag svara så snart som jag kan.
Du får gärna använda denna kod men, då vill jag att du
skriver att det är jag som gjort den(alltså ha kvar texten
mellan stjärnorna här)
Mail: limpan456@gmail.com
hemsida: http://stuffnet.1go.dk
AV: Viktor Lindström
OBS: ta inte bort denna texten som är mellan stjärnorna
*******************************************************
*/
#include <avr/io.h>
#include <avr/delay.h>
#include <inttypes.h>
#include <avr/iom32.h>
/*först och främst ska man inkuldera alla bibliotek så att kompilatorn förstår alla utryck*/
void A(void);/*funktion för bokstaven A*/
void A(void)
{
/*Använder endast 7 av 8 lysdiod därav är den sista biten(understa lysdioden) låg helatiden.
Så att det inte blir några missförstånd, att jag skriver alla så menar jag
alla som ska användas*/
PORTC = 0b01111110;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b10010000;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b10010000;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b10010000;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b01111110;
_delay_loop_2(3000);
PORTC = 0b00000000;
}
void B(void);/*funktion för bokstaven B*/
void B(void)
{
PORTC = 0b11111110;/*alla lyser*/
_delay_loop_2(3000);/*väntar en liten stund innan nästa anrop sker*/
PORTC = 0b00000000;/*nollar alla*/
_delay_loop_2(3000);
PORTC = 0b10010010;/*översta, mittre och understa lysdioden lyser*/
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b10010010;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b10010010;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b01000100;
_delay_loop_2(3000);
PORTC = 0b00000000;
}
void C(void);/*funktion för bokstaven C*/
void C(void)
{
PORTC = 0b01111100;/*alla lyser förutom översta och understa*/
_delay_loop_2(3000);
PORTC = 0b00000000;/*nollar alla*/
_delay_loop_2(3000);
PORTC = 0b10000010;/*understa och översta lyser. Börjar fatta hur de funkar nu va? */
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b10000010;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b10000010;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b0100100;
_delay_loop_2(3000);
PORTC = 0b00000000;
}
void D(void);/*funktion för bokstaven D*/
void D(void)
{
PORTC = 0b11111110;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b10000010;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b10000010;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b10000010;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b01000100;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b00111000;
_delay_loop_2(3000);
PORTC = 0b00000000;
}
void E(void);/*funktion fÖr bokstaven E*/
void E(void)
{
PORTC = 0b11111110;/*alla lyser*/
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b10010010;/*yttersta och den mittre lyser*/
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b10010010;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b10010010;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b10000010;/*bara de yttersta*/
_delay_loop_2(3000);
PORTC = 0b00000000;
}
void F(void);/*funktion för bokstaven F*/
void F(void)
{
PORTC = 0b11111110;/*alla lyser*/
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b00010010;/*mittre och översta lyser*/
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b00010010;
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b00010010;
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b00000010;/*översta lyser*/
}
void G(void);/*funktion för bokstaven G*/
void G(void)
{
PORTC = 0b01111100;/*alla utom den översta och understa*/
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b10000010;/*bara den översta och understa*/
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b10010010;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b10010010;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b01011110;
_delay_loop_2(3000);
PORTC = 0b00000000;
}
void H(void);/*funktion för bokstaven H*/
void H(void)
{
PORTC = 0b11111110;/*alla lyser*/
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b00010000;/*mittersta lyser*/
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b00010000;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b00010000;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b11111110;/*alla igen*/
_delay_loop_2(3000);
}
void I(void);/*funktion för bokstaven I*/
void I(void)
{
PORTC = 0b10000010;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b11111110;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b10000010;
_delay_loop_2(3000);
PORTC = 0b00000000;
}
void J(void);/*funktion för bokstaven J*/
void J(void)
{
PORTC = 0b00000100;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b00000010;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b10000010;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b11111100;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b10000000;
_delay_loop_2(3000);
PORTC = 0b00000000;
}
void K(void);/*funktion för bokstaven K*/
void K(void)
{
PORTC = 0b11111110;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b00010000;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b00101000;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b01000100;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b10000010;
_delay_loop_2(3000);
PORTC = 0b00000000;
}
void L(void);/*funktion för bokstaven L*/
void L(void)
{
PORTC = 0b11111110;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b00000010;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b00000010;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b00000010;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b00000010;
_delay_loop_2(3000);
PORTC = 0b00000000;
}
void M(void);/*funktion för bokstaven M*/
void M(void)
{
PORTC = 0b11111110;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b01000000;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b00110000;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b01000000;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b11111111;
_delay_loop_2(3000);
PORTC = 0b00000000;
}
void N(void);/*funktion för bokstaven N*/
void N(void)
{
PORTC = 0b11111111;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b01000000;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b00100000;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b00010000;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b11111111;
_delay_loop_2(3000);
PORTC = 0b00000000;
}
void O(void);/*funktion för bokstaven O*/
void O(void)
{
PORTC = 0b01111100;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b10000010;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b10000010;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b10000010;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b01000000;
_delay_loop_2(3000);
PORTC = 0b01111100;
}
void P(void);/*funktion för bokstaven P*/
void P(void)
{
PORTC = 0b11111110;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b10010000;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b10010000;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b10010000;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b01100000;
_delay_loop_2(3000);
PORTC = 0b00000000;
}
void Q(void);/*funktion för bokstaven Q*/
void Q(void)
{
PORTC = 0b01111100;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b10000010;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b10001010;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b10000100;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b01111010;
_delay_loop_2(3000);
PORTC = 0b00000000;
}
void R(void);/*funktion för bokstaven R*/
void R(void)
{
PORTC = 0b11111110;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b10010000;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b10011000;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b10010100;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b01100010;
_delay_loop_2(3000);
PORTC = 0b00000000;
}
void S(void);/*funktion för bokstaven S*/
void S(void)
{
PORTC = 0b01100100;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b10010010;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b10010010;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b10010010;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b01000110;
_delay_loop_2(3000);
PORTC = 0b00000000;
}
void T(void);/*funktion för bokstaven T*/
void T(void)
{
PORTC = 0b10000000;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b10000000;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b11111110;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b10000000;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b10000000;
_delay_loop_2(3000);
PORTC = 0b00000000;
}
void U(void);/*funktion för bokstaven U*/
void U(void)
{
PORTC = 0b11111100;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b00000010;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b00000010;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b00000010;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b11111100;
_delay_loop_2(3000);
PORTC = 0b00000000;
}
void V(void);/*funktion för bokstaven V*/
void V(void)
{
PORTC = 0b11111000;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b00000100;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b00000010;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b00000100;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b11111000;
_delay_loop_2(3000);
PORTC = 0b00000000;
}
void W(void);/*funktion för bokstaven W*/
void W(void)
{
PORTC = 0b1111000;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b00000110;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b00111000;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b00000110;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b11111000;
_delay_loop_2(3000);
PORTC = 0b00000000;
}
void X(void);/*funktion för bokstaven X*/
void X(void)
{
PORTC = 0b10000010;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b01000100;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b00111000;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b01000100;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b10000010;
_delay_loop_2(3000);
PORTC = 0b00000000;
}
void Y(void);/*funktion för bokstaven Y*/
void Y(void)
{
PORTC = 0b11000000;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b00100000;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b00011110;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b00100000;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b11000000;
_delay_loop_2(3000);
PORTC = 0b00000000;
}
void Z(void);/*funktion för bokstaven Z*/
void Z(void)
{
PORTC = 0b10000110;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b10001010;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b10010010;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b10100010;
_delay_loop_2(3000);
PORTC = 0b00000000;
_delay_loop_2(3000);
PORTC = 0b11000010;
_delay_loop_2(3000);
PORTC = 0b00000000;
}
volatile static uint8_t varv_klart;
// Interruptrutin för en stigande flank på Int0-pinnen
SIGNAL (SIG_INTERRUPT0_VECTOR(1))
{
varv_klart = 0;
}
int main()
{
DDRC = _BV(PC0) | _BV(PC1) | _BV(PC2) | _BV(PC3)| _BV(PC4)| _BV(PC5)| _BV(PC6) | _BV(PC7);
/*alla bitar i port c är höga.
man kan skriva "DDRC = 0x0f;" med men, det orkar jag inte ändra på, det krånglade lite för mig så, nu får de stå såhär
med "komandot" DDRC = 0x0f gör alltså att alla bitar i port c blir utgångar, vill du använda någon annan port så skriver du
DDRA, DDRB, DDRC ect. det är alltså sista bokstaven där som bestämmer vilken av portarna som ska göras till utgång*/
PORTA = _BV(PA2); // Aktivera pullup för PA2
while(1)
{
if (varv_klart==0)
{
V();
_delay_loop_2(60000);
I();
_delay_loop_2(60000);
R();
_delay_loop_2(60000);
R();
_delay_loop_2(60000);
E();
varv_klart = 1;
}
}
}
Oj, det var ingen liten kod. 
Det ska vara "SIGNAL (SIG_INTERRUPT0)", som i ditt första försök. Men,
#include <avr/iom32.h>
ska bort och
#include <avr/interrupt.h>
#include <avr/signal.h>
ska läggas till
Sen ska du ställa in så att en interrupt triggas på stigande flank på Int0-pinnen. Du ska också ställa in så att Int0-pinnen (PD2) är en ingång med aktiverat pullup. Sen ska du aktivera globala interrupts (sei()).
Glöm heller inte bort att flytta läsgaffeln från PA2 till Int0/PD2.

Det ska vara "SIGNAL (SIG_INTERRUPT0)", som i ditt första försök. Men,
#include <avr/iom32.h>
ska bort och
#include <avr/interrupt.h>
#include <avr/signal.h>
ska läggas till
Sen ska du ställa in så att en interrupt triggas på stigande flank på Int0-pinnen. Du ska också ställa in så att Int0-pinnen (PD2) är en ingång med aktiverat pullup. Sen ska du aktivera globala interrupts (sei()).
Glöm heller inte bort att flytta läsgaffeln från PA2 till Int0/PD2.
Kod: Markera allt
volatile static uint8_t varv_klart;
// Interruptrutin för en stigande flank på Int0-pinnen
SIGNAL (SIG_INTERRUPT0)
{
MCUCR ^= _BV( ISC00 );
varv_klart = 0;
}
sei() __asm__ __volatile__ ("sei" ::)
def cli()
ingroup avr_interrupts
int main()
{
DDRC = _BV(PC0) | _BV(PC1) | _BV(PC2) | _BV(PC3)| _BV(PC4)| _BV(PC5)| _BV(PC6) | _BV(PC7);
/*alla bitar i port c är höga.
man kan skriva "DDRC = 0x0f;" med men, det orkar jag inte ändra på, det krånglade lite för mig så, nu får de stå såhär
med "komandot" DDRC = 0x0f gör alltså att alla bitar i port c blir utgångar, vill du använda någon annan port så skriver du
DDRA, DDRB, DDRC ect. det är alltså sista bokstaven där som bestämmer vilken av portarna som ska göras till utgång*/
PIN &= ~ _BV(PD2) // Gör PD2 till ingång
PORTA = _BV(PD2); // Aktivera pullup för PA2
MCUCR = _BV( ISC01 );
GIMSK = _BV( INT0 );
while(1)
{
if (varv_klart==0)
{
V();
_delay_loop_2(60000);
I();
_delay_loop_2(60000);
R();
_delay_loop_2(60000);
R();
_delay_loop_2(60000);
E();
varv_klart = 1;
}
}
}
binary.c:644: error: parse error before "volatile"
binary.c:662: error: parse error before "volatile"
binary.c:663: error: parse error before "volatile"
binary.c:670: error: parse error before numeric constant
binary.c:670: warning: type defaults to `int' in declaration of `_delay_loop_2'
binary.c:670: warning: function declaration isn't a prototype
binary.c:670: error: conflicting types for '_delay_loop_2'
E:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h:110: error: previous definition of '_delay_loop_2' was here
binary.c:670: warning: data definition has no type or storage class
binary.c:671: warning: type defaults to `int' in declaration of `I'
binary.c:671: warning: function declaration isn't a prototype
binary.c:671: error: conflicting types for 'I'
binary.c:226: error: previous definition of 'I' was here
binary.c:671: warning: data definition has no type or storage class
binary.c:672: error: parse error before numeric constant
binary.c:672: warning: type defaults to `int' in declaration of `_delay_loop_2'
binary.c:672: warning: function declaration isn't a prototype
binary.c:672: warning: data definition has no type or storage class
binary.c:673: warning: type defaults to `int' in declaration of `R'
binary.c:673: warning: function declaration isn't a prototype
binary.c:673: error: conflicting types for 'R'
binary.c:427: error: previous definition of 'R' was here
binary.c:673: warning: data definition has no type or storage class
binary.c:674: error: parse error before numeric constant
binary.c:674: warning: type defaults to `int' in declaration of `_delay_loop_2'
binary.c:674: warning: function declaration isn't a prototype
binary.c:674: warning: data definition has no type or storage class
binary.c:675: warning: type defaults to `int' in declaration of `R'
binary.c:675: warning: function declaration isn't a prototype
binary.c:675: warning: data definition has no type or storage class
binary.c:676: error: parse error before numeric constant
binary.c:676: warning: type defaults to `int' in declaration of `_delay_loop_2'
binary.c:676: warning: function declaration isn't a prototype
binary.c:676: warning: data definition has no type or storage class
binary.c:677: warning: type defaults to `int' in declaration of `E'
binary.c:677: warning: function declaration isn't a prototype
binary.c:677: error: conflicting types for 'E'
binary.c:139: error: previous definition of 'E' was here
binary.c:677: warning: data definition has no type or storage class
binary.c:678: warning: type defaults to `int' in declaration of `varv_klart'
binary.c:678: error: conflicting types for 'varv_klart'
binary.c:633: error: previous declaration of 'varv_klart' was here
binary.c:678: warning: data definition has no type or storage class
binary.c:679: error: parse error before '}' token



aja, är otrolig tacksam för all hjälp
