moi, onko tässä koodissa jotain pielessä vai onko mulla RS323 ongelmia mun laitteistossa, kun ei tuu TeraTermiin mitään.
Pitäis tulla toi teksti 'Tietokone'
Comments: tulostaa merkkitaulukon sarjaporttiin ***********************************************/ #include <avr/io.h> #include "viive.h" #include <stdio.h> #define XTAL 8000000 // kiteen taajuus #define BAUD 9600 // sarjaportin nopeus 9600 bps void Put_char(char merkki); void Put_char(char merkki) { loop_until_bit_is_set(UCSRA, UDRE); // tarkista onko tx-puskuri tyhjä UDR = merkki; // UART Data Register } //sarjaportin asetukset void Init_sarja(void) { UBRRH=0x00; UBRRL=0x33; //des 51(U2X=0) UCSRA=0x00; UCSRB=0x18; //RXEN, TXEN UCSRC=0x86; // URSEL, UCSZ1, UCSZ0 --> 1 } int main(void) { Init_sarja(); unsigned char i; char taulu[9] = {'T', 'i', 'e', 't', 'o','k', 'o', 'n', 'e'}; // merkkitaulukko, yksittäiset merkit kehystetään heittomerkeillä while(1) { for(i = 0; i < 9; i++) { Put_char(taulu[i]); // tulostetaan taulukon sisältö merkki kerrallaan Delay_ms(50);//50 } Put_char(0x0A); // LF, Line Feed, rivin vaihto Put_char(0x0D); // CR, Carridge Return, telan palautus rivn alkuun Delay_ms(500); //500 } }
ONKS täällä ketään, joka on toiminut Atmelin ATmega16 mikroprosessorin parissa. Olis kiva saada hjälppiä.
En edelleenkään ole ohjelmoinut avr:iä, mutta yksi kohta minua ihmetyttää koodissa.
Asetat BAUD:n definellä, mutta en näe minne ko. arvo menee.
Tietenkin saattaa olla että BAUD-arvo imaistaan rivillä:
#include <avr/io.h>
Mutta eikö siinä tapauksessa ko. arvo pitäisi antaa ennen icludea, jotta arvo olisi ladattaessa.
Eikö avr:ssä ole mitään Set_Baud-funktiota, tai vastaavaa?
Tosin samalla, jos BAUD-arvo pitää laittaa ennen includea, pitäneen laittaa myös XTAL-arvo.
Tosin virhettä voi myös yrittää tutkia muutenkin kuin tutkimalla mitä terminaaliin tulee.
Laittamalla avr-ikuiseen luuppiin tulostamaan tekstiä, ja katsomalla oskiloskoopilla lähettääkö se mitään.
Heikkoja ovat arvaukseni, mutta vastaapahan ainakin joku jotakin.
Aihe on jo aika vanha, joten et voi enää vastata siihen.