vklaffehn
07.11.2011, 18:28
Moin!
Ich bastel mal wieder, und verzweifel grad an folgendem :
Ich habe einen Mega644 mit Standardschaltung lt. RN-Wissen, also Spannungsregler 7805 mit Elko und Kerko (Schaltung läuft aber eh mit Akkus 6x1,2V), 10KOhm Pullup an Reset, 18,432 MHz Quarz mit 22pF Kondensatoren dran sowie Max232. Das erste Phenomän ist, die Übertragung von Daten zum PC (hterm) funktioniert nur bis 57600baud stabil, bei 115200 kommen Werte doppelt/fehlerhaft an, dabei ist das doch so ein schöner Baudratenquarz...
Das ist allerdings in meinem Fall nicht so schlimm, ich weiß nur nicht, ob das evtl. eine Randerscheiung meines eigentlichen Problems ist.
Das da wäre :-) :
Daten senden mit
uart_putc(x)
geht, strings senden mit
uart_puts("text")
geht, aber beim senden aus dem Programmspeicher mit
uart_puts_p("text")
kommt mist, bzw. auch manchmal nur ein Byte, das aber auch schon falsch.
Ich habe die Bibliothek jetzt schon auf verschiedenen Controllern benutzt, aber noch nie auf dem 644, und hatte nie Probleme damit....
Ich hab die Schaltung nochmal neu aufgebaut, und auch den Mega644 sowie den Max232 getauscht, aber das wars nicht.
Das komplette Programm hänge ich mal dran, steht allerdings nicht viel drin...
Die bytes 0-255 kommen sauber an (bei 57600baud), das 'a' auch, das "test" nicht.
#include <avr/io.h>
#include <stdlib.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include "uart.h"
#include <avr/pgmspace.h>
#include <avr/eeprom.h>
#define UART_BAUD_RATE 57600
void init()
{
DDRD = 0b00000010;
uart_init( UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU) );
sei();
}
int main(void)
{
int x;
init();
//while (1)
{
for (x=0;x<=255;x++)
uart_putc(x);
}
uart_putc('a');
uart_puts_p("test");
while (1)
{}
}
MfG
Volker
/edit: Geschwindigkeitsrätsel gelöst, schien irgendwie an meiner Max232-Schaltung zu liegen, jetzt geht es auch mit 115200baud, und es hat sich herausgestellt, dass beim uart_puts_p die anzahl bytes stimmt, nur der Inhalt nicht.... also evtl. ein Problem in der uart lib, ich forsche mal, bin aber weiterhin für Tipps dankbar!!
Ich bastel mal wieder, und verzweifel grad an folgendem :
Ich habe einen Mega644 mit Standardschaltung lt. RN-Wissen, also Spannungsregler 7805 mit Elko und Kerko (Schaltung läuft aber eh mit Akkus 6x1,2V), 10KOhm Pullup an Reset, 18,432 MHz Quarz mit 22pF Kondensatoren dran sowie Max232. Das erste Phenomän ist, die Übertragung von Daten zum PC (hterm) funktioniert nur bis 57600baud stabil, bei 115200 kommen Werte doppelt/fehlerhaft an, dabei ist das doch so ein schöner Baudratenquarz...
Das ist allerdings in meinem Fall nicht so schlimm, ich weiß nur nicht, ob das evtl. eine Randerscheiung meines eigentlichen Problems ist.
Das da wäre :-) :
Daten senden mit
uart_putc(x)
geht, strings senden mit
uart_puts("text")
geht, aber beim senden aus dem Programmspeicher mit
uart_puts_p("text")
kommt mist, bzw. auch manchmal nur ein Byte, das aber auch schon falsch.
Ich habe die Bibliothek jetzt schon auf verschiedenen Controllern benutzt, aber noch nie auf dem 644, und hatte nie Probleme damit....
Ich hab die Schaltung nochmal neu aufgebaut, und auch den Mega644 sowie den Max232 getauscht, aber das wars nicht.
Das komplette Programm hänge ich mal dran, steht allerdings nicht viel drin...
Die bytes 0-255 kommen sauber an (bei 57600baud), das 'a' auch, das "test" nicht.
#include <avr/io.h>
#include <stdlib.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include "uart.h"
#include <avr/pgmspace.h>
#include <avr/eeprom.h>
#define UART_BAUD_RATE 57600
void init()
{
DDRD = 0b00000010;
uart_init( UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU) );
sei();
}
int main(void)
{
int x;
init();
//while (1)
{
for (x=0;x<=255;x++)
uart_putc(x);
}
uart_putc('a');
uart_puts_p("test");
while (1)
{}
}
MfG
Volker
/edit: Geschwindigkeitsrätsel gelöst, schien irgendwie an meiner Max232-Schaltung zu liegen, jetzt geht es auch mit 115200baud, und es hat sich herausgestellt, dass beim uart_puts_p die anzahl bytes stimmt, nur der Inhalt nicht.... also evtl. ein Problem in der uart lib, ich forsche mal, bin aber weiterhin für Tipps dankbar!!