UART und Atmega168
Hallo zusammen!
Ich versuche gerade eine Verbindung zwischen mega168 und PC (mittels USB
und FTDI-Chip) herzustellen. Hier mal der Code:
1 | $regfile = "m168def.dat"
|
2 | $crystal = 8000000
|
3 | $hwstack = 32 ' default use 32 for the hardware stack
|
4 | $swstack = 10 ' default use 10 for the SW stack
|
5 | $framesize = 40 ' default use 40 for the frame space
|
6 | $baud = 19200
|
7 |
|
8 | Config Portb.0 = Output
|
9 |
|
10 | Dim Incoming_data As String * 30
|
11 | Dim Serialcharwaiting As Byte,
|
12 |
|
13 | Config Serialin = Buffered , Size = 30 , Bytematch = All
|
14 | Enable Interrupts
|
15 |
|
16 | Do
|
17 | Portb.0 = 1
|
18 | Waitms 10
|
19 | Portb.0 = 0
|
20 | Print "UART sending..."
|
21 | Waitms 500
|
22 |
|
23 | Loop
|
24 | End
|
25 |
|
26 |
|
27 | Serial0bytereceived:
|
28 | Portb.0 = 1
|
29 | Input Incoming_data Noecho
|
30 | Print "UART receiving..."
|
31 | Clear Serialin
|
32 | Waitms 5000
|
33 | Return
|
Jedes Mal wenn etwas Richtung PC gesendet wird, geht eine LED (Portb.0)
für 10ms an. Es wird im Takt von ca 500ms an den PC gesendet.
Die Richtung µC -> PC funktioniert, denn auf dem Bascom-Terminal
erscheint "UART sending..." Sende ich jedoch etwas über das Terminal an
den µC passiert etwas mir Unerklärliches:
Die LED (,die alle 500ms kurz für 10ms angehen sollte um zu zeigen, dass
an den PC gesendet wird,) blinkt jetzt nur noch genau mit der halben
Geschwindigkeit... Auf dem Terminal erscheint aber auch nicht "UART
receiving...". Das heißt die Unterroutine, die eigentlich aufgerufen
werden müsste, da ich ja was sende, wird nicht abgearbeitet. Habt ihr ne
Idee worans liegen könnte? Vor allem warum wird das Sendeintervall auf
einmal doppelt so langsam? Oszi habe ich zur Zeit leider keins zur
Hand... Schaltplan müsste stimmen...
DANKE!