Hallo zusammen, ich habe mich schulisch bedingt vor ca. 2 Jahren mit µC beschäftigt. Habe gestern mal meine alte Unterlagen, sowie mein STK500-Board wieder ausgepackt. Zum Einstieg befasse ich mich nun mit dem UART. Ich habe ein alters Programm herausgeholt, es für gut befunden, eine hex-File erstellt und in den µC Controller geladen. Mit nem Terminalprogramm sende ich nun Zeichen an den µC welche dieser sofort wieder zurücksendet. Soweit die Theorie, praktisch tut sich aber nichts. Bin mir aber 100% sicher, dass das Programm so funktioniert hat. Glücklicherweiße habe ich auf meine Platte noch ein hex-File aus dem Jahre 2009 zu diesem Programm gefunden. Lade ich dieses in den µC funktioniert alles wunderbar. Der einzigeste Unterschied zu damals ist, dass ich Windows Vista installiert hatte. Nun habe ich Windows 7 installiert. Wird unter Windwos 7 das hex-File in irgendeiner Weiße anderes erstellt? Habt ihr sowas schon mal gesehen? Danke!
Freddy schrieb: > ird unter Windwos 7 das hex-File in irgendeiner Weiße anderes erstellt? > Habt ihr sowas schon mal gesehen? windows kann überhaupt keine Hex file erstellen, also beschränkt sich die Frage auf die Version vom AVR Studio 4.18 und ein eventuellen GCC. Hast du dort die gleichen versionen wie füher verwendet? Wenn nein werden es wohl software fehler sein die sich jetzt anders auswirken.
Nein. Ich verwende AVRStudio 4.18 mit WinAVR (20100110) sowohl mit Win7 x86 als auch mit x64 ohne irgendwelche Probleme. Da wird dein altes Hex wohl doch nicht identisch sein zu dem gefundenen Code. Gruß Fabian
Danke für eure Antworten! ich verwende das AVRStudio 4.18 mit WinAVR (20100110). Ich füge euch einfach mal meine c-code an, vllt hat sich ja doch ein fehler eingeschlichen, den ich selbst nicht mehr sehe.... Etwas fällt mir jetzt doch noch auf: "gcc plug-in: No AVR Toolchain installation found. Using WinAVR instead if installed. The AVR GCC plug-in can still be used if you set up your own build tools." Was kann ich mit dieser Meldung anfangen?
1 | // Das Programm initialisiert den USART des ATmega16 im
|
2 | // asynchronen Betrie mit 19200 Baud Übertragungsrate.
|
3 | // 2 Stopbit, 8 Datenbit, keine Parität. Der USART wird so
|
4 | // betrieben, dass ein empfangenes Zeichen wieder zurück
|
5 | // übertragen wird (Echobetrieb).
|
6 | // F_CPU = 3,684 MHz
|
7 | |
8 | #include <io.h> |
9 | |
10 | //Prototypen der Funktionen
|
11 | |
12 | void mcu_init(); |
13 | void usart_init(uint16_t baudrate); |
14 | uint8_t usart_receive(); |
15 | void usart_transmit(uint8_t data); |
16 | |
17 | //Hauptprogramm
|
18 | |
19 | int main (void) |
20 | {
|
21 | mcu_init(); |
22 | usart_init(11); //setzt Baudrate auf 19200 |
23 | //bei f = 3,6864 MHz
|
24 | while(1) |
25 | {
|
26 | //Echo des empfangenen Zeichens
|
27 | usart_transmit(usart_receive()); |
28 | }
|
29 | |
30 | return(0); |
31 | }
|
32 | void mcu_init() |
33 | {
|
34 | DDRA = 0xFF; |
35 | DDRB = 0xFF; |
36 | DDRC = 0xFF; |
37 | DDRD = 0xFE; //PD0 = RxD muss Input sein |
38 | |
39 | PORTA = 0; |
40 | PORTB = 0; |
41 | PORTC = 0; |
42 | PORTD = 0; |
43 | |
44 | SP = RAMEND; |
45 | }
|
46 | |
47 | void usart_init(uint16_t baudrate) |
48 | {
|
49 | //Setzt Baudrate auf 19200
|
50 | UBRRH = (uint8_t)(baudrate >> 8); //Wert schieben um HIGH BYTE wert |
51 | //zu erreichen
|
52 | UBRRL = (uint8_t) baudrate; |
53 | |
54 | //Sender und Empfänger einschalten
|
55 | UCSRB = ((1<<RXEN)|(1<<TXEN)); |
56 | |
57 | //8 Datenbit und 2 Stopbits einstellen
|
58 | UCSRC = ((1<<URSEL)|(1<<USBS)|(1<<UCSZ1)|(1<<UCSZ0)); |
59 | |
60 | }
|
61 | |
62 | |
63 | uint8_t usart_receive() |
64 | {
|
65 | //Warten bis das Zeichen (8-Bit) empfangen sind
|
66 | while(!(UCSRA & (1<<RXC))) |
67 | {
|
68 | }
|
69 | return UDR; |
70 | }
|
71 | |
72 | void usart_transmit(uint8_t data) |
73 | {
|
74 | while(!(UCSRA & (1<<UDRE))) |
75 | {
|
76 | }
|
77 | UDR = data; |
78 | }
|
Danke für eure Antworten
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.