Hi,
ich bin gerade ziemlich am verzweifeln.
ich habe das ETH_M32_EX von Uradig mit einem ATmega644 und möchte per
Uart per Hterm Hex zahlen eingeben, dass aus dem SPI binärcode
herauskommt.
Eine kommunikation zwischen Uart und Hterm habe ich hinbekommen mit
folgenden cod:
#include <stdlib.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#include <string.h>
#include "Library/uart.h"
/* Konfiguration */
#ifndef F_CPU
#define F_CPU 16000000UL
#endif
// UART
#define UART_BAUD_RATE 9600
void init(){
uart_init( UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU) ); //Uart
Initialisieren
}
int main(void)
{
unsigned int c; //Zeichen von UART
char command[10]; //String für Befehlt von UART
int command_complete = 0; //Befehl vollständig
int command_counter = 0; //Anzahl der Buchstaben innerhalb Befehl
char wert[10];
double zahl;
int laenge;
init();
uart_puts("\nTestausgabe\n");
uart_puts("Ready>\n");
sei();
while(1)
{
c = uart_getc();
if (!(c & UART_NO_DATA))
{
if ( c & UART_FRAME_ERROR )
{
uart_puts_P("UART Frame Error: ");
}
else if ( c & UART_OVERRUN_ERROR )
{
uart_puts_P("UART Overrun Error: ");
}
else if ( c & UART_BUFFER_OVERFLOW )
{
uart_puts_P("Buffer overflow error: ");
}
else{
if(c != '\n') {
command[command_counter] = c;
command_counter++;
}
else{
command[command_counter] = '\0';
laenge = command_counter;
command_counter = 0;
command_complete = 1;
}
}
}
if(command_complete)
{
if (command[0] == 'a'){
uart_puts("\nDu hast Befehl A ausgewählt\n");
}
else if (command[0] == 'b'){
uart_puts("Befehl B mit Parameter : ");
strncpy(wert,&command[1],laenge-1);
uart_puts(wert);
zahl = strtol(wert,NULL,16);
utoa(zahl,wert,2);
uart_puts(wert);
uart_puts("\n");
}
else if (command[0] == 'c'){
uart_puts("Start");
}
else{
char str[20] = "Unbekannter Befehl: ";
strcat(str , command);
uart_puts(str);
}
uart_puts("Ready> ");
command_complete = 0;
}
}
}
Habe auch versucht das AVR303 umzuschreiben, aber leider ohne erfolg.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.