Ich möchte via PC an meinen Mikrocontroller Daten senden und diese mit LEDs am Mikrocontroller darstellen. Damit die serielle Schnittstelle des PC mit dem µC arbeitet, werwende ich einen MAX232 Pegelwandler. Die Hardware ist auch vollständig in Ordnung, denn ich habe schon vom µC an den PC Daten gesendet und mit HyperTerminal ausgelesen. Ich habe bei der Codesammlung ein Programm dazu gefunden und es abgeändert: _________________________________________________________ .include "2333def.inc" .def temp = r16 .cseg .org $000 rjmp start ;reset handle .cseg .org $00B rjmp rx_com ;RX-Complete - Rotine rx_com: in temp,udr ;read value out PORTB,temp reti start: ldi temp,LOW(RAMEND) ;LOW-Byte der obersten RAM-Adresse out SPL,temp sbi UCSRB,RXEN ;RX aktivieren sbi UCSRB,RXCIE ;RX-Complete aktivieren ldi temp,4912500/(9600*16)-1 ;Baudrate 9600 einstellen (bei 4,9125MHz) out UBRR,temp ldi temp,0xFF ;0xFF ins Arbeitsregister r16 laden out DDRB,temp ;Inhalt von r16 ins IO-Register DDRC ausgeben sei ;Interrups einschalten loop: rjmp loop _________________________________________________________ Wenn ich bei HyperTerminal auf "Übertragung --> Textdatei senden" gehe und eine Datei auswähle, dann müsste ich doch eigentlich die LEDs am Mikrocontroller falckern sehen, oder doch nicht?? Und wie kann ich einzelne Bits mit dem PC an den µC übertragen? Geht das überhaupt mit HyperTerminal oder sehe ich das ganz falsch? Wäre nett, wenn mal jemand meinen Code überprüfen könnte und mir sagen kann, ob ich falsch liege oder nicht! Danke im Voraus! Gruß Stefan ------------------------------------ http://www.elektroniktreff.de
1.) genau vor diesem Problem stehe ich auch...die serielle Kommunikation funktioniert einfach nicht wie sie soll.... 2.) wenns die richtigen infos enthält und die übertragung nicht zu schnell is, was ich allerdings bezweifle 3.) Bezüglich den Bits: Entweder ein kleines C Programm schreiben das binäre Sachen in eine Datei schreibt oder mit einem hex Editor eine bestehende ändern oder was weiss ich. Jedenfalls musst du es so machen: 12345678 Das ist dein Byte, jedes davon repräsentiert also ein LED...also die "Maske" (mühevoll) füllen, Rest mit Null auffüllen und binär in den Windows Rechner eingeben und nach HEX umwandeln. Jetzt schreibst du halt in eine Textdatei genau ein Zeichen, die Datei sollte dann logischerweise 1 byte gross sein (keine Umbrüche sonst sinds 3). Die bearbeitest mit einem x beliebigen HEX Editor und änderst das Byte in dein HEX Zeichen. Dann sollte es funktionieren, abgesehen von deinem Code oberhalb weil bezüglich AVR hab ich selbst noch nicht so viel Ahnung
Hallo, der RX-Complete-Interruptvektor liegt beim AT90S2333 nicht auf 0x0B, siehe Datenblatt. Und wenn du schon beim datenblattlesen bist, schau gleich noch nach ob du die Bits für die UART-Konfiguration im richtigen Register gesetzt hast. MfG Andreas
Ach ja, das hab ich ja völlig übersehen. Gleich mal probieren, ob es dann geht. Vielen Dank für die Antworten! Gruß Stefan
Wo es gerade um die Interruptvektoren in den Datenblättern geht: Man sollte sich nicht immer darauf verlassen, was dort drin steht. Als ich mal eine Uhr mit Hilfe des asynchronen Timers 2 des mega163 gebaut habe, mußte ich nach langem Suchen feststellen, dass die Overflow-Interrupt-Adresse von Timer2 mit der von Timer1 im Datenblatt vertauscht ist.
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.