Bra komma igångguider för AVR + C ?
- MicaelKarlsson
- Inlägg: 4669
- Blev medlem: 18 juni 2004, 09:16:07
- Ort: Aneby
- Kontakt:
Winavr gillar inte dendär koden.
µCn är en at90s2313 på en devplatta/programmerare med PD0-PD7 kopplade till leds och PD2-5 kopplade till tryckknappar. Så PORTC finns väl inte på denna cpu?
EDIT: Den senare koden accepterade WinAVR efter att jag lade ; efter PORTB raden. När jag kör koden så lyser en led hela tiden, oberoende av läget på knappen.
µCn är en at90s2313 på en devplatta/programmerare med PD0-PD7 kopplade till leds och PD2-5 kopplade till tryckknappar. Så PORTC finns väl inte på denna cpu?
EDIT: Den senare koden accepterade WinAVR efter att jag lade ; efter PORTB raden. När jag kör koden så lyser en led hela tiden, oberoende av läget på knappen.
- MicaelKarlsson
- Inlägg: 4669
- Blev medlem: 18 juni 2004, 09:16:07
- Ort: Aneby
- Kontakt:
- MicaelKarlsson
- Inlägg: 4669
- Blev medlem: 18 juni 2004, 09:16:07
- Ort: Aneby
- Kontakt:
Alla leds funkar?
Skall du initiera stackpekar på 2313?
EDIT:
ldi r16,RAMEND ;Init Stack Pointer
out SPL,r16
Är ju asm, men det borde väl funka utan i C....
EDIT 2:
- Stackpekaren skall inte initieras i C
Snodde en initiering av 90s2313 från CodeVisionAVR (utvärderingsversionen)
PORTB är ut (leds)
PORTD är in (knappar)
Har du testat så du får ca: 5V när tryckknapparna är höga?
Skall du initiera stackpekar på 2313?
EDIT:
ldi r16,RAMEND ;Init Stack Pointer
out SPL,r16
Är ju asm, men det borde väl funka utan i C....
EDIT 2:
- Stackpekaren skall inte initieras i C
Snodde en initiering av 90s2313 från CodeVisionAVR (utvärderingsversionen)
PORTB är ut (leds)
PORTD är in (knappar)
Kod: Markera allt
#include <90s2313.h>
// Declare your global variables here
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port B initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTB=0x00;
DDRB=0xFF;
// Port D initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=0x00;
TCNT0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1 output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
OCR1H=0x00;
OCR1L=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
GIMSK=0x00;
MCUCR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
// Analog Comparator Output: Off
ACSR=0x80;
while (1)
{
// Place your code here
};
}
- MicaelKarlsson
- Inlägg: 4669
- Blev medlem: 18 juni 2004, 09:16:07
- Ort: Aneby
- Kontakt:
- MicaelKarlsson
- Inlägg: 4669
- Blev medlem: 18 juni 2004, 09:16:07
- Ort: Aneby
- Kontakt:
- MicaelKarlsson
- Inlägg: 4669
- Blev medlem: 18 juni 2004, 09:16:07
- Ort: Aneby
- Kontakt:
- MicaelKarlsson
- Inlägg: 4669
- Blev medlem: 18 juni 2004, 09:16:07
- Ort: Aneby
- Kontakt:
All kod:
Har provat att blinka ledsen och de fungerar. 2313an (borde) fungera, samma sak fast jag lägger in en tiny2313. Programmeringen fungerar också.
Glappkontakt borde det inte vara.
Kod: Markera allt
#include <avr/io.h>
int main(void)
{
DDRB = 0xFF;
DDRD = 0x00;
while(1)
{
if (PORTB&0x02==0x02)
{
PORTB=0x1;
}
}
}
Har provat att blinka ledsen och de fungerar. 2313an (borde) fungera, samma sak fast jag lägger in en tiny2313. Programmeringen fungerar också.
Glappkontakt borde det inte vara.
Från din kod på förra sidan:
edit: lite
Kod: Markera allt
int main()
{
DDRB = 0xFF;
DDRD = 0x00;
PORTB = 0xFF;
while (1)
{
if (PORTD == _BV(2)) // Ändra till if (!(PIND & _BV(PD2)))
{
PORTB == _BV(0); // Ändra till PORTB = _BV(PB0);
}
else // Lägg till dessa rader för att märka skillnad när du sedan släpper upp knappen
{
PORTB = 0;
}
}
}