Ls4
14.11.2009, 11:51
Hallo,
der Uart des Atmega48 macht mich Wahnsinnig.
ich bringen die Kiste einfach nicht dazu mir simple Characters an den PC zu senden.
Mittlerweile habe ich sehr viele Beispiele getestet und mich durch das Datenblatt gehangelt. (Entsprechend auch selber mal Code dafür geschrieben).
Fazit. Keiner der Codes funktioniert auch nur irgendwie.
Es kommt absolut nichts an am Pc.
Ich habe dann am Schluß den Code von dieser Seite probiert:
http://derjulian.net/mikrocontroller#usart
Enttsprechend eben die Registernamen für den Atmega48/88 geändert
Betrifft:
UBRRH in UBRR0H
UBRRL in UBRR0L
UCSRA in UCSR0A
UCSRB in UCSR0B
TXEN in TXEN0
RXEN in RXEN0
UDRE in UDRE0
und UDR in UDR0
in der UART.h hab ich folgendes verwendet
#define F_CPU 16000000UL
#define UART_BAUD_RATE 2400
senden wollte ich dann mit folgendem Code:
int main(void)
{
/* Programmcode */
uart_init(1, 1);
while(1){
_delay_ms(1000);
uart_puts("Hello World!\n");
}
return(0);
}
Fuses sind wie folgt:
SPIEN programmed
CKSEL3 programmed
das ergibt dann:
efuse 01
lfuse DF
hfuse F7
und effektiv dann
Programmierung über ISP
externer Full Power Oszillator mit 0.4MHZ-20MHZ mit slow rising Power
Als Quarz hängt ein 16MHZ dran.
Ich wäre sehr dankbar wenn jemand mir helfen könnte den Fehler zu finden.
Ich bin mir auch nicht sicher ob die Schnittstellenhardware (max232) funktioniert.
Ich würde mich auch für den Test über ein funktionierendes hex Program für den Atmega48 oder 88 (sind ja fast gleich) freuen, dann kann ich die Hardware als Ursache vielleicht eliminieren
Vielen Dank,
Gruß Tim
der Uart des Atmega48 macht mich Wahnsinnig.
ich bringen die Kiste einfach nicht dazu mir simple Characters an den PC zu senden.
Mittlerweile habe ich sehr viele Beispiele getestet und mich durch das Datenblatt gehangelt. (Entsprechend auch selber mal Code dafür geschrieben).
Fazit. Keiner der Codes funktioniert auch nur irgendwie.
Es kommt absolut nichts an am Pc.
Ich habe dann am Schluß den Code von dieser Seite probiert:
http://derjulian.net/mikrocontroller#usart
Enttsprechend eben die Registernamen für den Atmega48/88 geändert
Betrifft:
UBRRH in UBRR0H
UBRRL in UBRR0L
UCSRA in UCSR0A
UCSRB in UCSR0B
TXEN in TXEN0
RXEN in RXEN0
UDRE in UDRE0
und UDR in UDR0
in der UART.h hab ich folgendes verwendet
#define F_CPU 16000000UL
#define UART_BAUD_RATE 2400
senden wollte ich dann mit folgendem Code:
int main(void)
{
/* Programmcode */
uart_init(1, 1);
while(1){
_delay_ms(1000);
uart_puts("Hello World!\n");
}
return(0);
}
Fuses sind wie folgt:
SPIEN programmed
CKSEL3 programmed
das ergibt dann:
efuse 01
lfuse DF
hfuse F7
und effektiv dann
Programmierung über ISP
externer Full Power Oszillator mit 0.4MHZ-20MHZ mit slow rising Power
Als Quarz hängt ein 16MHZ dran.
Ich wäre sehr dankbar wenn jemand mir helfen könnte den Fehler zu finden.
Ich bin mir auch nicht sicher ob die Schnittstellenhardware (max232) funktioniert.
Ich würde mich auch für den Test über ein funktionierendes hex Program für den Atmega48 oder 88 (sind ja fast gleich) freuen, dann kann ich die Hardware als Ursache vielleicht eliminieren
Vielen Dank,
Gruß Tim