Hei!
Olisi pieni ongelma.
Minulla on toimiva c-kielen ohjelma, jota pitäisi hieman muuttaa. Ohjelmaan pitäisi lisätä
taulukko, johon tallentaa merkkejä n kappaletta. Nyt ohjelma toimii siten, että merkkejä
ei tallenneta mihinkään vaan se lähetetään ne heti eteenpäin.
Tällä hetkellä koodi näyttää tältä:
char uart_get_puskuri(void) { int i; register char b; while(!Uart_rx_ready()); for(i=0; i<10; i++) { b=Uart_get_byte(); puskuri[i]=b; Uart_ack_rx_byte(); } return ; }
Koodi täyttää taulukkoa mutta sinne tulee jotain aivan ihme arvoja.
Olisiko jollain tietoa tästä asiasta?
Kiitos etukäteen!
Kai taulukon määrittely on kunnossa? Kun sitä ei tuossa näy. Lisäksi funktioltasi puuttuu palautusarvo. Olet määritellyt sen palauttamaan char-muuttujan, mutta et palauta mitään.
Taulukon määrittelyn pitäisi olla kunnossa.
char puskuri[10];
Palautusarvona pitäisi ilmoittaa taulukon osoite että voisin käyttää taulukon arvoja mutta en vaan saa sitä toimimaan. Kun nyt ekana onnistuisin saamaan taulukkoon syöttämäni arvot. Taulukko näyttää nyt tältä:
Puskuri
[0] '€' (0x80) [1] 'x' (0x78) [2] 'ø' (0xF8) [3] 'ø' (0xF8) [4] 'ø' (0xF8) [5] 'ø' (0xF8) [6] 'ø' (0xF8) [7] 'x' (0x78) [8] 'x' (0x78) [9] 'x' (0x78)
En osaa tosiaan sanoa, kun en tiedä, mistä oikeastaan on kyse. Toimiihan funktio varmasti ilman taulukkoa oikein? Siis saathan b-muuttujaan järkeviä arvoja? Ei kai tuossa näkyvässä koodissa mikään voi vikaan mennä. (Vai kuuluisiko alun while-silmukan ehkä olla forin sisällä, jotta se ajettaisiin jokaiselle tavulle? En tiedä uart-systeemeistä.)
ransikki kirjoitti:
Palautusarvona pitäisi ilmoittaa taulukon osoite
char *uart_get_puskuri(void) { // ... return puskuri; }
vai?
Muuten koodi toimii mutta en saa vieläkään tallennettua niitä "oikeita" merkkejä taulukkoon joita näppäimistöltä painelen. Sinne tulee jotain ihan muita merkkejä kuin mitä näppäimistöltä syötän. En tiedä missä menee vikaan!
hm..
Oletko tutustunut aiemmin Scan Code:ihin? Jos et niin lukaise nämä:
http://www.beyondlogic.org/keyboard/keybrd.htm
http://www.lookuptables.com/ebcdic_scancodes.php
Ovatko ne mahdolliset "väärät" merkit sittenkin oikeita Scan code merkkejä?
(Tämä vinkki saattaa olla aika kaukaa haettu, mutta anyway...)
No nyt se vihdoin toimii. Koodi oli oikein, vika oli UARTin asetuksissa(baudrate).
Kiitti kaikille
Aihe on jo aika vanha, joten et voi enää vastata siihen.