Ahoj,
chtěl bych poprosit někoho zkušenějšího, aby mi poradil s programem pro Atmel v C (CodeVision AVR). Zkusil jsem jenom jednoduchej prográmek pro ATINY13 na vstupy a výstupy , abych viděl, jestli to funguje tak jak si myslím. Jenže to tak není a nemůžu přijít na to proč.
DDRx - nastavuje na příslušným portu x vstupy nebo výstupy ?
PORTx - nastavuje u výstupních pinů H nebo L úroveň?
PINx.x - čte hodnotu H nebo L na příslušným pinu příslušného portu?
Problém je, že jako výstupní piny se nastaví piny B.1, B.2 a z PINB.0 mi to nikdy nenačte log. úroveň ( testováno v AVR studio v4.19). Nevím v čem by mohl být problém,nejspíš, že to nastavení vstupních a výstupních portů nemůže být libovolně. Chtěl bych poprosit nějakou dobrou duši, jestli by mi to vysvětlila, které vstupy a výstupy lze použít a potvrdila ty tři otázky výše. Díky!
#include <tiny13.h>
#include <delay.h>
unsigned int i=0;
void main(void)
{
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
PORTB=0x00;
DDRB.0=0; //nastavení B.0 jako vstupu
DDRB.1=0;
DDRB.2=0;
DDRB.3=1; //nastavení B.3 jako výstupu
DDRB.4=1; //nastavení B.4 jako výstupu
DDRB.5=0;
TCCR0A=0x00;
TCCR0B=0x00;
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;
GIMSK=0x00;
MCUCR=0x00;
TIMSK0=0x00;
ACSR=0x80;
ADCSRB=0x00;
DIDR0=0x00;
ADCSRA=0x00;
while (1)
{
if (PINB.0 == 1){ //čtení z B.2 a log. podmínka
PORTB.3=0;
delay_ms(500);
PORTB.4=0;
i=2;
}
else { if (i==0) { // jinak
delay_ms(20000);
PORTB.3=1; // B.3=1
delay_ms(10000);
PORTB.4=1; // B.4=1
i=1;
};
if (i==2) { // B.3=1
PORTB.3=1;
delay_ms(10000);
PORTB.4=1; // B.3=1
i=1;
};
};
};
}
Atmel v C vstupy vs výstupy
Moderátor: Moderátoři
Zkus třeba
Kód: Vybrat vše
//tlačítko na portb.0 proti zemi
//led na portb.1 proti +5V (přes odpor v serii)
//=====================================================================
void main(void)
{
DDRB = 0b00000010; // portb.1 výstupní, ostatní vstupní
PORTB = 0b00000001; // pull-up na portb.0
while (1)
{
PORTB.1 = PINB.0; // při stisknutém tlačítku dioda svítí
}
}
Naposledy upravil(a) AB1 dne 24 bře 2012, 19:01, celkem upraveno 1 x.