Próbuję właśnie uruchomić pewien relatywnie prosty projekt na AT89C2051. Konieczne jest zastosowanie dwóch UART-ów, przy czym jeden z nich będzie pracował dosyć wolno, toteż w tym celu wykorzystana zostanie software'owa implementacja transmisji szeregowej. Z tym nie ma żadnego problemu - dość łatwo udało mi się przeportować bibliotekę z AVR-ów.
Paradoksalnie nie chce jednak działać sprzętowy UART, chociaż jego obsługa mogłaby się wydawać czymś banalnym.
Mój procedury inicjującej uart wygląda następująco:
funkcja jest wywoływana w main(), a w pętli głownej umieściłem następujący kod:
Kierunki linii portu chyba tez ustawiłem prawidłowo (P3 = 0x01).
Niestety, znaki wysyłane do mikrokontrolera nie są odsyłane. Analizator stanów logicznych podłączony do linii TX niczego nie pokazuje.
Projekt jest kompilowany za pomocą SDCC.
Układ pracuje na kwarcu 11.059 MHz.
Mam gdzieś błąd, którego nie dostrzegłem, czy winy powinienem raczej szukać po stronie sprzętowej? Fakt montażu na płytce stykowej może mieć jakieś znaczenie przy prędkości zaledwie 9600 bps?[/code]
Paradoksalnie nie chce jednak działać sprzętowy UART, chociaż jego obsługa mogłaby się wydawać czymś banalnym.
Mój procedury inicjującej uart wygląda następująco:
Kod: C / C++
funkcja jest wywoływana w main(), a w pętli głownej umieściłem następujący kod:
Kod: C / C++
Kierunki linii portu chyba tez ustawiłem prawidłowo (P3 = 0x01).
Niestety, znaki wysyłane do mikrokontrolera nie są odsyłane. Analizator stanów logicznych podłączony do linii TX niczego nie pokazuje.
Projekt jest kompilowany za pomocą SDCC.
Układ pracuje na kwarcu 11.059 MHz.
Mam gdzieś błąd, którego nie dostrzegłem, czy winy powinienem raczej szukać po stronie sprzętowej? Fakt montażu na płytce stykowej może mieć jakieś znaczenie przy prędkości zaledwie 9600 bps?[/code]
