Hallo,
ich habe mir auch dieses Board(V 2.0) geholt und ha mich nun mal an die RS232-Geschichte gewagt. Allerdings habe ich ziemliche Probleme damit und bin mit meinem Latein am Ende, aber vll kann ja jmd das grosse Latinum
.
Ich versuche über die 2 Taster jeweils ein Zeichen zu schicken.
(Damit ich sichergehen kann, das ich nicht gleich mehrere schicke hab ich so einen Pseudoentpreller mit den 2 Tastern eingebaut)
Verwenden tu ich einen ATMEGA16
Code:
#include <stdio.h>
#include <stdlib.h>
#include <avr/io.h>
#include <util/delay.h>
#ifndef F_CPU
#define F_CPU 8000000UL /* Oszillator-Frequenz in Hz */
#endif
#define BAUDRATE 9600
int main(void)
{
DDRD = 0b11100010;
//uint16_t ubrr = (uint16_t) ((uint32_t) F_CPU/(16*BAUDRATE) - 1); // ORIGINAL
//UBRRH = (uint8_t) (ubrr>>8);
//UBRRL = (uint8_t) (ubrr);
UBRRH = 0x00;
UBRRL = 0x33;
// UART Transmitter anschalten
// Data mode 8N1, asynchron
UCSRB |= (1 << TXEN);
UCSRC = (1 << URSEL) | (1 << UCSZ1) | (1 << UCSZ0); //UCSRC = 0b10000110; //UCSRC = 0x86;
while(1)
{
while (!(UCSRA & (1 << UDRE)))
{
//
}
if( PIND & (1<<PD2) )
{
_delay_ms(1000);
UDR = 'a'
_delay_ms(1000);
}
if( PIND & (1<<PD3) )
{
_delay_ms(1000);
UDR = 0b11111111; //zum testen
_delay_ms(1000);
}
}
return 0;
}
Die Taster tun und wenn ich stat dem zu sendenden Zeichen die LEDs brennen lasse tun diese es auch.
Was nun passiert ist folgendes:
Wenn ich die Taste drücke werden stat einem Zeichen (sollte ja 1 BYTE sein) 2 bzw 3 Byte übertragen und es kommt laut meinem "Portsniffer" jweils nur "€€€" an.
Das find ich relativ komisch. Es scheint mir, als ob der Port entweder 3 mal so schnell abtastet (was aber auch keinen sinn macht) oder als ob die Kiste zu schnell sendet (oder was auch immer)
Hat jemand einen Rat?
Was mir noch aufgefallen ist.
Wenn ich dieses "Test-Tool" (TESTTOOL.HEX)von Pollin laufen lasse, dann piepst der stat 0,5 Sekunden ungefähr 3 Sekunden lang *grübel*
Viele Grüße, Daniel
Lesezeichen