Andrea píše:NC - not connected = nezapojen
Kde jsi viděl v prodeji RC oscilátor, nepleteš si to zase s krystalovým oscilátorem?

Máš pravdu, zase som si to splietol

keď sa darí, tak sa darí. Asi by som si mal dať pauzu...
Tak ja to skúsim dať dokopy zajtra.
Teraz by ma zaujímalo, ako je to s tým UART-om. Nahodil som druhú atmegu, teraz som ale všetko nastavil správne

No cez UART mi stale nehadže to čo by malo. Stále vypisuje "<0>". Cez hyperterminal v XP mi nezobrazuje nič. Fungujem cez program Terminal 1.9b. Je nejaká definovaná maximálna dĺžka káblov medzi Atmegou a MAX232 a MAX232 a RS232 v PC?
Pre istotu pridávam aj zdrojový kód.
Kniznica:
#include <avr\io.h>
/* baud rate register value calculation */
#define CPU_FREQ 8000000UL // If CKDIV8 checked, then /8!
#define BAUD_RATE 9600
// BAUD = f / 16 * (UBR+1) alebo UBR = CPUFREQ/16/BAUD_RATE-1
#define BRREG_VALUE 51 // hodnota z tabulky v datashhete pre 8MHz
/* definitions for UART control */
#define BAUD_RATE_LOW_REG UBRRL // ??? (Staci Low Byte, < 255 )
#define UART_CONTROL_REG_B UCSRB // OK, checked
#define ENABLE_TRANSMITTER_BIT TXEN // OK, checked
#define ENABLE_RECEIVER_BIT RXEN // OK, checked
#define UART_STATUS_REG UCSRA // OK, checked (but also control reg.)
#define DATA_REGISTER_EMPTY_BIT UDRE // Added, for possible speed-up
#define TRANSMIT_COMPLETE_BIT TXC // OK, checked
#define RECEIVE_COMPLETE_BIT RXC // OK, checked
#define UART_CONTROL_REG_C UCSRC // Added for mode setting
#define UART_DATA_REG UDR // OK, checked
void inituart(void)
{
BAUD_RATE_LOW_REG = BRREG_VALUE; // OK, preddelic pre 9600
// bit 2x = 0
UART_CONTROL_REG_C = (1<<UCSZ1)|(1<<UCSZ0); // Added: Async. UART, None
// Parity, 8-data, 1 stopbit
UART_CONTROL_REG_B = (1 << ENABLE_RECEIVER_BIT)|
(1 << ENABLE_TRANSMITTER_BIT); // enable receive + transmit
}
void sendchar(unsigned char c)
{
UART_DATA_REG = c; // prepare transmission
while (!(UART_STATUS_REG & (1 << TRANSMIT_COMPLETE_BIT)));// wait until byte sendt
UART_STATUS_REG |= (1 << TRANSMIT_COMPLETE_BIT); // delete TXCflag
}
unsigned char recchar(void)
{
while( !(UART_STATUS_REG & (1 << RECEIVE_COMPLETE_BIT)) ); // wait for data
return UART_DATA_REG;
}
vlastny kod:
#include <avr\io.h>
#include <stdio.h>
#include "serial.h"
int main(void)
{
char c;
DDRD = 0b00000010;
PORTD = 0b00000011; // Set TxD pin as an output, RxD input
inituart();
sendchar('1');
//sendchar('A');
sendchar('a');
sendchar('2');
sendchar('b');
sendchar('\n');
for (c=32;c<=150;c++)
sendchar(c);
for (;;) {
/* Do nothing */
}
}
[/b]